From d0aedfd4aed585fca6a6dfb01cbc820e71040734 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Tue, 22 Oct 2024 12:02:54 +0200 Subject: [PATCH] [incubator-kie-issues-1556] Unify task parameters in jbpm-flow --- .../org/jbpm/bpmn2/xml/UserTaskHandler.java | 19 +----------------- .../canonical/WorkItemModelMetaData.java | 12 ++++------- .../workflow/core/node/HumanTaskNode.java | 20 +++++++++++++++++++ .../instance/node/HumanTaskNodeInstance.java | 11 +--------- jbpm/jbpm-usertask-workitem/pom.xml | 4 ++++ .../UserTaskKogitoWorkItemHandler.java | 3 ++- 6 files changed, 32 insertions(+), 37 deletions(-) diff --git a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/UserTaskHandler.java b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/UserTaskHandler.java index f325438516a..9b6b9e6c94d 100644 --- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/UserTaskHandler.java +++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/UserTaskHandler.java @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Set; import org.jbpm.compiler.xml.Parser; import org.jbpm.process.core.Work; @@ -42,22 +41,6 @@ public Class generateNodeFor() { return HumanTaskNode.class; } - private static final Set taskParameters = Set.of( - "NotStartedNotify", - "NotCompletedNotify", - "NotCompletedReassign", - "NotStartedReassign", - "Description", - "Comment", - "ActorId", - "GroupId", - "Priority", - "Skippable", - "Content", - "ExcludedOwnerId", - "BusinessAdministratorId", - "BusinessAdministratorGroupId"); - @Override protected Node handleNode(final Node node, final Element element, final String uri, final String localName, final Parser parser) throws SAXException { @@ -66,7 +49,7 @@ protected Node handleNode(final Node node, final Element element, final String u Work work = humanTaskNode.getWork(); work.setName("Human Task"); - taskParameters.forEach(p -> setParameter(work, p, humanTaskNode.getIoSpecification().getDataInputAssociation())); + HumanTaskNode.TASK_PARAMETERS.forEach(p -> setParameter(work, p, humanTaskNode.getIoSpecification().getDataInputAssociation())); List owners = new ArrayList<>(); org.w3c.dom.Node xmlNode = element.getFirstChild(); diff --git a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemModelMetaData.java b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemModelMetaData.java index 5ae74187907..e3f20ed8735 100644 --- a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemModelMetaData.java +++ b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemModelMetaData.java @@ -18,9 +18,7 @@ */ package org.jbpm.compiler.canonical; -import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; @@ -30,6 +28,7 @@ import org.jbpm.process.core.datatype.DataType; import org.jbpm.process.core.datatype.DataTypeResolver; import org.jbpm.util.PatternConstants; +import org.jbpm.workflow.core.node.HumanTaskNode; import org.jbpm.workflow.core.node.WorkItemNode; import org.kie.api.definition.process.WorkflowElementIdentifier; import org.kie.kogito.UserTask; @@ -79,9 +78,6 @@ public class WorkItemModelMetaData { private static final String WORK_ITEM = "workItem"; private static final String PARAMS = "params"; - protected static final List INTERNAL_FIELDS = Arrays.asList(TASK_NAME, "NodeName", "ActorId", "GroupId", "Priority", "Comment", "Skippable", "Content", "Locale", - "NotStartedNotify", "NotCompletedNotify", "NotCompletedReassign", "NotStartedReassign"); - private final String packageName; private final VariableScope processVariableScope; @@ -192,7 +188,7 @@ private CompilationUnit compilationUnitInput() { // map is task input -> context variable / process variable Map inputTypes = workItemNode.getIoSpecification().getInputTypes(); for (Entry entry : workItemNode.getIoSpecification().getInputMapping().entrySet()) { - if (INTERNAL_FIELDS.contains(entry.getKey())) { + if (HumanTaskNode.TASK_PARAMETERS.contains(entry.getKey())) { continue; } @@ -237,7 +233,7 @@ private CompilationUnit compilationUnitInput() { for (Entry entry : workItemNode.getWork().getParameters().entrySet()) { - if (entry.getValue() == null || INTERNAL_FIELDS.contains(entry.getKey())) { + if (entry.getValue() == null || HumanTaskNode.TASK_PARAMETERS.contains(entry.getKey())) { continue; } @@ -304,7 +300,7 @@ private CompilationUnit compilationUnitOutput() { // map is task output -> context variable / process variable Map outputTypes = workItemNode.getIoSpecification().getOutputTypes(); for (Entry entry : workItemNode.getIoSpecification().getOutputMappingBySources().entrySet()) { - if (entry.getValue() == null || INTERNAL_FIELDS.contains(entry.getKey())) { + if (entry.getValue() == null || HumanTaskNode.TASK_PARAMETERS.contains(entry.getKey())) { continue; } diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java index d54992d9fe7..872276850ae 100755 --- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java +++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/node/HumanTaskNode.java @@ -33,6 +33,26 @@ public class HumanTaskNode extends WorkItemNode { private String swimlane; + public static final Set TASK_PARAMETERS = Set.of( + Work.PARAMETER_UNIQUE_TASK_ID, + "TaskName", + "NodeName", + "NotStartedNotify", + "NotCompletedNotify", + "NotCompletedReassign", + "NotStartedReassign", + "Description", + "Comment", + "ActorId", + "GroupId", + "Priority", + "Skippable", + "Content", + "Locale", + "ExcludedOwnerId", + "BusinessAdministratorId", + "BusinessAdministratorGroupId"); + public HumanTaskNode() { Work work = new WorkImpl(); work.setName("Human Task"); diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/HumanTaskNodeInstance.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/HumanTaskNodeInstance.java index 3dfd858dcb4..6a4616e20a2 100755 --- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/HumanTaskNodeInstance.java +++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/HumanTaskNodeInstance.java @@ -29,18 +29,9 @@ public class HumanTaskNodeInstance extends WorkItemNodeInstance { private static final long serialVersionUID = 510l; - private static final String NODE_NAME = "NodeName"; - private static final String DESCRIPTION = "Description"; - private static final String PRIORITY = "Priority"; - private static final String TASK_NAME = "TaskName"; private String separator = System.getProperty("org.jbpm.ht.user.separator", ","); - - private static final String ACTUAL_OWNER = "ActualOwner"; private static final String ACTOR_ID = "ActorId"; - private static final String GROUP_ID = "GroupId"; - private static final String BUSINESSADMINISTRATOR_ID = "BusinessAdministratorId"; - private static final String BUSINESSADMINISTRATOR_GROUP_ID = "BusinessAdministratorGroupId"; - private static final String EXCLUDED_OWNER_ID = "ExcludedOwnerId"; + private static final String WORK_ITEM_TRANSITION = "workItemTransition"; private transient SwimlaneContextInstance swimlaneContextInstance; diff --git a/jbpm/jbpm-usertask-workitem/pom.xml b/jbpm/jbpm-usertask-workitem/pom.xml index 871c19ffccb..f00c773f32a 100644 --- a/jbpm/jbpm-usertask-workitem/pom.xml +++ b/jbpm/jbpm-usertask-workitem/pom.xml @@ -25,6 +25,10 @@ org.kie.kogito kogito-api + + org.kie.kogito + jbpm-flow + org.kie.kogito jbpm-usertask diff --git a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java index 78c5b21db18..71d34053787 100644 --- a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java +++ b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java @@ -22,6 +22,7 @@ import java.util.Optional; import java.util.Set; +import org.jbpm.workflow.core.node.HumanTaskNode; import org.kie.kogito.Application; import org.kie.kogito.auth.IdentityProviders; import org.kie.kogito.internal.process.workitem.KogitoWorkItem; @@ -88,7 +89,7 @@ public Optional activateWorkItemHandler(KogitoWorkItemManage userTask.instances().create(instance); instance.fireInitialStateChange(); - workItem.getParameters().forEach(instance::setInput); + workItem.getParameters().entrySet().stream().filter(e -> !HumanTaskNode.TASK_PARAMETERS.contains(e.getKey())).forEach(e -> instance.setInput(e.getKey(), e.getValue())); ofNullable(workItem.getParameters().get(ACTOR_ID)).map(String.class::cast).map(this::toSet).ifPresent(instance::setPotentialUsers); ofNullable(workItem.getParameters().get(GROUP_ID)).map(String.class::cast).map(this::toSet).ifPresent(instance::setPotentialGroups);