public List<Node> getAutoStartNodes() { if (!isDynamic()) { return Collections.emptyList(); } List<Node> nodes = Arrays.stream(getNodes()) .filter(n -> n.getIncomingConnections().isEmpty() && "true".equalsIgnoreCase((String)n.getMetaData().get("customAutoStart"))) .collect(Collectors.toList()); return nodes; }
if (process.getStartNodes().isEmpty() && !process.isDynamic()) { errors.add(new ProcessValidationErrorImpl(process, "Process has no start node.")); if (process.getEndNodes().isEmpty() && !process.isDynamic()) { errors.add(new ProcessValidationErrorImpl(process, "Process has no end node.")); process.isDynamic(), errors, process);
@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"); }
@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"); }
public void internalStart(String trigger) { StartNode startNode = getRuleFlowProcess().getStart(trigger); if (startNode != null) { ((NodeInstance) getNodeInstance(startNode)).trigger(null, null); } else if (!getRuleFlowProcess().isDynamic()) { throw new IllegalArgumentException("There is no start node that matches the trigger " + (trigger == null ? "none" : trigger)); } // activate ad hoc fragments if they are marked as such List<Node> autoStartNodes = getRuleFlowProcess().getAutoStartNodes(); autoStartNodes .forEach(austoStartNode -> signalEvent(austoStartNode.getName(), null)); }
@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 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); }
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");
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("ProcessAndDecisionTaskCase");
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");
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");
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");
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");
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");
@Test(timeout = 10000) public void testAdHocSimple() throws Exception { RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess("org.jbpm.process"); factory .dynamic(true) .name("Event Process") .version("1") .packageName("org.jbpm"); RuleFlowProcess process = factory.validate().getProcess(); assertNotNull(process); assertTrue(process.isDynamic()); }
public List<Node> getAutoStartNodes() { if (!isDynamic()) { return Collections.emptyList(); } List<Node> nodes = Arrays.stream(getNodes()) .filter(n -> n.getIncomingConnections().isEmpty() && "true".equalsIgnoreCase((String)n.getMetaData().get("customAutoStart"))) .collect(Collectors.toList()); return nodes; }
@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"); }
public void internalStart(String trigger) { StartNode startNode = getRuleFlowProcess().getStart(trigger); if (startNode != null) { ((NodeInstance) getNodeInstance(startNode)).trigger(null, null); } else if (!getRuleFlowProcess().isDynamic()) { throw new IllegalArgumentException("There is no start node that matches the trigger " + (trigger == null ? "none" : trigger)); } // activate ad hoc fragments if they are marked as such List<Node> autoStartNodes = getRuleFlowProcess().getAutoStartNodes(); autoStartNodes .forEach(austoStartNode -> signalEvent(austoStartNode.getName(), null)); }
@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(timeout = 10000) public void testAdHocSimple() throws Exception { RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess("org.jbpm.process"); factory .dynamic(true) .name("Event Process") .version("1") .packageName("org.jbpm"); RuleFlowProcess process = factory.validate().getProcess(); assertNotNull(process); assertTrue(process.isDynamic()); }