actionNode, Node.CONNECTION_DEFAULT_TYPE ); WorkItemNode workItemNode = new WorkItemNode(); workItemNode.setId( 3 ); workItemNode.setName( "WorkItem1" ); Work work = new WorkImpl(); work.setName( "MyWork" ); workItemNode.setWork( work ); workItemNode, Node.CONNECTION_DEFAULT_TYPE ); WorkItemNode workItemNode2 = new WorkItemNode(); workItemNode2.setId( 4 ); workItemNode2.setName( "WorkItem2" ); work = new WorkImpl(); work.setName( "MyWork" ); workItemNode2.setWork( work ); workItemNode2, Node.CONNECTION_DEFAULT_TYPE ); WorkItemNode workItemNode3 = new WorkItemNode(); workItemNode3.setId( 5 ); workItemNode3.setName( "WorkItem3" ); work = new WorkImpl(); work.setName( "MyWork" ); workItemNode3.setWork( work );
Work work = new WorkImpl(); work.setName("StartCaseInstance"); workItemNode.setWork(work); loadDataInputsAndOutputs(element, inputs, outputs, inputTypes, outputTypes, parser); workItemNode.setMetaData("DataInputs", inputTypes); workItemNode.setMetaData("DataOutputs", outputTypes); workItemNode.getWork().setParameter("CaseDefinitionId", caseDefinitionId); workItemNode.getWork().setParameter("Independent", isBlocking); workItemNode.addInAssociation(new DataAssociation(entry.getValue(), "Data_" + entry.getKey(), Collections.emptyList(), null)); workItemNode.addOutAssociation(new DataAssociation(entry.getKey(), entry.getValue(), Collections.emptyList(), null));
public void setInMappings(Map<String, String> inMapping) { this.inMapping = new LinkedList<DataAssociation>(); for(Map.Entry<String, String> entry : inMapping.entrySet()) { addInMapping(entry.getKey(), entry.getValue()); } }
public WorkItemNodeFactory workParameter(String name, Object value) { Work work = getWorkItemNode().getWork(); if (work == null) { work = new WorkImpl(); getWorkItemNode().setWork(work); } work.setParameter(name, value); return this; }
public WorkItemNodeFactory workParameterDefinition(String name, DataType dataType) { Work work = getWorkItemNode().getWork(); if (work == null) { work = new WorkImpl(); getWorkItemNode().setWork(work); } Set<ParameterDefinition> parameterDefinitions = work.getParameterDefinitions(); parameterDefinitions.add(new ParameterDefinitionImpl(name, dataType)); work.setParameterDefinitions(parameterDefinitions); return this; }
public static RuleFlowProcess newProcessWithOneWork(String processId, String workName) { RuleFlowProcess process = new RuleFlowProcess(); process.setId(processId); StartNode startNode = new StartNode(); startNode.setName( "Start" ); startNode.setId(1); WorkItemNode workItemNode = new WorkItemNode(); workItemNode.setName( "workItemNode" ); workItemNode.setId( 2 ); Work work = new WorkImpl(); work.setName( workName ); workItemNode.setWork( work ); EndNode endNode = new EndNode(); endNode.setName("EndNode"); endNode.setId(4); connect( startNode, workItemNode ); connect( workItemNode, endNode ); process.addNode( startNode ); process.addNode( workItemNode ); process.addNode( endNode ); return process; }
process.setMetaData("routerLayout", 1); WorkItemNode workItemNode = new WorkItemNode(); workItemNode.setName("WorkItem"); Work work = new WorkImpl(); work.setName("workname"); Set<ParameterDefinition> parameterDefinitions = new HashSet<ParameterDefinition>(); ParameterDefinition parameterDefinition = new ParameterDefinitionImpl("param1", new StringDataType()); parameterDefinition = new ParameterDefinitionImpl("param2", new IntegerDataType()); parameterDefinitions.add(parameterDefinition); work.setParameterDefinitions(parameterDefinitions); work.setParameter("param1", "value1"); work.setParameter("param2", 1); workItemNode.setWork(work); workItemNode.setWaitForCompletion(false); workItemNode.addInMapping("param1", "var1"); workItemNode.addOutMapping("param2", "var2"); timer = new Timer(); timer.setDelay("100"); workItemNode.addTimer(timer, action); timer = new Timer(); timer.setDelay("200"); workItemNode.addTimer(timer, action); workItemNode.setActions(ExtendedNodeImpl.EVENT_NODE_ENTER, actions); workItemNode.setActions(ExtendedNodeImpl.EVENT_NODE_EXIT, actions);
private RuleFlowProcess createCompensationEventSubProcessProcess(String processId, String[] workItemNames, final List<String> eventList) throws Exception { RuleFlowProcess process = new RuleFlowProcess(); process.setAutoComplete(true); process.setId(processId); process.setName("CESP Process"); process.setMetaData("Compensation", true); workItemNode.getWork().setName(workItemNames[0]); connect( startNode, workItemNode ); workItemNode.getWork().setName(workItemNames[2]); connect( compositeNode, workItemNode ); workItemNode.getWork().setName(workItemNames[1]); connect( startNode, workItemNode ); actionNode.setName("Execute"); DroolsAction action = new DroolsConsequenceAction("java", null); action.setMetaData("Action", new Action() { public void execute(ProcessContext context) throws Exception { actionNode.setAction(action); connect( startNode, actionNode );
assertThat(process).isInstanceOf(RuleFlowProcess.class); RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_517ac74c-fba4-4728-bcaf-e9853c864710"); assertThat(caseProcess.getName()).isEqualTo("First case"); List<Variable> variables = caseProcess.getVariableScope().getVariables(); assertThat(humanTaskOne.getWork().getName()).isEqualTo("Human Task"); assertThat(humanTaskOne.getWork().getName()).isEqualTo("Human Task"); assertThat(caseTask.getName()).isEqualTo("Start another case"); assertThat(caseTask.getWork().getName()).isEqualTo("StartCaseInstance"); assertThat(caseTask.getWork().getParameter("CaseDefinitionId")).isEqualTo("caseDefId"); assertThat(caseTask.getInAssociations()).hasSize(1); assertThat(caseTask.getInAssociations().get(0).getSources()).hasSize(1); assertThat(caseTask.getInAssociations().get(0).getSources().get(0)).isEqualTo("caseFile_invoice"); assertThat(caseTask.getInAssociations().get(0).getTarget()).isEqualTo("Data_origin"); assertThat(caseTask.getOutAssociations()).hasSize(1); assertThat(caseTask.getOutAssociations().get(0).getSources()).hasSize(1); assertThat(caseTask.getOutAssociations().get(0).getSources().get(0)).isEqualTo("updated"); assertThat(caseTask.getOutAssociations().get(0).getTarget()).isEqualTo("caseFile_invoice");
@Test public void testNestedEventSubProcess() throws Exception { RuleFlowProcess process = new RuleFlowProcess(); process.setAutoComplete(true); String processId = "org.jbpm.process.event.subprocess"; process.setId(processId); process.setName("Event SubProcess Process"); Work work = new WorkImpl(); String workItemName = "play"; work.setName( workItemName ); workItemNode.setWork(work); connect( startNode, workItemNode ); actionNode.setName("Print"); final List<String> eventList = new ArrayList<String>(); DroolsAction action = new DroolsConsequenceAction("java", null); action.setMetaData("Action", new Action() { public void execute(ProcessContext context) throws Exception { actionNode.setAction(action); connect( startNode, actionNode );
private RuleFlowProcess createCompensationBoundaryEventProcess(String processId, String[] workItemNames, final List<String> eventList) throws Exception { RuleFlowProcess process = new RuleFlowProcess(); process.setAutoComplete(true); process.setId(processId); process.setName("CESP Process"); process.setMetaData("Compensation", true); for (int i = 0; i < 3; ++i) { workItemNodes[i] = workItemNodeCreator.createNode("work" + (i + 1)); workItemNodes[i].getWork().setName(workItemNames[i]); connect(lastNode, workItemNodes[i]); lastNode = workItemNodes[i];
"Start has no outgoing connection."); "Action has no incoming connection."); if (workItemNode.getFrom() == null && !acceptsNoIncomingConnections(node)) { addErrorMessage(process, node, if (workItemNode.getTo() == null && !acceptsNoOutgoingConnections(node)) { Object compensationObj = workItemNode.getMetaData(isForCompensation); if (compensationObj == null || !((Boolean) compensationObj)) { addErrorMessage(process, if (workItemNode.getWork() == null) { addErrorMessage(process, node, "Task has no work specified."); } else { Work work = workItemNode.getWork(); if (work.getName() == null || work.getName().trim().length() == 0) { addErrorMessage(process, node, if (workItemNode.getTimers() != null) { for (Timer timer : workItemNode.getTimers().keySet()) { validateTimer(timer, node,
process.addNode(new StartNode()); process.addNode(new EndNode()); process.addNode(new ActionNode()); process.addNode(new Split()); process.addNode(new Join()); process.addNode(new RuleSetNode()); process.addNode(new SubProcessNode()); process.addNode(new WorkItemNode()); process.addNode(new TimerNode()); process.addNode(new HumanTaskNode());
Work work = new WorkImpl(); work.setName(name); workItemNode.setWork(work); org.w3c.dom.Node xmlNode = element.getFirstChild(); while (xmlNode != null) { workItemNode.setMetaData("DataInputs", new HashMap<String, String>(dataTypeInputs) ); workItemNode.setMetaData("DataOutputs", new HashMap<String, String>(dataTypeOutputs) ); handleScript(workItemNode, element, "onEntry"); handleScript(workItemNode, element, "onExit"); boolean isForCompensation = Boolean.parseBoolean(compensation); if( isForCompensation ) { workItemNode.setMetaData("isForCompensation", isForCompensation );
protected void visitInterfaces(Node[] nodes, StringBuilder xmlDump) { for (Node node: nodes) { if (node instanceof WorkItemNode) { Work work = ((WorkItemNode) node).getWork(); if (work != null) { if ("Service Task".equals(work.getName())) { String interfaceName = (String) work.getParameter("Interface"); if (interfaceName == null) { interfaceName = ""; String interfaceRef = (String) work.getParameter("interfaceImplementationRef"); if (interfaceRef == null) { interfaceRef = ""; if (startNode.getTriggers() != null && !startNode.getTriggers().isEmpty()) { Trigger trigger = startNode.getTriggers().get(0); if (trigger instanceof EventTrigger) { String eventType = ((EventTypeFilter) ((EventTrigger) trigger).getEventFilters().get(0)).getType();
public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) { WorkItemNode workItemNode = (WorkItemNode) node; writeNode("workItem", workItemNode, xmlDump, includeMeta); visitParameters(workItemNode, xmlDump); xmlDump.append(">" + EOL); if (includeMeta) { writeMetaData(workItemNode, xmlDump); } Work work = workItemNode.getWork(); visitWork(work, xmlDump, includeMeta); visitInMappings(workItemNode.getInMappings(), xmlDump); visitOutMappings(workItemNode.getOutMappings(), xmlDump); for (String eventType: workItemNode.getActionTypes()) { writeActions(eventType, workItemNode.getActions(eventType), xmlDump); } writeTimers(workItemNode.getTimers(), xmlDump); endNode("workItem", xmlDump); }
protected Node createNode() { return new WorkItemNode(); }
public Object start(final String uri, final String localName, final Attributes attrs, final ExtensibleXmlParser parser) throws SAXException { parser.startElementBuilder( localName, attrs ); WorkItemNode workItemNode = (WorkItemNode) parser.getParent(); final String name = attrs.getValue("name"); emptyAttributeCheck(localName, "name", name, parser); Work work = new WorkImpl(); work.setName(name); workItemNode.setWork(work); return work; }
((WorkItemNode)orignalNode).adjustOutMapping(forEachNode.getOutputCollectionExpression()); if (node instanceof WorkItemNode && ((WorkItemNode)node).getWork().getName().equals("Milestone")) { WorkItemNode workItemNode = (WorkItemNode) node; String milestoneCondition = (String)((WorkItemNode)node).getWork().getParameter("Condition"); if (milestoneCondition == null) { milestoneCondition = "";// if not given that means once activated it's achieved milestoneNode.setId(workItemNode.getId()); milestoneNode.setConstraint(milestoneCondition); milestoneNode.setMatchVariable((String)((WorkItemNode)node).getWork().getParameter("MatchVariable")); milestoneNode.setMetaData(workItemNode.getMetaData()); milestoneNode.setName(workItemNode.getName()); milestoneNode.setNodeContainer(workItemNode.getNodeContainer());