public static JBPMMessages.WorkItem writeWorkItem(MarshallerWriteContext context, WorkItem workItem, boolean includeVariables) throws IOException { JBPMMessages.WorkItem.Builder _workItem = JBPMMessages.WorkItem.newBuilder() .setId( workItem.getId() ) .setProcessInstancesId( workItem.getProcessInstanceId() ) .setName( workItem.getName() ) .setState( workItem.getState() ); if (workItem instanceof org.drools.core.process.instance.WorkItem) { if (((org.drools.core.process.instance.WorkItem)workItem).getDeploymentId() != null){ _workItem.setDeploymentId(((org.drools.core.process.instance.WorkItem)workItem).getDeploymentId()); } _workItem.setNodeId(((org.drools.core.process.instance.WorkItem)workItem).getNodeId()) .setNodeInstanceId(((org.drools.core.process.instance.WorkItem)workItem).getNodeInstanceId()); } if ( includeVariables ) { Map<String, Object> parameters = workItem.getParameters(); for ( Map.Entry<String, Object> entry : parameters.entrySet() ) { _workItem.addVariable( marshallVariable( context, entry.getKey(), entry.getValue() ) ); } } return _workItem.build(); }
@Test public void testErrornousHandlerWithStrategyAbort() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("handler/BPMN2-UserTaskWithBooleanOutput.bpmn2", "handler/BPMN2-ScriptTask.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ErrornousWorkItemHandler workItemHandler = new ErrornousWorkItemHandler("ScriptTask", HandlingStrategy.ABORT); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); Map<String, Object> params = new HashMap<>(); params.put("isChecked", false); ProcessInstance processInstance = ksession.startProcess("com.sample.boolean", params); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertProcessVarValue(processInstance, "isChecked", "false"); WorkItem handledWorkItem = workItemHandler.getWorkItem(); assertEquals(WorkItem.ABORTED, handledWorkItem.getState()); }
@Test public void testErrornousHandlerWithStrategyComplete() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("handler/BPMN2-UserTaskWithBooleanOutput.bpmn2", "handler/BPMN2-ScriptTask.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ErrornousWorkItemHandler workItemHandler = new ErrornousWorkItemHandler("ScriptTask", HandlingStrategy.COMPLETE); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ProcessInstance processInstance = ksession.startProcess("com.sample.boolean"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertProcessVarValue(processInstance, "isChecked", "true"); WorkItem handledWorkItem = workItemHandler.getWorkItem(); assertEquals(WorkItem.COMPLETED, handledWorkItem.getState()); }
@Test @Ignore( "Escalation does not cancel work items yet.") // TODO: make escalation interrupt tasks -- or look more closely at the spec to make sure that's the case? public void testEscalationBoundaryEventInterruptsTask() throws Exception { KieBase kbase = createKnowledgeBase("escalation/BPMN2-EscalationBoundaryEventInterrupting.bpmn2"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler handler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("MyTask", handler); ProcessInstance processInstance = ksession.startProcess("EscalationBoundaryEvent"); assertProcessInstanceCompleted(processInstance); // Check for cancellation of task assertEquals( "WorkItem was not cancelled!", WorkItem.ABORTED, handler.getWorkItem().getState()); }
public int getState() { return delegate.getState(); }
@Override public void setResult(WorkItem result) { this.id = result.getId(); this.name = result.getName(); this.parameters = result.getParameters(); this.processInstanceId = result.getProcessInstanceId(); this.results = result.getResults(); this.state = result.getState(); }
@Override public void setResult(WorkItem result) { this.id = result.getId(); this.name = result.getName(); this.parameters = result.getParameters(); this.processInstanceId = result.getProcessInstanceId(); this.results = result.getResults(); this.state = result.getState(); }
public String getWorkItem(String containerId, Number processInstanceId, Number workItemId, String marshallingType) { containerId = context.getContainerId(containerId, new ByProcessInstanceIdContainerLocator(processInstanceId.longValue())); WorkItem workItem = processService.getWorkItem(containerId, processInstanceId.longValue(), workItemId.longValue()); if (workItem == null) { throw new IllegalStateException("Unable to find work item with id " + workItemId); } WorkItemInstance workItemInstance = WorkItemInstance.builder() .id(workItem.getId()) .nodeInstanceId(((org.drools.core.process.instance.WorkItem) workItem).getNodeInstanceId()) .processInstanceId(workItem.getProcessInstanceId()) .containerId(((org.drools.core.process.instance.WorkItem) workItem).getDeploymentId()) .name(workItem.getName()) .nodeId(((org.drools.core.process.instance.WorkItem) workItem).getNodeId()) .parameters(workItem.getParameters()) .state(workItem.getState()) .build(); logger.debug("About to marshal work item {}", workItemInstance); String response = marshallerHelper.marshal(containerId, marshallingType, workItemInstance, new ByProcessInstanceIdContainerLocator(processInstanceId.longValue())); return response; }
public String getWorkItemByProcessInstance(String containerId, Number processInstanceId, String marshallingType) { containerId = context.getContainerId(containerId, new ByProcessInstanceIdContainerLocator(processInstanceId.longValue())); List<WorkItem> workItems = processService.getWorkItemByProcessInstance(containerId, processInstanceId.longValue()); WorkItemInstance[] instances = new WorkItemInstance[workItems.size()]; int counter = 0; for (WorkItem workItem : workItems) { WorkItemInstance workItemInstance = WorkItemInstance.builder() .id(workItem.getId()) .nodeInstanceId(((org.drools.core.process.instance.WorkItem) workItem).getNodeInstanceId()) .processInstanceId(workItem.getProcessInstanceId()) .containerId(((org.drools.core.process.instance.WorkItem) workItem).getDeploymentId()) .name(workItem.getName()) .nodeId(((org.drools.core.process.instance.WorkItem) workItem).getNodeId()) .parameters(workItem.getParameters()) .state(workItem.getState()) .build(); instances[counter] = workItemInstance; counter++; } WorkItemInstanceList result = new WorkItemInstanceList(instances); logger.debug("About to marshal work items {}", result); String response = marshallerHelper.marshal(containerId, marshallingType, result); return response; }
public static JBPMMessages.WorkItem writeWorkItem(MarshallerWriteContext context, WorkItem workItem, boolean includeVariables) throws IOException { JBPMMessages.WorkItem.Builder _workItem = JBPMMessages.WorkItem.newBuilder() .setId( workItem.getId() ) .setProcessInstancesId( workItem.getProcessInstanceId() ) .setName( workItem.getName() ) .setState( workItem.getState() ); if (workItem instanceof org.drools.core.process.instance.WorkItem) { if (((org.drools.core.process.instance.WorkItem)workItem).getDeploymentId() != null){ _workItem.setDeploymentId(((org.drools.core.process.instance.WorkItem)workItem).getDeploymentId()); } _workItem.setNodeId(((org.drools.core.process.instance.WorkItem)workItem).getNodeId()) .setNodeInstanceId(((org.drools.core.process.instance.WorkItem)workItem).getNodeInstanceId()); } if ( includeVariables ) { Map<String, Object> parameters = workItem.getParameters(); for ( Map.Entry<String, Object> entry : parameters.entrySet() ) { _workItem.addVariable( marshallVariable( context, entry.getKey(), entry.getValue() ) ); } } return _workItem.build(); }
@Test public void testErrornousHandlerWithStrategyAbort() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("handler/BPMN2-UserTaskWithBooleanOutput.bpmn2", "handler/BPMN2-ScriptTask.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ErrornousWorkItemHandler workItemHandler = new ErrornousWorkItemHandler("ScriptTask", HandlingStrategy.ABORT); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); Map<String, Object> params = new HashMap<>(); params.put("isChecked", false); ProcessInstance processInstance = ksession.startProcess("com.sample.boolean", params); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertProcessVarValue(processInstance, "isChecked", "false"); WorkItem handledWorkItem = workItemHandler.getWorkItem(); assertEquals(WorkItem.ABORTED, handledWorkItem.getState()); }
@Test public void testErrornousHandlerWithStrategyComplete() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("handler/BPMN2-UserTaskWithBooleanOutput.bpmn2", "handler/BPMN2-ScriptTask.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ErrornousWorkItemHandler workItemHandler = new ErrornousWorkItemHandler("ScriptTask", HandlingStrategy.COMPLETE); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ProcessInstance processInstance = ksession.startProcess("com.sample.boolean"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertProcessVarValue(processInstance, "isChecked", "true"); WorkItem handledWorkItem = workItemHandler.getWorkItem(); assertEquals(WorkItem.COMPLETED, handledWorkItem.getState()); }
@Test @Ignore( "Escalation does not cancel work items yet.") // TODO: make escalation interrupt tasks -- or look more closely at the spec to make sure that's the case? public void testEscalationBoundaryEventInterruptsTask() throws Exception { KieBase kbase = createKnowledgeBase("escalation/BPMN2-EscalationBoundaryEventInterrupting.bpmn2"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler handler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("MyTask", handler); ProcessInstance processInstance = ksession.startProcess("EscalationBoundaryEvent"); assertProcessInstanceCompleted(processInstance); // Check for cancellation of task assertEquals( "WorkItem was not cancelled!", WorkItem.ABORTED, handler.getWorkItem().getState()); }
assertEquals("John Doe", workItem.getParameter("Comment")); assertEquals(WorkItem.PENDING, workItem.getState()); assertEquals(WorkItem.COMPLETED, workItem.getState()); assertEquals("Jane Doe", workItem.getParameter("Comment")); assertEquals(WorkItem.PENDING, workItem.getState()); assertEquals(WorkItem.COMPLETED, workItem.getState());
assertEquals("John Doe", workItem.getParameter("Comment")); assertEquals(WorkItem.PENDING, workItem.getState()); assertEquals(WorkItem.COMPLETED, workItem.getState()); assertEquals("Jane Doe", workItem.getParameter("Comment")); assertEquals(WorkItem.PENDING, workItem.getState()); assertEquals(WorkItem.COMPLETED, workItem.getState());