protected String processParserMessage(LinkedList<Object> parents, Attributes attr, String errorMessage) { String nodeId = (attr == null || attr.getValue("id") == null) ? "" : attr.getValue("id"); String nodeName = (attr == null || attr.getValue("name") == null) ? "" : attr.getValue("name"); for(Object parent : parents) { if(parent != null && parent instanceof RuleFlowProcess) { RuleFlowProcess process = ((RuleFlowProcess) parent); return messageWithProcessInfo.format(new Object[] {process.getId(), process.getPackageName(), process.getName(), process.getVersion(), nodeId, nodeName, errorMessage}); } } return message.format(new Object[] {nodeId, nodeName, errorMessage}); } }
public void initStartTimers() { KieBase kbase = kruntime.getKieBase(); Collection<Process> processes = kbase.getProcesses(); for (Process process : processes) { RuleFlowProcess p = (RuleFlowProcess) process; List<StartNode> startNodes = p.getTimerStart(); if (startNodes != null && !startNodes.isEmpty()) { kruntime.queueWorkingMemoryAction(new RegisterStartTimerAction(p.getId(), startNodes, this.timerManager)); } } }
@Test public void testLoadMinimalCase() throws Exception { KieBase kbase = createKnowledgeBase("CMMN-MinimalCase.cmmn"); assertThat(kbase).isNotNull(); Process process = kbase.getProcess("loan_application"); assertThat(process).isNotNull(); assertThat(process).isInstanceOf(RuleFlowProcess.class); RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("loan_application"); assertThat(caseProcess.getName()).isEqualTo("Loan Application"); }
private static void linkBoundaryConditionEvent(NodeContainer nodeContainer, Node node, String attachedTo, Node attachedNode) { String processId = ((RuleFlowProcess) nodeContainer).getId(); String eventType = "RuleFlowStateEvent-" + processId + "-" + ((EventNode) node).getUniqueId() + "-" + attachedTo; ((EventTypeFilter) ((EventNode) node).getEventFilters().get(0)).setType(eventType); boolean cancelActivity = (Boolean) node.getMetaData().get("CancelActivity"); if (cancelActivity) { List<DroolsAction> actions = ((EventNode) node).getActions(EndNode.EVENT_NODE_EXIT); if (actions == null) { actions = new ArrayList<DroolsAction>(); } DroolsConsequenceAction action = new DroolsConsequenceAction("java", null); action.setMetaData("Action", new CancelNodeInstanceAction(attachedTo)); actions.add(action); ((EventNode) node).setActions(EndNode.EVENT_NODE_EXIT, actions); } }
private static void linkBoundaryConditionEvent(NodeContainer nodeContainer, Node node, String attachedTo, Node attachedNode) { String processId = ((RuleFlowProcess) nodeContainer).getId(); String eventType = "RuleFlowStateEvent-" + processId + "-" + ((EventNode) node).getUniqueId() + "-" + attachedTo; ((EventTypeFilter) ((EventNode) node).getEventFilters().get(0)).setType(eventType); boolean cancelActivity = (Boolean) node.getMetaData().get("CancelActivity"); if (cancelActivity) { List<DroolsAction> actions = ((EventNode)node).getActions(EndNode.EVENT_NODE_EXIT); if (actions == null) { actions = new ArrayList<DroolsAction>(); } DroolsConsequenceAction action = new DroolsConsequenceAction("java", null); action.setMetaData("Action", new CancelNodeInstanceAction(attachedTo)); actions.add(action); ((EventNode)node).setActions(EndNode.EVENT_NODE_EXIT, actions); } }
@Test public void testLoadMinimalCaseWithRoles() throws Exception { KieBase kbase = createKnowledgeBase("CMMN-MinimalCaseWithRoles.cmmn"); assertThat(kbase).isNotNull(); Process process = kbase.getProcess("loan_application"); assertThat(process).isNotNull(); assertThat(process).isInstanceOf(RuleFlowProcess.class); RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("loan_application"); assertThat(caseProcess.getName()).isEqualTo("Loan Application"); String roles = (String) caseProcess.getMetaData("customCaseRoles"); assertThat(roles).isNotNull(); assertThat(roles).isEqualTo("owner,participant,manager"); }
@Test public void testLoadOrderITHardwareCase() throws Exception { KieBase kbase = createKnowledgeBase("CMMN-OrderITHardwareCase.cmmn"); assertThat(kbase).isNotNull(); Process process = kbase.getProcess("itorders.orderhardware"); assertThat(process).isNotNull(); assertThat(process).isInstanceOf(RuleFlowProcess.class); RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("itorders.orderhardware"); assertThat(caseProcess.getName()).isEqualTo("Order IT hardware"); Node[] nodes = caseProcess.getNodes(); assertThat(nodes).hasSize(9); List<Variable> variables = caseProcess.getVariableScope().getVariables(); assertThat(variables).hasSize(7); }
@Test public void testCompensationEventSubProcessGeneral() throws Exception { String processId = "org.jbpm.process.compensation.event.subprocess.general"; String[] workItemNames = { "kwik", "kwek", "kwak" }; List<String> eventList = new ArrayList<String>(); RuleFlowProcess process = createCompensationEventSubProcessProcess(processId, workItemNames, eventList); String compensationEvent = CompensationScope.IMPLICIT_COMPENSATION_PREFIX + process.getId(); // run process ksession = createKieSession(process); runCompensationEventSubProcessGeneralTest(ksession, process, processId, workItemNames, eventList, compensationEvent); }
@Test public void testLoadProcessTaskReferenceCase() throws Exception { KieBase kbase = createKnowledgeBase("CMMN-ProcessTaskReferenceCase.cmmn"); assertThat(kbase).isNotNull(); Process process = kbase.getProcess("Case_636d4bea-4d52-46fb-b1ad-9ceeddf1be69"); assertThat(process).isNotNull(); assertThat(process).isInstanceOf(RuleFlowProcess.class); RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_636d4bea-4d52-46fb-b1ad-9ceeddf1be69"); assertThat(caseProcess.getName()).isEqualTo("ProcessTaskCase"); Node[] nodes = caseProcess.getNodes(); assertThat(nodes).hasSize(1); SubProcessNode processNode = (SubProcessNode) nodes[0]; assertThat(processNode.getName()).isEqualTo("call my process"); assertThat(processNode.getProcessId()).isEqualTo("_4e0c5178-c886-4a14-ab6b-6ec6c940194b"); assertThat(processNode.isWaitForCompletion()).isTrue(); assertThat(processNode.isIndependent()).isFalse(); assertThat(processNode.getInAssociations()).hasSize(0); assertThat(processNode.getOutAssociations()).hasSize(0); }
RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_517ac74c-fba4-4728-bcaf-e9853c864710"); assertThat(caseProcess.getName()).isEqualTo("First case");
parentId = ((RuleFlowProcess) nodeParent).getId(); } else { parentId = (String) ((NodeImpl) nodeParent).getMetaData("UniqueId");
parentId = ((RuleFlowProcess) nodeParent).getId(); } else { parentId = (String) ((NodeImpl) nodeParent).getMetaData("UniqueId");
RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_636d4bea-4d52-46fb-b1ad-9ceeddf1be69"); assertThat(caseProcess.getName()).isEqualTo("ProcessAndDecisionTaskCase");
RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_517ac74c-fba4-4728-bcaf-e9853c864710"); assertThat(caseProcess.getName()).isEqualTo("First case");
RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_517ac74c-fba4-4728-bcaf-e9853c864710"); assertThat(caseProcess.getName()).isEqualTo("First case");
RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("loan_application"); assertThat(caseProcess.getName()).isEqualTo("Loan Application");
RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_517ac74c-fba4-4728-bcaf-e9853c864710"); assertThat(caseProcess.getName()).isEqualTo("First case");
private static void insertNodeInBetween(RuleFlowProcess process, long startNodeId, long endNodeId, NodeImpl node) { if (process == null) { throw new IllegalArgumentException("Process may not be null"); } NodeImpl selectedNode = (NodeImpl) process.getNode(startNodeId); if (selectedNode == null) { throw new IllegalArgumentException("Node " + startNodeId + " not found in process " + process.getId()); } for (Connection connection: selectedNode.getDefaultOutgoingConnections()) { if (connection.getTo().getId() == endNodeId) { process.addNode(node); NodeImpl endNode = (NodeImpl) connection.getTo(); ((ConnectionImpl) connection).terminate(); new ConnectionImpl(selectedNode, NodeImpl.CONNECTION_DEFAULT_TYPE, node, NodeImpl.CONNECTION_DEFAULT_TYPE); new ConnectionImpl(node, NodeImpl.CONNECTION_DEFAULT_TYPE, endNode, NodeImpl.CONNECTION_DEFAULT_TYPE); return; } } throw new IllegalArgumentException("Connection to node " + endNodeId + " not found in process " + process.getId()); }
RuleFlowProcess caseProcess = (RuleFlowProcess) process; assertThat(caseProcess.isDynamic()).isTrue(); assertThat(caseProcess.getId()).isEqualTo("Case_517ac74c-fba4-4728-bcaf-e9853c864710"); assertThat(caseProcess.getName()).isEqualTo("First case");