Search in sources :

Example 1 with Error

use of org.jbpm.bpmn2.core.Error in project jbpm by kiegroup.

the class ExceptionHandlingErrorExample method runExample.

public static ProcessInstance runExample() {
    // load up the knowledge base
    RuntimeManager manager = createManager();
    KieSession ksession = manager.getRuntimeEngine(null).getKieSession();
    String eventType = "Error-code";
    SignallingTaskHandlerDecorator signallingTaskWrapper = new SignallingTaskHandlerDecorator(ServiceTaskHandler.class, eventType);
    signallingTaskWrapper.setWorkItemExceptionParameterName(ExceptionService.exceptionParameterName);
    ksession.getWorkItemManager().registerWorkItemHandler("Service Task", signallingTaskWrapper);
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("serviceInputItem", "Input to Original Service");
    ProcessInstance processInstance = ksession.startProcess("ProcessWithExceptionHandlingError", params);
    manager.close();
    return processInstance;
}
Also used : HashMap(java.util.HashMap) RuntimeManager(org.kie.api.runtime.manager.RuntimeManager) SignallingTaskHandlerDecorator(org.jbpm.bpmn2.handler.SignallingTaskHandlerDecorator) KieSession(org.kie.api.runtime.KieSession) ProcessInstance(org.kie.api.runtime.process.ProcessInstance)

Example 2 with Error

use of org.jbpm.bpmn2.core.Error in project jbpm by kiegroup.

the class CaseServiceImplTest method testStartExpressionCaseWithCaseFile.

@Test
public void testStartExpressionCaseWithCaseFile() {
    Map<String, Object> data = new HashMap<>();
    data.put("person", new Person("john"));
    CaseFileInstance caseFile = caseService.newCaseFileInstance(deploymentUnit.getIdentifier(), EXPRESSION_CASE_P_ID, data);
    String caseId = caseService.startCase(deploymentUnit.getIdentifier(), EXPRESSION_CASE_P_ID, caseFile);
    assertNotNull(caseId);
    assertEquals(FIRST_CASE_ID, caseId);
    try {
        CaseInstance cInstance = caseService.getCaseInstance(caseId, true, false, false, false);
        assertNotNull(cInstance);
        assertEquals(FIRST_CASE_ID, cInstance.getCaseId());
        assertNotNull(cInstance.getCaseFile());
        assertEquals("john", ((Person) cInstance.getCaseFile().getData("person")).getName());
        assertEquals(deploymentUnit.getIdentifier(), cInstance.getDeploymentId());
        List<TaskSummary> tasks = caseRuntimeDataService.getCaseTasksAssignedAsPotentialOwner(caseId, "john", null, new QueryContext());
        assertNotNull(tasks);
        assertEquals(1, tasks.size());
        Map<String, Object> taskInputs = userTaskService.getTaskInputContentByTaskId(tasks.get(0).getId());
        Object personName = taskInputs.get("personName");
        assertEquals("john", personName);
        caseService.cancelCase(caseId);
        caseId = null;
    } catch (Exception e) {
        logger.error("Unexpected error {}", e.getMessage(), e);
        fail("Unexpected exception " + e.getMessage());
    } finally {
        if (caseId != null) {
            caseService.cancelCase(caseId);
        }
    }
}
Also used : CaseFileInstance(org.jbpm.casemgmt.api.model.instance.CaseFileInstance) CaseInstance(org.jbpm.casemgmt.api.model.instance.CaseInstance) HashMap(java.util.HashMap) TaskSummary(org.kie.api.task.model.TaskSummary) QueryContext(org.kie.api.runtime.query.QueryContext) Person(org.jbpm.bpmn2.objects.Person) CaseCommentNotFoundException(org.jbpm.casemgmt.api.CaseCommentNotFoundException) AdHocFragmentNotFoundException(org.jbpm.casemgmt.api.AdHocFragmentNotFoundException) CaseNotFoundException(org.jbpm.casemgmt.api.CaseNotFoundException) TaskNotFoundException(org.jbpm.services.api.TaskNotFoundException) CaseActiveException(org.jbpm.casemgmt.api.CaseActiveException) AbstractCaseServicesBaseTest(org.jbpm.casemgmt.impl.util.AbstractCaseServicesBaseTest) Test(org.junit.Test)

Example 3 with Error

use of org.jbpm.bpmn2.core.Error in project jbpm by kiegroup.

the class WebServiceWorkItemHandler method getWSClient.

