public ProcessInstanceUUID instantiateProcess(final ProcessDefinitionUUID processUUID, Map<String, Object> variables) throws ProcessNotFoundException { FacadeUtil.checkArgsNotNull(processUUID); final XpdlProcess process = FacadeUtil.getProcessDefinition(processUUID); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Starting a new instance of process : " + processUUID); } final XpdlExecution rootExecution = (XpdlExecution) process.beginProcessInstance(); rootExecution.setVariables(variables); rootExecution.signal(); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Started: " + rootExecution.getXpdlInstance()); } return rootExecution.getXpdlInstance().getUUID(); }
public XpdlInstance(XpdlProcess xpdlProcess) { this.processUUID = xpdlProcess.getUUID(); this.packageUUID = xpdlProcess.getPackageDefinitionUUID(); this.uuid = new ProcessInstanceUUID(xpdlProcess.getUUID(), EnvTool.getRepository().getNextProcessInstanceNb(processUUID)); this.rootExecution = new XpdlExecution(); this.rootExecution.xpdlInstance = this; // TODO: process is set in startExecution too, see how we can remove this. // (process is needed to assign instance name from the instance repository) this.rootExecution.setProcessDefinition(xpdlProcess); final Repository repository = EnvTool.getRepository(); repository.storeXpdlInstance(this); this.rootExecution.setName(this.uuid.toString()); }
/** * Creates a spanning tree in spanningTree corresponding to the input process * and lists transitions that are not in the spanning tree. * Use a Deep First Search Algorithm for that. * Transitions that are not in the spanning tree can be: * - transitions that creates a second path between two nodes (e.g. split/join) * - transitions that creates loops * @param inProcess input process * @param spanningTree process where the corresponding spanning tree will be created * @return list of transitions of input process that are not in the spanning tree. */ private static List<Transition> createSpanningTree(XpdlProcess inProcess, ProcessDefinitionImpl spanningTree) { Node inNode = inProcess.getInitial(); NodeImpl outNode = spanningTree.createNode(inNode.getName()); // Create a spanning tree in outProcess and list transitions that are not in the spanning tree. // Use a Deep First Search Algorithm for that. return processNode(inNode, outNode, spanningTree); }
protected static NodeImpl createNode(ActivityDefinition activity, ProcessFullDefinition processDef, XpdlProcess xpdlProcess, PackageFullDefinition packageDef) { NodeImpl node = xpdlProcess.createNode(activity.getActivityId()); AbstractActivity abstractActivity = null; org.ow2.bonita.definition.activity.AbstractActivity.JoinType joinType = + "please check that this package has already been deployed"); processParameters = externalSubProcess.getParameters();
public void addProcess(XpdlProcess process) { ProcessDefinitionUUID processUUID = process.getUUID(); processes.put(processUUID, process); removedProcesses.remove(processUUID); } public void removeProcess(XpdlProcess process) {
public TaskRunTime(final TaskUUID taskUUID, final String nodeName, final AbstractActivity abstractActivity, final XpdlExecution xpdlExecution) { this.taskUUID = taskUUID; this.activityDef = abstractActivity; this.activityId = nodeName; this.xpdlExecution = xpdlExecution; this.instanceUUID = xpdlExecution.getXpdlInstance().getUUID(); this.packageUUID = xpdlExecution.getProcessDefinition().getPackageDefinitionUUID(); this.iterationId = xpdlExecution.getIterationId(); this.activityInstanceId = xpdlExecution.getActivityInstanceId(); }
List<ProcessParameter> processParameters = xpdlExecution.getProcessDefinition().getParameters(); if (processParameters != null) { parameterValues = new HashMap<String, Object>();
initialNode = createdNodes.get(BONITA_INIT); } else { initialNode = xpdlProcess.createNode(BONITA_INIT); Set<ActivityDefinition> initialActivities = getInitialActivities(processDef, activities); if (!initialActivities.isEmpty()) { initialNode.setBehaviour(initialRoute); initialNode.setPreviousNeeded(true); xpdlProcess.setInitial(initialNode); endingNode = createdNodes.get(BONITA_END); } else { endingNode = xpdlProcess.createNode(BONITA_END);
AbstractActivity activity = (AbstractActivity) inProcess.getNode(itDesc.getKey()).getBehaviour(); activity.setIterationDescriptors(itDesc.getValue());
public static XpdlProcess createXpdlProcess(PackageFullDefinition packageDef, ProcessFullDefinition processDef) { XpdlProcess xpdlProcess = new XpdlProcess(processDef.getUUID(), packageDef.getPackageDefinitionUUID(), createProcessParameters(processDef)); createNodes(packageDef, processDef, xpdlProcess); initializeProcessVariables(packageDef, processDef, xpdlProcess); IterationDetection.findIterations(xpdlProcess); return xpdlProcess; }
VariableDefinitionImpl varDef = xpdlProcess.createVariableDefinition(); varDef.setKey(formalParameter.getId());
public void removeProcess(XpdlProcess process) { ProcessDefinitionUUID processUUID = process.getUUID(); removedProcesses.put(processUUID, process); processes.remove(processUUID); } public boolean isProcessRemoved(ProcessDefinitionUUID processUUID) {
public TaskRunTime(TaskUUID taskUUID, String nodeName, AbstractActivity abstractActivity, XpdlExecution xpdlExecution) { this.taskUUID = taskUUID; this.activityDef = abstractActivity; this.activityId = nodeName; this.xpdlExecution = xpdlExecution; this.instanceUUID = xpdlExecution.getXpdlInstance().getUUID(); this.packageUUID = xpdlExecution.getProcessDefinition().getPackageDefinitionUUID(); this.iterationId = xpdlExecution.getIterationId(); this.activityInstanceId = xpdlExecution.getActivityInstanceId(); }
final List<ProcessParameter> processParameters = xpdlExecution.getProcessDefinition().getParameters(); if (processParameters != null) { parameterValues = new HashMap<String, Object>();
NodeImpl sourceNode = inProcess.getNode(nodeName); if (sourceNode.hasOutgoingTransitions()) {
public XpdlInstance(final XpdlProcess xpdlProcess) { this.processUUID = xpdlProcess.getUUID(); this.packageUUID = xpdlProcess.getPackageDefinitionUUID(); this.uuid = ServiceEnvTool.getUUIDGenerator().getProcessInstanceUUID(this.processUUID); this.rootExecution = new XpdlExecution(); this.rootExecution.xpdlInstance = this; // TODO: process is set in startExecution too, see how we can remove this. // (process is needed to assign instance name from the instance repository) this.rootExecution.setProcessDefinition(xpdlProcess); final Repository repository = EngineEnvTool.getRepository(); repository.storeXpdlInstance(this); this.rootExecution.setName(this.uuid.toString()); }
final XpdlExecution rootExecution = (XpdlExecution) process.beginProcessInstance(); rootExecution.setVariables(parameterValues); final XpdlInstance instance = rootExecution.getXpdlInstance();
private void createNewIteration(XpdlExecution execution) { if (iterationDescriptors != null && !iterationDescriptors.isEmpty()) { String iterationUUID = Misc.getUniqueId("it"); execution.setIterationId(iterationUUID); XpdlInstance instance = execution.getXpdlInstance(); for (IterationDescriptor it : iterationDescriptors) { JoinRunTime jr = getJoinRunTime(instance, execution.getProcessDefinition().getNode(it.getJoinNodeName())); if (jr.update(iterationUUID, it.getTransitionSourceNodes())) { throw new BonitaRuntimeException("Error in iteration: join " + it.getJoinNodeName() + " has not been reinitialized"); } } } }
final XpdlExecution rootExecution = (XpdlExecution) process.beginProcessInstance(); rootExecution.setVariables(parameterValues); final XpdlInstance instance = rootExecution.getXpdlInstance();
boolean hasEntryPointXor = false; for (String nodeName : c.path) { NodeImpl sourceNode = inProcess.getNode(nodeName); if (sourceNode.hasIncomingTransitions()) {