public boolean isResolveable(String name) { return processInstance.getVariable(name) != null; }
public VariableResolver getVariableResolver(String name) { return new SimpleValueResolver(processInstance.getVariable(name)); }
public Object execute(Context context ) { KieSession ksession = ((RegistryContext) context).lookup( KieSession.class ); if (processInstanceId == null) { return null; } ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId); if ( processInstance == null ) { throw new IllegalArgumentException( "Could not find process instance for id " + processInstanceId ); } if ( processInstance instanceof WorkflowProcessInstance ) { return ((WorkflowProcessInstance) processInstance).getVariable(variableId); } else { throw new IllegalStateException("Could not retrieve variable " + variableId + " because process instance " + processInstanceId + " was inaccessible!"); } }
public Integer execute(Context context) { StatefulKnowledgeSession ksession = (StatefulKnowledgeSession) ((RegistryContext) context).lookup( KieSession.class ); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.getProcessInstance(piId); return (Integer) processInstance.getVariable("x"); } });
@Test public void testDMNBusinessRuleTaskMultipleDecisionsOutput()throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper( "dmn/BPMN2-BusinessRuleTaskDMNMultipleDecisionsOutput.bpmn2", "dmn/0020-vacation-days.dmn"); ksession = createKnowledgeSession(kbase); // first run 16, 1 and expected days is 5 Map<String, Object> params = new HashMap<String, Object>(); params.put("age", 16); params.put("yearsOfService", 1); ProcessInstance processInstance = ksession.startProcess("BPMN2-BusinessRuleTask", params); assertProcessInstanceFinished(processInstance, ksession); BigDecimal vacationDays = (BigDecimal) ((WorkflowProcessInstance) processInstance).getVariable("vacationDays"); assertEquals(BigDecimal.valueOf(27), vacationDays); BigDecimal extraDays = (BigDecimal) ((WorkflowProcessInstance) processInstance).getVariable("extraDays"); assertEquals(BigDecimal.valueOf(5), extraDays); }
@Test public void testDMNBusinessRuleTaskByDecisionName()throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper( "dmn/BPMN2-BusinessRuleTaskDMNByDecisionName.bpmn2", "dmn/0020-vacation-days.dmn"); ksession = createKnowledgeSession(kbase); // first run 16, 1 and expected days is 5 Map<String, Object> params = new HashMap<String, Object>(); params.put("age", 16); params.put("yearsOfService", 1); ProcessInstance processInstance = ksession.startProcess("BPMN2-BusinessRuleTask", params); assertProcessInstanceFinished(processInstance, ksession); BigDecimal vacationDays = (BigDecimal) ((WorkflowProcessInstance) processInstance).getVariable("vacationDays"); assertEquals(BigDecimal.valueOf(5), vacationDays); }
@Test public void testCallActivityWithDataAssignment() throws Exception { KieBase kbase = createKnowledgeBase("subprocess/AssignmentProcess.bpmn2", "subprocess/AssignmentSubProcess.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "oldValue"); ProcessInstance processInstance = ksession.startProcess("assignmentProcess", params); assertProcessInstanceCompleted(processInstance); assertEquals("Hello Genworth welcome to jBPMS!", ((WorkflowProcessInstance) processInstance).getVariable("message")); }
@Test public void testCallActivity() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-CallActivity.bpmn2", "BPMN2-CallActivitySubProcess.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "oldValue"); ProcessInstance processInstance = ksession.startProcess( "ParentProcess", params); assertProcessInstanceCompleted(processInstance); assertEquals("new value", ((WorkflowProcessInstance) processInstance).getVariable("y")); }
@Test public void testServiceTask() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ServiceProcess.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("s", "john"); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("ServiceProcess", params); assertProcessInstanceCompleted(processInstance.getId(), ksession); assertThat(processInstance.getVariable("s")).isEqualTo("Hello john!"); }
@Test public void testCallActivityByName() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-CallActivityByName.bpmn2", "BPMN2-CallActivitySubProcess.bpmn2", "BPMN2-CallActivitySubProcessV2.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "oldValue"); ProcessInstance processInstance = ksession.startProcess( "ParentProcess", params); assertProcessInstanceCompleted(processInstance); assertEquals("new value V2", ((WorkflowProcessInstance) processInstance).getVariable("y")); }
@Test public void testWithDatabaseAndStartProcess() throws Exception { // Create variable Map<String, Object> params = new HashMap<String, Object>(); NonSerializableClass processVar = new NonSerializableClass(); processVar.setString("1234567890"); params.put(VAR_NAME, processVar); // Persist variable UserTransaction ut = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction"); ut.begin(); EntityManagerFactory emf = (EntityManagerFactory) context.get(ENTITY_MANAGER_FACTORY); EntityManager em = emf.createEntityManager(); em.setFlushMode(FlushModeType.COMMIT); em.joinTransaction(); em.persist(processVar); em.close(); ut.commit(); // Generate, insert, and start process ProcessInstance processInstance = ksession.startProcess(PROCESS_ID, params); // Test resuls Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); processVar = (NonSerializableClass) ((WorkflowProcessInstance) processInstance).getVariable(VAR_NAME); Assert.assertNotNull(processVar); }
@Test public void testServiceTaskWithMvelCollectionTransformation() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-ServiceProcessWithMvelCollectionTransformation.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("s", "john,poul,mary"); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession .startProcess("ServiceProcess", params); assertProcessInstanceFinished(processInstance, ksession); @SuppressWarnings("unchecked") List<String> result = (List<String>)processInstance.getVariable("list"); assertEquals(3, result.size()); }
@Test public void testServiceTaskWithMvelTransformation() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-ServiceProcessWithMvelTransformation.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("s", "JoHn"); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession .startProcess("ServiceProcess", params); assertProcessInstanceFinished(processInstance, ksession); assertEquals("hello john!", processInstance.getVariable("s")); }
@Test public void testCallActivity() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivity.bpmn2"), ResourceType.BPMN2); kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivitySubProcess.bpmn2"), ResourceType.BPMN2); if (!kbuilder.getErrors().isEmpty()) { for (KnowledgeBuilderError error : kbuilder.getErrors()) { logger.error("{}", error); } throw new IllegalArgumentException("Errors while parsing knowledge base"); } InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); KieSession ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "oldValue"); ProcessInstance processInstance = ksession.startProcess("ParentProcess", params); assertThat(processInstance.getState()).isEqualTo(ProcessInstance.STATE_COMPLETED); assertThat(((WorkflowProcessInstance) processInstance).getVariable("y")).isEqualTo("new value"); }
@Test public void testScriptTaskJS() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ScriptTaskJS.bpmn2"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler handler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler); Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "krisv"); Person person = new Person(); person.setName("krisv"); params.put("person", person); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("ScriptTask", params); assertEquals("Entry", processInstance.getVariable("x")); assertNull(processInstance.getVariable("y")); ksession.getWorkItemManager().completeWorkItem(handler.getWorkItem().getId(), null); assertEquals("Exit", getProcessVarValue(processInstance, "y")); assertEquals("tester", processInstance.getVariable("surname")); }
@Test public void testServiceTask() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ServiceProcess.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("s", "john"); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession .startProcess("ServiceProcess", params); assertProcessInstanceFinished(processInstance, ksession); assertEquals("Hello john!", processInstance.getVariable("s")); }
@Test public void testServiceTaskWithTransformation() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-ServiceProcessWithTransformation.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("s", "JoHn"); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession .startProcess("ServiceProcess", params); assertProcessInstanceFinished(processInstance, ksession); assertEquals("hello john!", processInstance.getVariable("s")); }
@Test public void testScriptTaskFEEL() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ScriptTaskFEEL.bpmn2"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler handler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler); Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "krisv"); Person person = new Person(); person.setName("krisv"); params.put("person", person); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("ScriptTask", params); assertEquals("Entry", processInstance.getVariable("x")); assertNull(processInstance.getVariable("y")); ksession.getWorkItemManager().completeWorkItem(handler.getWorkItem().getId(), null); assertEquals("Exit", getProcessVarValue(processInstance, "y")); assertEquals("tester", processInstance.getVariable("surname")); assertNodeTriggered(processInstance.getId(), "Script1"); }
@Test @RequirePersistence public void testCallActivityWithHistoryLog() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-CallActivity.bpmn2", "BPMN2-CallActivitySubProcess.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "oldValue"); ProcessInstance processInstance = ksession.startProcess( "ParentProcess", params); assertProcessInstanceCompleted(processInstance); assertEquals("new value", ((WorkflowProcessInstance) processInstance).getVariable("y")); AuditLogService logService = new JPAAuditLogService(ksession.getEnvironment()); List<ProcessInstanceLog> subprocesses = logService.findSubProcessInstances(processInstance.getId()); assertNotNull(subprocesses); assertEquals(1, subprocesses.size()); logService.dispose(); }
@Test public void testCallActivity2() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-CallActivity2.bpmn2", "BPMN2-CallActivitySubProcess.bpmn2"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "oldValue"); ProcessInstance processInstance = ksession.startProcess( "ParentProcess", params); assertProcessInstanceActive(processInstance); assertEquals("new value", ((WorkflowProcessInstance) processInstance).getVariable("y")); ksession = restoreSession(ksession, true); WorkItem workItem = workItemHandler.getWorkItem(); assertNotNull(workItem); assertEquals("krisv", workItem.getParameter("ActorId")); ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null); assertProcessInstanceFinished(processInstance, ksession); }