@SuppressWarnings("unchecked")
protected Client getWSClient(WorkItem workItem, String interfaceRef) {
    if (clients.containsKey(interfaceRef)) {
        return clients.get(interfaceRef);
    }
    synchronized (this) {
        if (clients.containsKey(interfaceRef)) {
            return clients.get(interfaceRef);
        }
        String importLocation = (String) workItem.getParameter("Url");
        String importNamespace = (String) workItem.getParameter("Namespace");
        if (importLocation != null && importLocation.trim().length() > 0 && importNamespace != null && importNamespace.trim().length() > 0) {
            Client client = getDynamicClientFactory().createClient(importLocation, new QName(importNamespace, interfaceRef), getInternalClassLoader(), null);
            clients.put(interfaceRef, client);
            return client;
        }
        long processInstanceId = ((WorkItemImpl) workItem).getProcessInstanceId();
        WorkflowProcessImpl process = ((WorkflowProcessImpl) ksession.getProcessInstance(processInstanceId).getProcess());
        List<Bpmn2Import> typedImports = (List<Bpmn2Import>) process.getMetaData("Bpmn2Imports");
        if (typedImports != null) {
            Client client = null;
            for (Bpmn2Import importObj : typedImports) {
                if (WSDL_IMPORT_TYPE.equalsIgnoreCase(importObj.getType())) {
                    try {
                        client = getDynamicClientFactory().createClient(importObj.getLocation(), new QName(importObj.getNamespace(), interfaceRef), getInternalClassLoader(), null);
                        clients.put(interfaceRef, client);
                        return client;
                    } catch (Exception e) {
                        logger.error("Error when creating WS Client", e);
                        continue;
                    }
                }
            }
        }
    }
    return null;
}
Also used : Bpmn2Import(org.jbpm.bpmn2.core.Bpmn2Import) QName(javax.xml.namespace.QName) WorkItemImpl(org.drools.core.process.instance.impl.WorkItemImpl) List(java.util.List) Client(org.apache.cxf.endpoint.Client) WorkflowProcessImpl(org.jbpm.workflow.core.impl.WorkflowProcessImpl)

Example 4 with Error

use of org.jbpm.bpmn2.core.Error in project jbpm by kiegroup.

the class ErrorEventTest method testCatchErrorBoundaryEventOnTask.

@Test
public void testCatchErrorBoundaryEventOnTask() throws Exception {
    KieBase kbase = createKnowledgeBase("BPMN2-ErrorBoundaryEventOnTask.bpmn2");
    ksession = createKnowledgeSession(kbase);
    ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new TestWorkItemHandler() {

        @Override
        public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
            if (workItem.getParameter("ActorId").equals("mary")) {
                throw new MyError();
            }
        }

        @Override
        public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
            manager.abortWorkItem(workItem.getId());
        }
    });
    ProcessInstance processInstance = ksession.startProcess("BPMN2-ErrorBoundaryEventOnTask");
    assertProcessInstanceActive(processInstance);
    assertNodeTriggered(processInstance.getId(), "start", "split", "User Task", "User task error attached", "Script Task", "error1", "error2");
}
Also used : TestWorkItemHandler(org.jbpm.bpmn2.objects.TestWorkItemHandler) MyError(org.jbpm.bpmn2.objects.MyError) KieBase(org.kie.api.KieBase) WorkflowProcessInstance(org.jbpm.workflow.instance.WorkflowProcessInstance) ProcessInstance(org.kie.api.runtime.process.ProcessInstance) WorkItem(org.kie.api.runtime.process.WorkItem) WorkItemManager(org.kie.api.runtime.process.WorkItemManager) Test(org.junit.Test)

Example 5 with Error

use of org.jbpm.bpmn2.core.Error in project jbpm by kiegroup.

the class ErrorEventTest method testEventSubProcessErrorWithScript.

@Test
public void testEventSubProcessErrorWithScript() throws Exception {
    KieBase kbase = createKnowledgeBase("BPMN2-EventSubProcessErrorWithScript.bpmn2");
    ksession = createKnowledgeSession(kbase);
    ksession.getWorkItemManager().registerWorkItemHandler("Request Handler", new SignallingTaskHandlerDecorator(ExceptionOnPurposeHandler.class, "Error-90277"));
    ksession.getWorkItemManager().registerWorkItemHandler("Error Handler", new SystemOutWorkItemHandler());
    ProcessInstance processInstance = ksession.startProcess("com.sample.process");
    assertProcessInstanceAborted(processInstance);
    assertEquals("90277", ((WorkflowProcessInstance) processInstance).getOutcome());
}
Also used : ExceptionOnPurposeHandler(org.jbpm.bpmn2.objects.ExceptionOnPurposeHandler) KieBase(org.kie.api.KieBase) SystemOutWorkItemHandler(org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler) SignallingTaskHandlerDecorator(org.jbpm.bpmn2.handler.SignallingTaskHandlerDecorator) WorkflowProcessInstance(org.jbpm.workflow.instance.WorkflowProcessInstance) ProcessInstance(org.kie.api.runtime.process.ProcessInstance) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)14 HashMap (java.util.HashMap)12 ArrayList (java.util.ArrayList)11 ProcessInstance (org.kie.api.runtime.process.ProcessInstance)11 List (java.util.List)9 KieBase (org.kie.api.KieBase)9 TestWorkItemHandler (org.jbpm.bpmn2.objects.TestWorkItemHandler)7 Error (org.jbpm.bpmn2.core.Error)6 WorkflowProcessInstance (org.jbpm.workflow.instance.WorkflowProcessInstance)6 WorkItem (org.kie.api.runtime.process.WorkItem)6 Map (java.util.Map)5 Collections (java.util.Collections)4 SignallingTaskHandlerDecorator (org.jbpm.bpmn2.handler.SignallingTaskHandlerDecorator)4 Person (org.jbpm.bpmn2.objects.Person)4 WorkflowProcessInstance (org.kie.api.runtime.process.WorkflowProcessInstance)4 CommandBasedStatefulKnowledgeSession (org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession)3 AdHocFragmentNotFoundException (org.jbpm.casemgmt.api.AdHocFragmentNotFoundException)3 CaseActiveException (org.jbpm.casemgmt.api.CaseActiveException)3 CaseCommentNotFoundException (org.jbpm.casemgmt.api.CaseCommentNotFoundException)3 CaseNotFoundException (org.jbpm.casemgmt.api.CaseNotFoundException)3