This is an automated email from the ASF dual-hosted git repository.
egonzalez pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
The following commit(s) were added to refs/heads/main by this push:
new e1b6dcc4eb [incubator-kie-issues-1308] Exceptions in Service process
(#3553)
e1b6dcc4eb is described below
commit e1b6dcc4eba862e3a512c94ef0c73c61259c2976
Author: Enrique <[email protected]>
AuthorDate: Fri Jun 21 17:17:52 2024 +0200
[incubator-kie-issues-1308] Exceptions in Service process (#3553)
---
.../bpmn2/handler/LoggingTaskHandlerDecorator.java | 6 +-
.../workflow/instance/impl/NodeInstanceImpl.java | 1 +
.../java/org/jbpm/bpmn2/services/Interface1.java | 32 +++++++
.../jbpm/bpmn2/service}/BPMN2-ServiceProcess.bpmn2 | 2 +-
...N2-ServiceProcessWithCustomTransformation.bpmn2 | 2 +-
.../jbpm/bpmn2/service}/BPMN2-ServiceTask.bpmn2 | 17 +++-
.../service/BPMN2-ServiceTaskWebService.bpmn2} | 6 +-
...2-ExceptionServiceProcessErrorSignalling.bpmn2} | 2 +-
.../BPMN2-ExceptionServiceProcessSignalling.bpmn2} | 4 +-
.../BPMN2-ExceptionThrowingServiceProcess.bpmn2 | 2 +-
.../src/test/java/org/jbpm/bpmn2/ActivityTest.java | 90 +++++++-----------
.../test/java/org/jbpm/bpmn2/ErrorEventTest.java | 53 ++++++++++-
.../java/org/jbpm/bpmn2/IntermediateEventTest.java | 6 --
.../org/jbpm/bpmn2/StandaloneBPMNProcessTest.java | 104 ---------------------
.../handler/LoggingTaskHandlerWrapperTest.java | 77 ++++++++++-----
15 files changed, 196 insertions(+), 208 deletions(-)
diff --git
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerDecorator.java
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerDecorator.java
index be049745f4..087d09ece7 100755
---
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerDecorator.java
+++
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerDecorator.java
@@ -65,7 +65,7 @@ import org.slf4j.LoggerFactory;
*/
public class LoggingTaskHandlerDecorator extends
AbstractExceptionHandlingTaskHandler {
- private static final Logger logger =
LoggerFactory.getLogger(LoggingTaskHandlerDecorator.class);
+ private static Logger logger =
LoggerFactory.getLogger(LoggingTaskHandlerDecorator.class);
private int loggedExceptionsLimit = 100;
private Queue<WorkItemExceptionInfo> exceptionInfoList = new
ArrayDeque<>(loggedExceptionsLimit);
@@ -210,6 +210,10 @@ public class LoggingTaskHandlerDecorator extends
AbstractExceptionHandlingTaskHa
logMessage(false, workItem, cause);
}
+ public static void setLogger(Logger logger) {
+ LoggingTaskHandlerDecorator.logger = logger;
+ }
+
private void logMessage(boolean onExecute, KogitoWorkItem workItem,
Throwable cause) {
String handlerMethodStem = "execut";
if (!onExecute) {
diff --git
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
index e23c5b4bc8..f71a5ef44f 100755
---
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
+++
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/NodeInstanceImpl.java
@@ -258,6 +258,7 @@ public abstract class NodeInstanceImpl implements
org.jbpm.workflow.instance.Nod
protected void captureError(Exception e) {
logger.error("capture error", e);
+ e.printStackTrace();
getProcessInstance().setErrorState(this, e);
}
diff --git
a/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/services/Interface1.java
b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/services/Interface1.java
new file mode 100644
index 0000000000..9fe7b02d26
--- /dev/null
+++ b/jbpm/jbpm-tests/src/main/java/org/jbpm/bpmn2/services/Interface1.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.jbpm.bpmn2.services;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Interface1 {
+
+ Logger LOGGER = LoggerFactory.getLogger(Interface1.class);
+
+ public void operation1(String value) {
+ LOGGER.info("operation1 in interface1 = {}", value);
+ }
+}
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcess.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcess.bpmn2
similarity index 97%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcess.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcess.bpmn2
index ab68586d06..a86de045b3 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcess.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcess.bpmn2
@@ -40,7 +40,7 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcess"
name="Service Process" >
+ <process processType="Private" isExecutable="true" id="ServiceProcess"
name="Service Process" tns:packageName="org.jbpm.bpmn2.service">
<!-- process variables -->
<property id="s" itemSubjectRef="_sItem"/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithCustomTransformation.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithCustomTransformation.bpmn2
similarity index 97%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithCustomTransformation.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithCustomTransformation.bpmn2
index 35dacbb1e2..0e12a85489 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceProcessWithCustomTransformation.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceProcessWithCustomTransformation.bpmn2
@@ -40,7 +40,7 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcess"
name="Service Process" >
+ <process processType="Private" isExecutable="true"
id="ServiceProcessWithCustomTransformation"
tns:packageName="org.jbpm.bpmn2.service">
<!-- process variables -->
<property id="s" itemSubjectRef="_sItem"/>
diff --git a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceTask.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceTask.bpmn2
similarity index 91%
rename from jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceTask.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceTask.bpmn2
index cdd5481203..8e28087544 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceTask.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceTask.bpmn2
@@ -18,9 +18,18 @@
~ under the License.
-->
-<bpmn:definitions id="EAPK_CCE882F2_23D3_4e7e_80FE_6D8C0AF83CAA"
targetNamespace="www.sparxsystems.com.au/bpmn20"
xmlns:ssbp="www.sparxsystems.com.au/bpmn20"
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" exporter="Enterprise
Architect" exporterVersion="10.0.1004">
+<bpmn:definitions id="EAPK_CCE882F2_23D3_4e7e_80FE_6D8C0AF83CAA"
+targetNamespace="www.sparxsystems.com.au/bpmn20"
+xmlns:ssbp="www.sparxsystems.com.au/bpmn20"
+xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
+xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
+xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
+xmlns:drools="http://www.jboss.org/drools"
+exporter="Enterprise Architect" exporterVersion="10.0.1004">
- <bpmn:process id="EAID_DP000000_23D3_4e7e_80FE_6D8C0AF83CAA">
+ <bpmn:process id="ServiceTask"
drools:packageName="org.jbpm.bpmn2.service">
<bpmn:startEvent id="EAID_010AED45_CEDD_4cba_9153_7ED25329D3E2"
name="StartEvent1" isInterrupting="true" parallelMultiple="false">
<bpmn:outgoing>EAID_DE09F4BA_6B35_4699_8AC9_84819B916A98</bpmn:outgoing>
</bpmn:startEvent>
@@ -48,8 +57,8 @@
</bpmn:process>
<bpmn:itemDefinition id="EAID_691666AE_9DFF_4003_B94E_D40F037565C1"
isCollection="false" structureRef="java.lang.String"/>
<bpmn:message id="EAID_137CB429_F782_4fee_8CC8_D57206264E3E"
name="Message1" itemRef="EAID_691666AE_9DFF_4003_B94E_D40F037565C1"/>
- <bpmn:interface id="EAID_B73BF5BB_A892_460d_B3BA_5D8873850689"
name="Interface1">
- <bpmn:operation id="EAID_6F76C1D0_E4CA_4b76_8A2F_9F7C33D2C90F"
name="Operation1">
+ <bpmn:interface id="EAID_B73BF5BB_A892_460d_B3BA_5D8873850689"
name="org.jbpm.bpmn2.services.Interface1">
+ <bpmn:operation id="EAID_6F76C1D0_E4CA_4b76_8A2F_9F7C33D2C90F"
name="operation1">
<bpmn:inMessageRef>EAID_137CB429_F782_4fee_8CC8_D57206264E3E</bpmn:inMessageRef>
</bpmn:operation>
</bpmn:interface>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceTask-web-service.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceTaskWebService.bpmn2
similarity index 96%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceTask-web-service.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceTaskWebService.bpmn2
index dd1777fba9..f340b2b894 100755
--- a/jbpm/jbpm-tests/src/test/resources/BPMN2-ServiceTask-web-service.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/service/BPMN2-ServiceTaskWebService.bpmn2
@@ -27,12 +27,12 @@
<bpmn2:itemDefinition id="_sItem2" structureRef="java.lang.String"/>
<bpmn2:itemDefinition id="_2_InMessageType" structureRef="java.lang.String"/>
<bpmn2:message id="_2_InMessage" itemRef="_2_InMessageType"
name="_2_InMessage"/>
- <bpmn2:interface id="_2_ServiceInterface" name="justaname"
implementationRef="SimpleService">
- <bpmn2:operation id="_2_ServiceOperation" implementationRef="hello"
name="hello">
+ <bpmn2:interface id="_2_ServiceInterface" name="justaname"
implementationRef="org.jbpm.bpmn2.services.Interface1">
+ <bpmn2:operation id="_2_ServiceOperation" implementationRef="operation1"
name="operation1">
<bpmn2:inMessageRef>_2_InMessage</bpmn2:inMessageRef>
</bpmn2:operation>
</bpmn2:interface>
- <bpmn2:process id="org.jboss.qa.jbpm.CallWS" tns:version="1"
tns:packageName="defaultPackage" tns:adHoc="false" name="CallWS"
isExecutable="true" processType="Private">
+ <bpmn2:process id="ServiceTaskWebService" tns:version="1"
tns:packageName="org.jbpm.bpmn2.service" tns:adHoc="false" name="CallWS"
isExecutable="true" processType="Private">
<bpmn2:startEvent id="StartEvent_1" name="Start">
<bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
</bpmn2:startEvent>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionServiceProcess-ErrorSignalling.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionServiceProcessErrorSignalling.bpmn2
similarity index 97%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionServiceProcess-ErrorSignalling.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionServiceProcessErrorSignalling.bpmn2
index ee463734de..f2b3d63627 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionServiceProcess-ErrorSignalling.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionServiceProcessErrorSignalling.bpmn2
@@ -49,7 +49,7 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcess"
name="Service Process" >
+ <process processType="Private" isExecutable="true"
id="ExceptionServiceProcessErrorSignalling" name="Service Process"
tns:packageName="org.jbpm.bpmn2.service">
<!-- process variables -->
<property id="serviceInputItem" itemSubjectRef="_stringItem"/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionServiceProcess-Signalling.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionServiceProcessSignalling.bpmn2
similarity index 96%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionServiceProcess-Signalling.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionServiceProcessSignalling.bpmn2
index a19dc5623a..aa3663715a 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionServiceProcess-Signalling.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionServiceProcessSignalling.bpmn2
@@ -49,7 +49,9 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcess"
name="Service Process" >
+ <process processType="Private" isExecutable="true"
id="ExceptionServiceProcessSignalling"
+ tns:packageName="org.jbpm.bpmn2.subprocess"
+ name="Service Process" >
<!-- process variables -->
<property id="serviceInputItem" itemSubjectRef="_stringItem"/>
diff --git
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionThrowingServiceProcess.bpmn2
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionThrowingServiceProcess.bpmn2
similarity index 95%
rename from
jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionThrowingServiceProcess.bpmn2
rename to
jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionThrowingServiceProcess.bpmn2
index 25d3e932c0..9e07fce205 100755
---
a/jbpm/jbpm-tests/src/test/resources/BPMN2-ExceptionThrowingServiceProcess.bpmn2
+++
b/jbpm/jbpm-tests/src/test/bpmn/org/jbpm/bpmn2/subprocess/BPMN2-ExceptionThrowingServiceProcess.bpmn2
@@ -40,7 +40,7 @@
</operation>
</interface>
- <process processType="Private" isExecutable="true" id="ServiceProcess"
name="Service Process" >
+ <process processType="Private" isExecutable="true"
id="ExceptionThrowingServiceProcess"
tns:packageName="org.jbpm.bpmn2.subprocess" >
<!-- process variables -->
<property id="serviceInputItem" itemSubjectRef="_sItem"/>
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
index df4988a093..2578981db0 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
@@ -59,18 +59,23 @@ import org.jbpm.bpmn2.flow.XORSameTargetModel;
import org.jbpm.bpmn2.flow.XORSameTargetProcess;
import org.jbpm.bpmn2.handler.ReceiveTaskHandler;
import org.jbpm.bpmn2.handler.SendTaskHandler;
-import org.jbpm.bpmn2.handler.ServiceTaskHandler;
import org.jbpm.bpmn2.objects.Account;
import org.jbpm.bpmn2.objects.Address;
import org.jbpm.bpmn2.objects.HelloService;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
+import org.jbpm.bpmn2.service.ServiceProcessModel;
+import org.jbpm.bpmn2.service.ServiceProcessProcess;
import
org.jbpm.bpmn2.service.ServiceProcessWithMvelCollectionTransformationModel;
import
org.jbpm.bpmn2.service.ServiceProcessWithMvelCollectionTransformationProcess;
import org.jbpm.bpmn2.service.ServiceProcessWithMvelJaxbTransformationModel;
import org.jbpm.bpmn2.service.ServiceProcessWithMvelJaxbTransformationProcess;
import org.jbpm.bpmn2.service.ServiceProcessWithMvelTransformationModel;
import org.jbpm.bpmn2.service.ServiceProcessWithMvelTransformationProcess;
+import org.jbpm.bpmn2.service.ServiceTaskModel;
+import org.jbpm.bpmn2.service.ServiceTaskProcess;
+import org.jbpm.bpmn2.service.ServiceTaskWebServiceModel;
+import org.jbpm.bpmn2.service.ServiceTaskWebServiceProcess;
import org.jbpm.bpmn2.subprocess.AssignmentProcessModel;
import org.jbpm.bpmn2.subprocess.AssignmentProcessProcess;
import org.jbpm.bpmn2.subprocess.AssignmentSubProcessModel;
@@ -154,13 +159,14 @@ import org.kie.kogito.Application;
import org.kie.kogito.auth.SecurityPolicy;
import org.kie.kogito.handlers.HelloService_hello__2_Handler;
import org.kie.kogito.handlers.HelloService_validate__2_Handler;
+import
org.kie.kogito.handlers.Interface1_operation1_EAID_3344916D_2BAC_4ab6_92D4_F739156D0933_Handler;
+import org.kie.kogito.handlers.Interface1_operation1_ServiceTask_2_Handler;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoNode;
import org.kie.kogito.internal.process.runtime.KogitoNodeInstance;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import org.kie.kogito.internal.process.runtime.KogitoProcessRuntime;
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
-import org.kie.kogito.internal.process.runtime.KogitoWorkItemManager;
import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcessInstance;
import org.kie.kogito.process.ProcessInstance;
import org.kie.kogito.process.workitems.InternalKogitoWorkItem;
@@ -811,63 +817,32 @@ public class ActivityTest extends JbpmBpmn2TestCase {
@Test
public void testServiceTask() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceProcess.bpmn2");
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task",
- new ServiceTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("s", "john");
- KogitoWorkflowProcessInstance processInstance =
(KogitoWorkflowProcessInstance) kruntime
- .startProcess("ServiceProcess", params);
- assertProcessInstanceFinished(processInstance, kruntime);
- assertThat(processInstance.getVariable("s")).isEqualTo("Hello john!");
- }
-
- @Test
- public void testServiceTaskWithAccessToWorkItemInfo() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceProcess.bpmn2");
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.objects.HelloService_hello__2_Handler", new
HelloService_hello__2_Handler());
+ org.kie.kogito.process.Process<ServiceProcessModel> definition =
ServiceProcessProcess.newProcess(app);
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task",
- new ServiceTaskHandler() {
+ ServiceProcessModel model = definition.createModel();
+ model.setS("john");
+ org.kie.kogito.process.ProcessInstance<ServiceProcessModel> instance =
definition.createInstance(model);
+ instance.start();
- @Override
- public void
executeWorkItem(org.kie.kogito.internal.process.runtime.KogitoWorkItem
workItem, KogitoWorkItemManager manager) {
- assertThat(workItem.getProcessInstance()).isNotNull();
- assertThat(workItem.getNodeInstance()).isNotNull();
- super.executeWorkItem(workItem, manager);
- }
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(instance.variables().getS()).isEqualTo("Hello john!");
- });
- Map<String, Object> params = new HashMap<>();
- params.put("s", "john");
- KogitoWorkflowProcessInstance processInstance =
(KogitoWorkflowProcessInstance) kruntime.startProcess("ServiceProcess", params);
- assertProcessInstanceFinished(processInstance, kruntime);
- assertThat(processInstance.getVariable("s")).isEqualTo("Hello john!");
}
@Test
public void testServiceTaskNoInterfaceName() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ServiceTask-web-service.bpmn2");
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.services.Interface1_operation1_ServiceTask_2_Handler", new
Interface1_operation1_ServiceTask_2_Handler());
+ org.kie.kogito.process.Process<ServiceTaskWebServiceModel> definition
= ServiceTaskWebServiceProcess.newProcess(app);
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task",
- new SystemOutWorkItemHandler() {
+ ServiceTaskWebServiceModel model = definition.createModel();
+ org.kie.kogito.process.ProcessInstance<ServiceTaskWebServiceModel>
instance = definition.createInstance(model);
+ instance.start();
- @Override
- public void executeWorkItem(KogitoWorkItem workItem,
KogitoWorkItemManager manager) {
-
assertThat(workItem.getParameter("Interface")).isEqualTo("SimpleService");
-
assertThat(workItem.getParameter("Operation")).isEqualTo("hello");
-
assertThat(workItem.getParameter("ParameterType")).isEqualTo("java.lang.String");
-
assertThat(workItem.getParameter("implementation")).isEqualTo("##WebService");
-
assertThat(workItem.getParameter("operationImplementationRef")).isEqualTo("hello");
-
assertThat(workItem.getParameter("interfaceImplementationRef")).isEqualTo("SimpleService");
- super.executeWorkItem(workItem, manager);
- }
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
- });
- Map<String, Object> params = new HashMap<>();
- KogitoWorkflowProcessInstance processInstance =
(KogitoWorkflowProcessInstance) kruntime
- .startProcess("org.jboss.qa.jbpm.CallWS", params);
- assertProcessInstanceFinished(processInstance, kruntime);
}
@Test
@@ -1131,17 +1106,16 @@ public class ActivityTest extends JbpmBpmn2TestCase {
assertThatExceptionOfType(RuntimeException.class).isThrownBy(() ->
createKogitoProcessRuntime("BPMN2-InvalidServiceProcess.bpmn2"));
}
- @Test // JBPM-3951
+ @Test
public void testServiceTaskInterface() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceTask.bpmn2");
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task", new SystemOutWorkItemHandler());
- Map<String, Object> params = new HashMap<>();
-
- KogitoWorkflowProcessInstance processInstance =
(KogitoWorkflowProcessInstance) kruntime
- .startProcess("EAID_DP000000_23D3_4e7e_80FE_6D8C0AF83CAA",
params);
- assertProcessInstanceFinished(processInstance, kruntime);
+ Application app = ProcessTestHelper.newApplication();
+
Interface1_operation1_EAID_3344916D_2BAC_4ab6_92D4_F739156D0933_Handler handler
= new Interface1_operation1_EAID_3344916D_2BAC_4ab6_92D4_F739156D0933_Handler();
+ ProcessTestHelper.registerHandler(app, handler.getName(), handler);
+ org.kie.kogito.process.Process<ServiceTaskModel> definition =
ServiceTaskProcess.newProcess(app);
+ org.kie.kogito.process.ProcessInstance<ServiceTaskModel> instance =
definition.createInstance(definition.createModel());
+ instance.start();
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
}
@SuppressWarnings("unchecked")
diff --git a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ErrorEventTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ErrorEventTest.java
index 48374b5bd7..98611a1f17 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ErrorEventTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ErrorEventTest.java
@@ -38,9 +38,14 @@ import
org.jbpm.bpmn2.event.BoundaryErrorEventSubProcessExceptionMappingModel;
import
org.jbpm.bpmn2.event.BoundaryErrorEventSubProcessExceptionMappingProcess;
import org.jbpm.bpmn2.handler.SignallingTaskHandlerDecorator;
import org.jbpm.bpmn2.objects.ExceptionOnPurposeHandler;
+import org.jbpm.bpmn2.objects.ExceptionService;
import org.jbpm.bpmn2.objects.MyError;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
+import org.jbpm.bpmn2.service.ExceptionServiceProcessErrorSignallingModel;
+import org.jbpm.bpmn2.service.ExceptionServiceProcessErrorSignallingProcess;
+import org.jbpm.bpmn2.subprocess.ExceptionServiceProcessSignallingModel;
+import org.jbpm.bpmn2.subprocess.ExceptionServiceProcessSignallingProcess;
import org.jbpm.process.instance.event.listeners.RuleAwareProcessEventListener;
import org.jbpm.process.instance.impl.demo.DoNothingWorkItemHandler;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
@@ -52,6 +57,9 @@ import org.junit.jupiter.api.Test;
import org.kie.api.event.process.ProcessNodeLeftEvent;
import org.kie.kogito.Application;
import
org.kie.kogito.handlers.AlwaysThrowingComponent_throwException__8DA0CD88_0714_43C1_B492_A70FADE42361_Handler;
+import org.kie.kogito.handlers.ExceptionService_handleException__X_2_Handler;
+import org.kie.kogito.handlers.ExceptionService_throwException__2_Handler;
+import org.kie.kogito.handlers.ExceptionService_throwException__3_Handler;
import
org.kie.kogito.handlers.HelloService_helloException_ServiceTask_2_Handler;
import
org.kie.kogito.handlers.LoggingComponent_logException__E5B0E78B_0112_42F4_89FF_0DCC4FCB6BCD_Handler;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
@@ -331,16 +339,53 @@ public class ErrorEventTest extends JbpmBpmn2TestCase {
@Test
public void testErrorSignallingExceptionServiceTask() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExceptionServiceProcess-ErrorSignalling.bpmn2");
+ String input = "this is my service input";
-
StandaloneBPMNProcessTest.runTestErrorSignallingExceptionServiceTask(kruntime);
+ Application app = ProcessTestHelper.newApplication();
+ SignallingTaskHandlerDecorator signallingTaskWrapper = new
SignallingTaskHandlerDecorator(ExceptionService_throwException__3_Handler.class,
"Error-code");
+
signallingTaskWrapper.setWorkItemExceptionParameterName(ExceptionService.exceptionParameterName);
+ Object[] caughtEventObjectHolder = new Object[1];
+ caughtEventObjectHolder[0] = null;
+ ExceptionService.setCaughtEventObjectHolder(caughtEventObjectHolder);
+
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.objects.ExceptionService_throwException__3_Handler",
signallingTaskWrapper);
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.objects.ExceptionService_handleException__X_2_Handler", new
ExceptionService_handleException__X_2_Handler());
+
org.kie.kogito.process.Process<ExceptionServiceProcessErrorSignallingModel>
definition = ExceptionServiceProcessErrorSignallingProcess.newProcess(app);
+
+ ExceptionServiceProcessErrorSignallingModel model =
definition.createModel();
+ model.setServiceInputItem(input);
+
org.kie.kogito.process.ProcessInstance<ExceptionServiceProcessErrorSignallingModel>
instance = definition.createInstance(model);
+ instance.start();
+
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.emptyMap());
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ABORTED);
+ assertThat(caughtEventObjectHolder[0] != null &&
caughtEventObjectHolder[0] instanceof KogitoWorkItem).withFailMessage("Event
was not passed to Event Subprocess.").isTrue();
}
@Test
public void testSignallingExceptionServiceTask() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExceptionServiceProcess-Signalling.bpmn2");
+ String input = "this is my service input";
+
+ SignallingTaskHandlerDecorator signallingTaskWrapper = new
SignallingTaskHandlerDecorator(ExceptionService_throwException__2_Handler.class,
"exception-signal");
+
signallingTaskWrapper.setWorkItemExceptionParameterName(ExceptionService.exceptionParameterName);
+ Object[] caughtEventObjectHolder = new Object[1];
+ caughtEventObjectHolder[0] = null;
+ ExceptionService.setCaughtEventObjectHolder(caughtEventObjectHolder);
+
+ Application app = ProcessTestHelper.newApplication();
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.objects.ExceptionService_throwException__2_Handler",
signallingTaskWrapper);
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.objects.ExceptionService_handleException__X_2_Handler", new
ExceptionService_handleException__X_2_Handler());
+ org.kie.kogito.process.Process<ExceptionServiceProcessSignallingModel>
definition = ExceptionServiceProcessSignallingProcess.newProcess(app);
+
+ ExceptionServiceProcessSignallingModel model =
definition.createModel();
+ model.setServiceInputItem(input);
+
org.kie.kogito.process.ProcessInstance<ExceptionServiceProcessSignallingModel>
instance = definition.createInstance(model);
+ instance.start();
+
+ ProcessTestHelper.completeWorkItem(instance, "john",
Collections.emptyMap());
+
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
+ assertThat(caughtEventObjectHolder[0] != null &&
caughtEventObjectHolder[0] instanceof KogitoWorkItem).withFailMessage("Event
was not passed to Event Subprocess.").isTrue();
-
StandaloneBPMNProcessTest.runTestSignallingExceptionServiceTask(kruntime);
}
@Test
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
index 3ea81f5e6f..6cf4149454 100755
--- a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
+++ b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/IntermediateEventTest.java
@@ -1632,12 +1632,6 @@ public class IntermediateEventTest extends
JbpmBpmn2TestCase {
}
- @Test
- public void testSignallingExceptionServiceTask() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExceptionServiceProcess-Signalling.bpmn2");
-
StandaloneBPMNProcessTest.runTestSignallingExceptionServiceTask(kruntime);
- }
-
@Test
public void testSignalBoundaryEventOnSubprocessTakingDifferentPaths()
throws Exception {
kruntime = createKogitoProcessRuntime(
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
index 32c2874cb4..640515b1e1 100755
---
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
+++
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
@@ -40,11 +40,8 @@ import org.jbpm.bpmn2.adhoc.AdHocTerminateEndEventModel;
import org.jbpm.bpmn2.adhoc.AdHocTerminateEndEventProcess;
import org.jbpm.bpmn2.handler.ReceiveTaskHandler;
import org.jbpm.bpmn2.handler.SendTaskHandler;
-import org.jbpm.bpmn2.handler.ServiceTaskHandler;
-import org.jbpm.bpmn2.handler.SignallingTaskHandlerDecorator;
import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageModel;
import org.jbpm.bpmn2.intermediate.IntermediateThrowEventMessageProcess;
-import org.jbpm.bpmn2.objects.ExceptionService;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
import org.jbpm.process.instance.impl.demo.DoNothingWorkItemHandler;
@@ -63,7 +60,6 @@ import org.kie.kogito.Application;
import org.kie.kogito.event.impl.MessageProducer;
import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
-import org.kie.kogito.internal.process.runtime.KogitoProcessRuntime;
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcessInstance;
import org.w3c.dom.Document;
@@ -651,18 +647,6 @@ public class StandaloneBPMNProcessTest extends
JbpmBpmn2TestCase {
assertProcessInstanceAborted(processInstance.getStringId(), kruntime);
}
- @Test
- public void testServiceTask() throws Exception {
- kruntime = createKogitoProcessRuntime("BPMN2-ServiceProcess.bpmn2");
-
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task", new ServiceTaskHandler());
- Map<String, Object> params = new HashMap<>();
- params.put("s", "john");
- KogitoWorkflowProcessInstance processInstance =
(KogitoWorkflowProcessInstance) kruntime.startProcess("ServiceProcess", params);
- assertProcessInstanceCompleted(processInstance.getStringId(),
kruntime);
- assertThat(processInstance.getVariable("s")).isEqualTo("Hello john!");
- }
-
@Test
public void testSendTask() throws Exception {
kruntime =
createKogitoProcessRuntime("org/jbpm/bpmn2/task/BPMN2-SendTask.bpmn2");
@@ -793,60 +777,6 @@ public class StandaloneBPMNProcessTest extends
JbpmBpmn2TestCase {
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
}
- @Test
- public void testErrorSignallingExceptionServiceTask() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExceptionServiceProcess-ErrorSignalling.bpmn2");
-
- runTestErrorSignallingExceptionServiceTask(kruntime);
- }
-
- public static void
runTestErrorSignallingExceptionServiceTask(KogitoProcessRuntime kruntime)
throws Exception {
-
- // Setup
- String eventType = "Error-code";
- SignallingTaskHandlerDecorator signallingTaskWrapper = new
SignallingTaskHandlerDecorator(ServiceTaskHandler.class, eventType);
-
signallingTaskWrapper.setWorkItemExceptionParameterName(ExceptionService.exceptionParameterName);
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task", signallingTaskWrapper);
-
- Object[] caughtEventObjectHolder = new Object[1];
- caughtEventObjectHolder[0] = null;
- ExceptionService.setCaughtEventObjectHolder(caughtEventObjectHolder);
-
- TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human
Task", workItemHandler);
- // Start process
- Map<String, Object> params = new HashMap<>();
- String input = "this is my service input";
- params.put("serviceInputItem", input);
- KogitoProcessInstance processInstance =
kruntime.startProcess("ServiceProcess", params);
-
-
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
-
- KogitoWorkItem workItem = workItemHandler.getWorkItem();
- assertThat(workItem).isNotNull();
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(),
null);
- // Check that event was passed to Event SubProcess (and grabbed by
WorkItemHandler);
- assertThat(caughtEventObjectHolder[0] != null &&
caughtEventObjectHolder[0] instanceof KogitoWorkItem).withFailMessage("Event
was not passed to Event Subprocess.").isTrue();
- workItem = (KogitoWorkItem) caughtEventObjectHolder[0];
- Object throwObj =
workItem.getParameter(ExceptionService.exceptionParameterName);
- assertThat(throwObj).withFailMessage("KogitoWorkItem doesn't contain
Throwable.").isInstanceOf(Throwable.class);
- assertThat(((Throwable)
throwObj).getMessage()).withFailMessage("Exception message does not match
service input.").endsWith(input);
-
- // Complete process
- processInstance =
kruntime.getProcessInstance(processInstance.getStringId());
- assertThat(processInstance == null || processInstance.getState() ==
KogitoProcessInstance.STATE_ABORTED).withFailMessage("Process instance has not
been aborted.").isTrue();
-
- }
-
- @Test
- public void testSignallingExceptionServiceTask() throws Exception {
- // dump/reread functionality seems to work for this test
- // .. but I'm pretty sure that's more coincidence than design (mriet,
2013-03-06)
- kruntime =
createKogitoProcessRuntime("BPMN2-ExceptionServiceProcess-Signalling.bpmn2");
-
- runTestSignallingExceptionServiceTask(kruntime);
- }
-
@Test
public void testXXEProcessVulnerability() throws Exception {
Resource processResource =
ResourceFactory.newClassPathResource("xxe-protection/BPMN2-XXE-Process.bpmn2");
@@ -898,38 +828,4 @@ public class StandaloneBPMNProcessTest extends
JbpmBpmn2TestCase {
assertThat(processInstance).isNotNull();
}
- public static void
runTestSignallingExceptionServiceTask(KogitoProcessRuntime kruntime) throws
Exception {
-
- // Setup
- String eventType = "exception-signal";
- SignallingTaskHandlerDecorator signallingTaskWrapper = new
SignallingTaskHandlerDecorator(ServiceTaskHandler.class, eventType);
-
signallingTaskWrapper.setWorkItemExceptionParameterName(ExceptionService.exceptionParameterName);
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task", signallingTaskWrapper);
-
- Object[] caughtEventObjectHolder = new Object[1];
- caughtEventObjectHolder[0] = null;
- ExceptionService.setCaughtEventObjectHolder(caughtEventObjectHolder);
-
- // Start process
- Map<String, Object> params = new HashMap<>();
- String input = "this is my service input";
- params.put("serviceInputItem", input);
- KogitoProcessInstance processInstance =
kruntime.startProcess("ServiceProcess", params);
-
- // Check that event was passed to Event SubProcess (and grabbed by
WorkItemHandler);
- assertThat(caughtEventObjectHolder[0] != null &&
caughtEventObjectHolder[0] instanceof KogitoWorkItem).withFailMessage("Event
was not passed to Event Subprocess.").isTrue();
- KogitoWorkItem workItem = (KogitoWorkItem) caughtEventObjectHolder[0];
- Object throwObj =
workItem.getParameter(ExceptionService.exceptionParameterName);
- assertThat(throwObj).withFailMessage("KogitoWorkItem doesn't contain
Throwable.").isInstanceOf(Throwable.class);
- assertThat(((Throwable)
throwObj).getMessage()).withFailMessage("Exception message does not match
service input.").endsWith(input);
-
- // Complete process
- assertThat(processInstance.getState()).withFailMessage("Process
instance is not active.").isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
-
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(),
null);
- processInstance =
kruntime.getProcessInstance(processInstance.getStringId());
- if (processInstance != null) {
- assertThat(processInstance.getState()).withFailMessage("Process
instance is not completed.").isEqualTo(KogitoProcessInstance.STATE_COMPLETED);
- } // otherwise, persistence use => processInstance == null => process
is completed
- }
-
}
diff --git
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerWrapperTest.java
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerWrapperTest.java
index d830287b1b..9668f485b0 100755
---
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerWrapperTest.java
+++
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/handler/LoggingTaskHandlerWrapperTest.java
@@ -19,31 +19,47 @@
package org.jbpm.bpmn2.handler;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import org.jbpm.bpmn2.JbpmBpmn2TestCase;
import org.jbpm.bpmn2.handler.LoggingTaskHandlerDecorator.InputParameter;
+import org.jbpm.bpmn2.subprocess.ExceptionThrowingServiceProcessModel;
+import org.jbpm.bpmn2.subprocess.ExceptionThrowingServiceProcessProcess;
+import org.jbpm.test.utils.ProcessTestHelper;
import org.junit.jupiter.api.Test;
+import org.kie.kogito.Application;
+import org.kie.kogito.handlers.ExceptionService_throwException__2_Handler;
+import org.slf4j.LoggerFactory;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.read.ListAppender;
import static org.assertj.core.api.Assertions.assertThat;
-public class LoggingTaskHandlerWrapperTest extends JbpmBpmn2TestCase {
+public class LoggingTaskHandlerWrapperTest {
@Test
public void testLimitExceptionInfoList() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExceptionThrowingServiceProcess.bpmn2");
+ Application app = ProcessTestHelper.newApplication();
- LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new
LoggingTaskHandlerDecorator(ServiceTaskHandler.class, 2);
- loggingTaskHandlerWrapper.setPrintStackTrace(false);
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task", loggingTaskHandlerWrapper);
+ LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new
LoggingTaskHandlerDecorator(ExceptionService_throwException__2_Handler.class,
2);
+
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.objects.ExceptionService_throwException__2_Handler",
loggingTaskHandlerWrapper);
+
+ org.kie.kogito.process.Process<ExceptionThrowingServiceProcessModel>
definition = ExceptionThrowingServiceProcessProcess.newProcess(app);
+ ExceptionThrowingServiceProcessModel model = definition.createModel();
+ model.setServiceInputItem("exception message");
+
org.kie.kogito.process.ProcessInstance<ExceptionThrowingServiceProcessModel>
instance1 = definition.createInstance(model);
+ instance1.start();
+
assertThat(instance1.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
- Map<String, Object> params = new HashMap<>();
- params.put("serviceInputItem", "exception message");
- kruntime.startProcess("ServiceProcess", params);
- kruntime.startProcess("ServiceProcess", params);
- kruntime.startProcess("ServiceProcess", params);
+
org.kie.kogito.process.ProcessInstance<ExceptionThrowingServiceProcessModel>
instance2 = definition.createInstance(model);
+ instance2.start();
+
assertThat(instance2.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+
org.kie.kogito.process.ProcessInstance<ExceptionThrowingServiceProcessModel>
instance3 = definition.createInstance(model);
+ instance3.start();
+
assertThat(instance3.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
int size =
loggingTaskHandlerWrapper.getWorkItemExceptionInfoList().size();
assertThat(size).as("WorkItemExceptionInfoList is too large: " +
size).isEqualTo(2);
@@ -51,26 +67,41 @@ public class LoggingTaskHandlerWrapperTest extends
JbpmBpmn2TestCase {
@Test
public void testFormatLoggingError() throws Exception {
- kruntime =
createKogitoProcessRuntime("BPMN2-ExceptionThrowingServiceProcess.bpmn2");
+ ListAppender<ILoggingEvent> logAppender = new ListAppender<>();
+ LoggerContext loggerContext = (LoggerContext)
LoggerFactory.getILoggerFactory();
+ logAppender.setContext(loggerContext);
+ ch.qos.logback.classic.Logger decoratorLogger =
(ch.qos.logback.classic.Logger)
LoggerFactory.getLogger(LoggingTaskHandlerDecorator.class);
+ decoratorLogger.addAppender(logAppender);
+
+ logAppender.start();
+
+ Application app = ProcessTestHelper.newApplication();
- LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new
LoggingTaskHandlerDecorator(ServiceTaskHandler.class, 2);
+ LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new
LoggingTaskHandlerDecorator(ExceptionService_throwException__2_Handler.class,
2);
+ LoggingTaskHandlerDecorator.setLogger(decoratorLogger);
loggingTaskHandlerWrapper.setLoggedMessageFormat("{0} - {1} - {2} -
{3}");
List<InputParameter> inputParameters = new
ArrayList<LoggingTaskHandlerDecorator.InputParameter>();
inputParameters.add(InputParameter.EXCEPTION_CLASS);
inputParameters.add(InputParameter.WORK_ITEM_ID);
inputParameters.add(InputParameter.WORK_ITEM_NAME);
inputParameters.add(InputParameter.PROCESS_INSTANCE_ID);
-
loggingTaskHandlerWrapper.setLoggedMessageInput(inputParameters);
-
loggingTaskHandlerWrapper.setPrintStackTrace(false);
- kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Service
Task", loggingTaskHandlerWrapper);
- Map<String, Object> params = new HashMap<>();
- params.put("serviceInputItem", "exception message");
- kruntime.startProcess("ServiceProcess", params);
- kruntime.startProcess("ServiceProcess", params);
- kruntime.startProcess("ServiceProcess", params);
+ ProcessTestHelper.registerHandler(app,
"org.jbpm.bpmn2.objects.ExceptionService_throwException__2_Handler",
loggingTaskHandlerWrapper);
+
+ org.kie.kogito.process.Process<ExceptionThrowingServiceProcessModel>
definition = ExceptionThrowingServiceProcessProcess.newProcess(app);
+ ExceptionThrowingServiceProcessModel model = definition.createModel();
+ model.setServiceInputItem("exception message");
+
org.kie.kogito.process.ProcessInstance<ExceptionThrowingServiceProcessModel>
instance1 = definition.createInstance(model);
+ instance1.start();
+
assertThat(instance1.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
+
+ String wid =
loggingTaskHandlerWrapper.getWorkItemExceptionInfoList().get(0).getWorkItemId();
+
assertThat(logAppender.list.get(0).getFormattedMessage()).isEqualTo("RuntimeException
- " + wid + " -
org.jbpm.bpmn2.objects.ExceptionService_throwException__2_Handler - " +
instance1.id());
+
+ decoratorLogger.detachAppender(logAppender);
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]