private void adaptEndState(ProcessBuilder builder, JPDL32EndState jpdlEnd) { builder.addEndEvent(jpdlEnd.getName()); }
private ProcessBuilder adaptDiagram(BpmnDiagram bpmnDiagram) { List<Pool> stpPools = bpmnDiagram.getPools(); if (stpPools == null || stpPools.size() == 0) throw new IllegalStateException("Expected at least one Pool"); if (stpPools.size() > 1) throw new IllegalStateException("Multiple Pools not supported"); Pool stpPool = stpPools.get(0); ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder(); builder.addProcess(stpPool.getId()); return builder; }
private void adaptStartState(ProcessBuilder builder, JPDL32StartState jpdlStart) { builder.addStartEvent("Start"); adaptTransitions(builder, jpdlStart.getDescriptionOrTaskOrTransition()); }
public Process adaptWorkflowProcess(XPDLWorkflowProcess xpdlProc) builder.addProcess(xpdlProc.getName()); builder.addStartEvent("Start"); builder.addEndEvent(xpdlActivity.getName()); Process proc = builder.getProcess(); return proc;
if (activityType == ActivityType.EVENT_START_EMPTY) builder.addStartEvent("Start"); adaptOutgoingEdges(builder, stpActivity); builder.addEndEvent(name); taskType = Task.TaskType.Receive; builder.addTask(name, taskType); adaptOutgoingEdges(builder, stpActivity); builder.addGateway(name, Gateway.GatewayType.Exclusive); adaptOutgoingEdges(builder, stpActivity); builder.addGateway(name, Gateway.GatewayType.Parallel); adaptOutgoingEdges(builder, stpActivity);
private Process adaptProcess(JAXBProcess jaxbProc, boolean isInclude) throws IOException procBuilder.addProcess(jaxbProc.getName()); MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName()); adaptJAXBMessage(msgBuilder, jaxb); procBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue()); procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo); procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo); Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess()); return proc;
EventBuilder eventBuilder = procBuilder.addStartEvent(jaxbStart.getName()); addOutFlow(procBuilder, jaxbStart.getOutFlow()); EventBuilder eventBuilder = procBuilder.addEndEvent(jaxbEnd.getName()); procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler())); procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler())); procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
public Process adaptProcessDefinition(JPDL32ProcessDefinition jpdlProcDef) builder.addProcess(jpdlProcDef.getName()); Process proc = builder.getProcess(); return proc;
if (jaxb instanceof JAXBExclusiveGateway) gwBuilder = procBuilder.addGateway(jaxb.getName(), Gateway.GatewayType.Exclusive); gwBuilder = procBuilder.addGateway(jaxb.getName(), Gateway.GatewayType.Inclusive); gwBuilder = procBuilder.addGateway(jaxb.getName(), Gateway.GatewayType.Complex); gwBuilder = procBuilder.addGateway(jaxb.getName(), Gateway.GatewayType.Parallel); procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler())); procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler())); procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
private void adaptTask(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBTask jaxbTask) TaskBuilder taskBuilder = procBuilder.addTask(jaxbTask.getName(), jaxbTask.getTaskType()); addOutFlow(taskBuilder, jaxbTask.getOutFlow()); procBuilder.addExecutionHandler(loadHandler(jaxbTask.getExecutionHandler())); procBuilder.addFlowHandler(loadHandler(jaxbTask.getFlowHandler())); procBuilder.addSignalHandler(loadHandler(jaxbTask.getSignalHandler()));
Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess()); return proc;
private void adaptState(ProcessBuilder builder, JPDL32State jpdlState) { builder.addTask(jpdlState.getName(), Task.TaskType.None); adaptTransitions(builder, jpdlState.getDescriptionOrEventOrExceptionHandler()); for (Object jpdlObj : jpdlState.getDescriptionOrEventOrExceptionHandler()) { if (jpdlObj instanceof JPDL32Event) { JPDL32Event jpdlEvent = (JPDL32Event)jpdlObj; if (jpdlEvent.getType().equals("node-enter")) { for (Object jpdlAux : jpdlEvent.getActionOrScriptOrCreateTimer()) { if (jpdlAux instanceof JPDL32Action) { JPDL32Action jpdlAction = (JPDL32Action)jpdlAux; Class<?> handler = loadHandler(jpdlAction.getClazz()); if (ExecutionHandler.class.isAssignableFrom(handler) == false) throw new InvalidProcessException("Node action is not of type ExecutionHandler"); builder.addExecutionHandler(handler); } } } } } }
private void adaptTransitions(ProcessBuilder builder, List<Object> list) { for (Object subEl : list) { if (subEl instanceof JPDL32Transition) { JPDL32Transition trans = (JPDL32Transition)subEl; String targetName = trans.getTo(); builder.addSequenceFlow(targetName); } } }
private void adaptFork(ProcessBuilder builder, JPDL32Fork jpdlObj) { builder.addGateway(jpdlObj.getName(), Gateway.GatewayType.Parallel); adaptTransitions(builder, jpdlObj.getScriptOrDescriptionOrEvent()); }
private void addOutFlow(ProcessBuilder procBuilder, JAXBFlow jaxbFlow) { if (jaxbFlow != null) { if (jaxbFlow instanceof JAXBSequenceFlow) { procBuilder.addSequenceFlow(jaxbFlow.getTargetName()); } else if (jaxbFlow instanceof JAXBMessageFlow) { throw new NotImplementedException("JBPM-1382", "Message Flow"); } else { throw new IllegalStateException("Unsupported connectiong object: " + jaxbFlow); } } }
private void processIncludes(ProcessBuilder procBuilder, JAXBProcess jaxbProc) throws IOException { for (JAXBInclude incl : jaxbProc.getIncludes()) { String nsURI = incl.getNamespace(); String location = incl.getLocation(); URL procURL; try { procURL = new URL(location); } catch (MalformedURLException ex) { ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader(); procURL = ctxLoader.getResource(location); } if (procURL == null) throw new InvalidProcessException("Cannot find process include: " + location); ProcessManager pm = ProcessManager.locateProcessManager(); DialectHandler dh = pm.getDialectHandler(nsURI); Process procIncl = dh.createProcess(procURL, true); // Debug the included process StringWriter strwr = new StringWriter(); DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI); dhapi.marshallProcess(procIncl, strwr); // System.out.println(strwr); procBuilder.addProcess(procIncl); } }
private void adaptOutgoingEdges(ProcessBuilder builder, Activity stpActivity) { for (String edgeIds : stpActivity.getOutgoingEdges()) { String[] edgeIdArr = edgeIds.split("\\s"); for (String edgeId : edgeIdArr) { SequenceEdge seqEdge = getSequenceEdgeById(edgeId); String targetId = seqEdge.getTarget(); Activity targetAct = getActivityById(targetId); String targetName = targetAct.getLabel(); builder.addSequenceFlow(targetName); } } }