This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 26f2f2c [CAMEL-16468] camel-jbpm - Expose org.apache.camel.component.jbpm.JBPMProducer.Operation (#5621) 26f2f2c is described below commit 26f2f2c9cfe2446c642d5669b289fe1e7c3bdbfe Author: Enrique González Martínez <egonz...@redhat.com> AuthorDate: Sat Jun 5 07:32:43 2021 +0200 [CAMEL-16468] camel-jbpm - Expose org.apache.camel.component.jbpm.JBPMProducer.Operation (#5621) extract the enum JBPMOperation to public and extract the operation to a proper class --- .../apache/camel/component/jbpm/JBPMOperation.java | 66 +++ .../apache/camel/component/jbpm/JBPMProducer.java | 484 +++++++++++---------- .../camel/component/jbpm/JBPMComponentIT.java | 7 +- 3 files changed, 320 insertions(+), 237 deletions(-) diff --git a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMOperation.java b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMOperation.java new file mode 100644 index 0000000..cd4404f --- /dev/null +++ b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMOperation.java @@ -0,0 +1,66 @@ +/* + * 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.apache.camel.component.jbpm; + +public enum JBPMOperation { + + // PROCESS OPERATIONS + startProcess, + abortProcessInstance, + signalEvent, + getProcessInstance, + getProcessInstances, + + // RULE OPERATIONS + fireAllRules, + getGlobal, + setGlobal, + + // WORK ITEM OPERATIONS + abortWorkItem, + completeWorkItem, + + // TASK OPERATIONS + activateTask, + claimTask, + completeTask, + delegateTask, + exitTask, + failTask, + getAttachment, + getTasksAssignedAsBusinessAdministrator, + getTasksAssignedAsPotentialOwnerByStatus, + getTaskByWorkItem, + getTaskBy, + getTaskContent, + getTasksByProcessInstance, + getTasksByStatusByProcessInstance, + getTasksOwned, + nominateTask, + releaseTask, + resumeTask, + skipTask, + startTask, + stopTask, + suspendTask; + + @Override + public String toString() { + return JBPMConstants.OPERATION + super.toString(); + } +} diff --git a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMProducer.java b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMProducer.java index 33eb1a6..13743d3 100644 --- a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMProducer.java +++ b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMProducer.java @@ -19,6 +19,7 @@ package org.apache.camel.component.jbpm; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -52,33 +53,213 @@ public class JBPMProducer extends DefaultProducer { private JBPMConfiguration configuration; private KieServicesClient kieServicesClient; + private Map<JBPMOperation, JBPMOperationProcessor> operations; + private Map<String, JBPMOperation> operationCachedToLowerOperation; public JBPMProducer(JBPMEndpoint endpoint, KieServicesClient kieServicesClient) { super(endpoint); this.configuration = endpoint.getConfiguration(); this.kieServicesClient = kieServicesClient; + this.operations = new HashMap<>(); + this.operationCachedToLowerOperation = new HashMap<>(); + cacheJBPMOperationToLowerCase(); + initOperationProcessors(); + } + + private void cacheJBPMOperationToLowerCase() { + for (JBPMOperation operation : JBPMOperation.values()) { + operationCachedToLowerOperation.put(operation.toString().toLowerCase(), operation); + } } public void process(Exchange exchange) throws Exception { getOperation(exchange).execute(kieServicesClient, configuration, exchange); } - Operation getOperation(Exchange exchange) { + JBPMOperationProcessor getOperation(Exchange exchange) { String operation = exchange.getIn().getHeader(JBPMConstants.OPERATION, String.class); if (operation == null && configuration.getOperation() != null) { operation = JBPMConstants.OPERATION + configuration.getOperation(); } if (operation == null) { - operation = JBPMConstants.OPERATION + Operation.startProcess; + operation = JBPMConstants.OPERATION + JBPMOperation.startProcess; } LOGGER.trace("Operation: [{}]", operation); - return Operation.valueOf(operation.substring(JBPMConstants.OPERATION.length())); + return operations.get(operationCachedToLowerOperation.get(operation.toLowerCase())); } - enum Operation { + private abstract class JBPMOperationProcessor { + + List<String> getStatuses(JBPMConfiguration configuration, Exchange exchange) { + List<String> statusList = exchange.getIn().getHeader(JBPMConstants.STATUS_LIST, List.class); + if (statusList == null) { + statusList = configuration.getStatuses(); + } + return statusList; + } + + List<String> getEntities(JBPMConfiguration configuration, Exchange exchange) { + List<String> entityList = exchange.getIn().getHeader(JBPMConstants.ENTITY_LIST, List.class); + if (entityList == null) { + entityList = configuration.getEntities(); + } + return entityList; + } + + Long getAttachmentId(JBPMConfiguration configuration, Exchange exchange) { + Long attachmentId = exchange.getIn().getHeader(JBPMConstants.ATTACHMENT_ID, Long.class); + if (attachmentId == null) { + attachmentId = configuration.getAttachmentId(); + } + return attachmentId; + } + + Long getContentId(JBPMConfiguration configuration, Exchange exchange) { + Long contentId = exchange.getIn().getHeader(JBPMConstants.CONTENT_ID, Long.class); + if (contentId == null) { + contentId = configuration.getContentId(); + } + return contentId; + } + + String getTargetUserId(JBPMConfiguration configuration, Exchange exchange) { + String userId = exchange.getIn().getHeader(JBPMConstants.TARGET_USER_ID, String.class); + if (userId == null) { + userId = configuration.getTargetUserId(); + } + return userId; + } + Integer getPage(JBPMConfiguration configuration, Exchange exchange) { + Integer page = exchange.getIn().getHeader(JBPMConstants.RESULT_PAGE, Integer.class); + if (page == null) { + page = configuration.getPage(); + } + return page; + } + + Integer getPageSize(JBPMConfiguration configuration, Exchange exchange) { + Integer pageSize = exchange.getIn().getHeader(JBPMConstants.RESULT_PAGE_SIZE, Integer.class); + if (pageSize == null) { + pageSize = configuration.getPageSize(); + } + return pageSize; + } + + Task getTask(JBPMConfiguration configuration, Exchange exchange) { + Task task = exchange.getIn().getHeader(JBPMConstants.TASK, Task.class); + if (task == null) { + task = configuration.getTask(); + } + return task; + } + + String getUserId(JBPMConfiguration configuration, Exchange exchange) { + String userId = exchange.getIn().getHeader(JBPMConstants.USER_ID, String.class); + if (userId == null) { + userId = configuration.getUserId(); + } + return userId; + } + + Long getTaskId(JBPMConfiguration configuration, Exchange exchange) { + Long taskId = exchange.getIn().getHeader(JBPMConstants.TASK_ID, Long.class); + if (taskId == null) { + taskId = configuration.getTaskId(); + } + return taskId; + } + + Long getWorkItemId(JBPMConfiguration configuration, Exchange exchange) { + Long workItemId = exchange.getIn().getHeader(JBPMConstants.WORK_ITEM_ID, Long.class); + if (workItemId == null) { + workItemId = configuration.getWorkItemId(); + } + return workItemId; + } + + String getIdentifier(JBPMConfiguration configuration, Exchange exchange) { + String identifier = exchange.getIn().getHeader(JBPMConstants.IDENTIFIER, String.class); + if (identifier == null) { + identifier = configuration.getIdentifier(); + } + return identifier; + } + + Integer getMaxNumber(JBPMConfiguration configuration, Exchange exchange) { + Integer max = exchange.getIn().getHeader(JBPMConstants.MAX_NUMBER, Integer.class); + if (max == null) { + max = configuration.getMaxNumber(); + } + return max; + } + + Object getEvent(JBPMConfiguration configuration, Exchange exchange) { + Object event = exchange.getIn().getHeader(JBPMConstants.EVENT); + if (event == null) { + event = configuration.getEvent(); + } + return event; + } + + String getEventType(JBPMConfiguration configuration, Exchange exchange) { + String eventType = exchange.getIn().getHeader(JBPMConstants.EVENT_TYPE, String.class); + if (eventType == null) { + eventType = configuration.getEventType(); + } + return eventType; + } + + String getProcessId(JBPMConfiguration configuration, Exchange exchange) { + String processId = exchange.getIn().getHeader(JBPMConstants.PROCESS_ID, String.class); + if (processId == null) { + processId = configuration.getProcessId(); + } + return processId; + } + + Long getProcessInstanceId(JBPMConfiguration configuration, Exchange exchange) { + Long processInstanceId = exchange.getIn().getHeader(JBPMConstants.PROCESS_INSTANCE_ID, Long.class); + if (processInstanceId == null) { + processInstanceId = configuration.getProcessInstanceId(); + } + return processInstanceId; + } + + Map<String, Object> getParameters(JBPMConfiguration configuration, Exchange exchange) { + Map<String, Object> parameters = exchange.getIn().getHeader(JBPMConstants.PARAMETERS, Map.class); + if (parameters == null) { + parameters = configuration.getParameters(); + } + return parameters; + } + + Object getValue(JBPMConfiguration configuration, Exchange exchange) { + Object value = exchange.getIn().getHeader(JBPMConstants.VALUE); + if (value == null) { + value = configuration.getValue(); + } + return value; + } + + Message getResultMessage(Exchange exchange) { + return ExchangeHelper.isOutCapable(exchange) ? exchange.getOut() : exchange.getIn(); + } + + long safe(Long aLong) { + return aLong != null ? aLong : 0; + } + + void setResult(Exchange exchange, Object result) { + getResultMessage(exchange).setBody(result); + } + + abstract void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange); + } + + private void initOperationProcessors() { // PROCESS OPERATIONS - startProcess { + operations.put(JBPMOperation.startProcess, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { ProcessServicesClient processClient = kieServicesClient.getServicesClient(ProcessServicesClient.class); @@ -86,16 +267,16 @@ public class JBPMProducer extends DefaultProducer { getProcessId(configuration, exchange), getParameters(configuration, exchange)); setResult(exchange, processInstance); } - }, - abortProcessInstance { + }); + operations.put(JBPMOperation.abortProcessInstance, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { ProcessServicesClient processClient = kieServicesClient.getServicesClient(ProcessServicesClient.class); processClient.abortProcessInstance(configuration.getDeploymentId(), safe(getProcessInstanceId(configuration, exchange))); } - }, - signalEvent { + }); + operations.put(JBPMOperation.signalEvent, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { ProcessServicesClient processClient = kieServicesClient.getServicesClient(ProcessServicesClient.class); @@ -109,8 +290,8 @@ public class JBPMProducer extends DefaultProducer { getEvent(configuration, exchange)); } } - }, - getProcessInstance { + }); + operations.put(JBPMOperation.getProcessInstance, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { ProcessServicesClient processClient = kieServicesClient.getServicesClient(ProcessServicesClient.class); @@ -118,8 +299,9 @@ public class JBPMProducer extends DefaultProducer { safe(getProcessInstanceId(configuration, exchange))); setResult(exchange, processInstance); } - }, - getProcessInstances { + }); + + operations.put(JBPMOperation.getProcessInstances, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { QueryServicesClient queryClient = kieServicesClient.getServicesClient(QueryServicesClient.class); @@ -127,10 +309,10 @@ public class JBPMProducer extends DefaultProducer { .findProcessInstances(getPage(configuration, exchange), getPageSize(configuration, exchange)); setResult(exchange, processInstances); } - }, + }); // RULE OPERATIONS - fireAllRules { + operations.put(JBPMOperation.fireAllRules, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { RuleServicesClient ruleClient = kieServicesClient.getServicesClient(RuleServicesClient.class); @@ -147,8 +329,8 @@ public class JBPMProducer extends DefaultProducer { = ruleClient.executeCommandsWithResults(configuration.getDeploymentId(), executionCommand); setResult(exchange, reply.getResult()); } - }, - getGlobal { + }); + operations.put(JBPMOperation.getGlobal, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { RuleServicesClient ruleClient = kieServicesClient.getServicesClient(RuleServicesClient.class); @@ -161,8 +343,8 @@ public class JBPMProducer extends DefaultProducer { = ruleClient.executeCommandsWithResults(configuration.getDeploymentId(), executionCommand); setResult(exchange, reply.getResult().getValue(identifier)); } - }, - setGlobal { + }); + operations.put(JBPMOperation.setGlobal, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { RuleServicesClient ruleClient = kieServicesClient.getServicesClient(RuleServicesClient.class); @@ -174,18 +356,18 @@ public class JBPMProducer extends DefaultProducer { ruleClient.executeCommandsWithResults(configuration.getDeploymentId(), executionCommand); } - }, + }); // WORK ITEM OPERATIONS - abortWorkItem { + operations.put(JBPMOperation.abortWorkItem, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { ProcessServicesClient processClient = kieServicesClient.getServicesClient(ProcessServicesClient.class); processClient.abortWorkItem(configuration.getDeploymentId(), safe(getProcessInstanceId(configuration, exchange)), safe(getWorkItemId(configuration, exchange))); } - }, - completeWorkItem { + }); + operations.put(JBPMOperation.completeWorkItem, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { ProcessServicesClient processClient = kieServicesClient.getServicesClient(ProcessServicesClient.class); @@ -193,26 +375,26 @@ public class JBPMProducer extends DefaultProducer { safe(getProcessInstanceId(configuration, exchange)), safe(getWorkItemId(configuration, exchange)), getParameters(configuration, exchange)); } - }, + }); // TASK OPERATIONS - activateTask { + operations.put(JBPMOperation.activateTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.activateTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - claimTask { + }); + operations.put(JBPMOperation.claimTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.claimTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - completeTask { + }); + operations.put(JBPMOperation.completeTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -220,8 +402,8 @@ public class JBPMProducer extends DefaultProducer { getUserId(configuration, exchange), getParameters(configuration, exchange)); } - }, - delegateTask { + }); + operations.put(JBPMOperation.delegateTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -229,16 +411,16 @@ public class JBPMProducer extends DefaultProducer { getUserId(configuration, exchange), getTargetUserId(configuration, exchange)); } - }, - exitTask { + }); + operations.put(JBPMOperation.exitTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.exitTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - failTask { + }); + operations.put(JBPMOperation.failTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -246,8 +428,8 @@ public class JBPMProducer extends DefaultProducer { getUserId(configuration, exchange), getParameters(configuration, exchange)); } - }, - getAttachment { + }); + operations.put(JBPMOperation.getAttachment, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -256,8 +438,8 @@ public class JBPMProducer extends DefaultProducer { safe(getAttachmentId(configuration, exchange))); setResult(exchange, attachment); } - }, - getTasksAssignedAsBusinessAdministrator { + }); + operations.put(JBPMOperation.getTasksAssignedAsBusinessAdministrator, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -266,8 +448,8 @@ public class JBPMProducer extends DefaultProducer { getPageSize(configuration, exchange)); setResult(exchange, taskSummaries); } - }, - getTasksAssignedAsPotentialOwnerByStatus { + }); + operations.put(JBPMOperation.getTasksAssignedAsPotentialOwnerByStatus, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -276,24 +458,24 @@ public class JBPMProducer extends DefaultProducer { getPage(configuration, exchange), getPageSize(configuration, exchange)); setResult(exchange, taskSummaries); } - }, - getTaskByWorkItem { + }); + operations.put(JBPMOperation.getTaskByWorkItem, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); TaskInstance task = taskClient.findTaskByWorkItemId(safe(getWorkItemId(configuration, exchange))); setResult(exchange, task); } - }, - getTaskBy { + }); + operations.put(JBPMOperation.getTaskBy, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); TaskInstance task = taskClient.findTaskById(safe(getTaskId(configuration, exchange))); setResult(exchange, task); } - }, - getTaskContent { + }); + operations.put(JBPMOperation.getTaskContent, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -301,8 +483,8 @@ public class JBPMProducer extends DefaultProducer { safe(getTaskId(configuration, exchange))); setResult(exchange, content); } - }, - getTasksByProcessInstance { + }); + operations.put(JBPMOperation.getTasksByProcessInstance, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -311,8 +493,8 @@ public class JBPMProducer extends DefaultProducer { getPage(configuration, exchange), getPageSize(configuration, exchange)); setResult(exchange, processInstanceIds); } - }, - getTasksByStatusByProcessInstance { + }); + operations.put(JBPMOperation.getTasksByStatusByProcessInstance, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -322,8 +504,8 @@ public class JBPMProducer extends DefaultProducer { getPageSize(configuration, exchange)); setResult(exchange, taskSummaryList); } - }, - getTasksOwned { + }); + operations.put(JBPMOperation.getTasksOwned, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -332,8 +514,8 @@ public class JBPMProducer extends DefaultProducer { getPageSize(configuration, exchange)); setResult(exchange, summaryList); } - }, - nominateTask { + }); + operations.put(JBPMOperation.nominateTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); @@ -341,220 +523,56 @@ public class JBPMProducer extends DefaultProducer { getUserId(configuration, exchange), getEntities(configuration, exchange)); } - }, - releaseTask { + }); + operations.put(JBPMOperation.releaseTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.releaseTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - resumeTask { + }); + operations.put(JBPMOperation.resumeTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.resumeTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - skipTask { + }); + operations.put(JBPMOperation.skipTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.skipTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - startTask { + }); + operations.put(JBPMOperation.startTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.startTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - stopTask { + }); + operations.put(JBPMOperation.stopTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.stopTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }, - suspendTask { + }); + operations.put(JBPMOperation.suspendTask, new JBPMOperationProcessor() { @Override void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange) { UserTaskServicesClient taskClient = kieServicesClient.getServicesClient(UserTaskServicesClient.class); taskClient.suspendTask(configuration.getDeploymentId(), safe(getTaskId(configuration, exchange)), getUserId(configuration, exchange)); } - }; - - List<String> getStatuses(JBPMConfiguration configuration, Exchange exchange) { - List<String> statusList = exchange.getIn().getHeader(JBPMConstants.STATUS_LIST, List.class); - if (statusList == null) { - statusList = configuration.getStatuses(); - } - return statusList; - } - - List<String> getEntities(JBPMConfiguration configuration, Exchange exchange) { - List<String> entityList = exchange.getIn().getHeader(JBPMConstants.ENTITY_LIST, List.class); - if (entityList == null) { - entityList = configuration.getEntities(); - } - return entityList; - } - - Long getAttachmentId(JBPMConfiguration configuration, Exchange exchange) { - Long attachmentId = exchange.getIn().getHeader(JBPMConstants.ATTACHMENT_ID, Long.class); - if (attachmentId == null) { - attachmentId = configuration.getAttachmentId(); - } - return attachmentId; - } - - Long getContentId(JBPMConfiguration configuration, Exchange exchange) { - Long contentId = exchange.getIn().getHeader(JBPMConstants.CONTENT_ID, Long.class); - if (contentId == null) { - contentId = configuration.getContentId(); - } - return contentId; - } - - String getTargetUserId(JBPMConfiguration configuration, Exchange exchange) { - String userId = exchange.getIn().getHeader(JBPMConstants.TARGET_USER_ID, String.class); - if (userId == null) { - userId = configuration.getTargetUserId(); - } - return userId; - } - - Integer getPage(JBPMConfiguration configuration, Exchange exchange) { - Integer page = exchange.getIn().getHeader(JBPMConstants.RESULT_PAGE, Integer.class); - if (page == null) { - page = configuration.getPage(); - } - return page; - } - - Integer getPageSize(JBPMConfiguration configuration, Exchange exchange) { - Integer pageSize = exchange.getIn().getHeader(JBPMConstants.RESULT_PAGE_SIZE, Integer.class); - if (pageSize == null) { - pageSize = configuration.getPageSize(); - } - return pageSize; - } - - Task getTask(JBPMConfiguration configuration, Exchange exchange) { - Task task = exchange.getIn().getHeader(JBPMConstants.TASK, Task.class); - if (task == null) { - task = configuration.getTask(); - } - return task; - } - - String getUserId(JBPMConfiguration configuration, Exchange exchange) { - String userId = exchange.getIn().getHeader(JBPMConstants.USER_ID, String.class); - if (userId == null) { - userId = configuration.getUserId(); - } - return userId; - } - - Long getTaskId(JBPMConfiguration configuration, Exchange exchange) { - Long taskId = exchange.getIn().getHeader(JBPMConstants.TASK_ID, Long.class); - if (taskId == null) { - taskId = configuration.getTaskId(); - } - return taskId; - } - - Long getWorkItemId(JBPMConfiguration configuration, Exchange exchange) { - Long workItemId = exchange.getIn().getHeader(JBPMConstants.WORK_ITEM_ID, Long.class); - if (workItemId == null) { - workItemId = configuration.getWorkItemId(); - } - return workItemId; - } - - String getIdentifier(JBPMConfiguration configuration, Exchange exchange) { - String identifier = exchange.getIn().getHeader(JBPMConstants.IDENTIFIER, String.class); - if (identifier == null) { - identifier = configuration.getIdentifier(); - } - return identifier; - } - - Integer getMaxNumber(JBPMConfiguration configuration, Exchange exchange) { - Integer max = exchange.getIn().getHeader(JBPMConstants.MAX_NUMBER, Integer.class); - if (max == null) { - max = configuration.getMaxNumber(); - } - return max; - } - - Object getEvent(JBPMConfiguration configuration, Exchange exchange) { - Object event = exchange.getIn().getHeader(JBPMConstants.EVENT); - if (event == null) { - event = configuration.getEvent(); - } - return event; - } - - String getEventType(JBPMConfiguration configuration, Exchange exchange) { - String eventType = exchange.getIn().getHeader(JBPMConstants.EVENT_TYPE, String.class); - if (eventType == null) { - eventType = configuration.getEventType(); - } - return eventType; - } - - String getProcessId(JBPMConfiguration configuration, Exchange exchange) { - String processId = exchange.getIn().getHeader(JBPMConstants.PROCESS_ID, String.class); - if (processId == null) { - processId = configuration.getProcessId(); - } - return processId; - } - - Long getProcessInstanceId(JBPMConfiguration configuration, Exchange exchange) { - Long processInstanceId = exchange.getIn().getHeader(JBPMConstants.PROCESS_INSTANCE_ID, Long.class); - if (processInstanceId == null) { - processInstanceId = configuration.getProcessInstanceId(); - } - return processInstanceId; - } - - Map<String, Object> getParameters(JBPMConfiguration configuration, Exchange exchange) { - Map<String, Object> parameters = exchange.getIn().getHeader(JBPMConstants.PARAMETERS, Map.class); - if (parameters == null) { - parameters = configuration.getParameters(); - } - return parameters; - } - - Object getValue(JBPMConfiguration configuration, Exchange exchange) { - Object value = exchange.getIn().getHeader(JBPMConstants.VALUE); - if (value == null) { - value = configuration.getValue(); - } - return value; - } - - Message getResultMessage(Exchange exchange) { - return ExchangeHelper.isOutCapable(exchange) ? exchange.getOut() : exchange.getIn(); - } + }); - long safe(Long aLong) { - return aLong != null ? aLong : 0; - } - - void setResult(Exchange exchange, Object result) { - getResultMessage(exchange).setBody(result); - } - - abstract void execute(KieServicesClient kieServicesClient, JBPMConfiguration configuration, Exchange exchange); } + } diff --git a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/JBPMComponentIT.java b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/JBPMComponentIT.java index 1484f62..af917d1 100644 --- a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/JBPMComponentIT.java +++ b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/JBPMComponentIT.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.Map; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jbpm.JBPMProducer.Operation; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -58,7 +57,7 @@ public class JBPMComponentIT extends CamelTestSupport { // now let's collect user tasks headers = new HashMap<>(); - headers.put(JBPMConstants.OPERATION, JBPMConstants.OPERATION + Operation.getTasksOwned); + headers.put(JBPMConstants.OPERATION, JBPMConstants.OPERATION + JBPMOperation.getTasksOwned); template.sendBodyAndHeaders("direct:start", null, headers); getMockEndpoint("mock:result").expectedMessageCount(2); @@ -70,7 +69,7 @@ public class JBPMComponentIT extends CamelTestSupport { // let's complete first user task headers = new HashMap<>(); headers.put(JBPMConstants.TASK_ID, tasks.get(0).getId()); - headers.put(JBPMConstants.OPERATION, JBPMConstants.OPERATION + Operation.completeTask); + headers.put(JBPMConstants.OPERATION, JBPMConstants.OPERATION + JBPMOperation.completeTask); template.sendBodyAndHeaders("direct:start", null, headers); getMockEndpoint("mock:result").expectedMessageCount(3); @@ -79,7 +78,7 @@ public class JBPMComponentIT extends CamelTestSupport { // lastly let's abort process instance we just created headers = new HashMap<>(); headers.put(JBPMConstants.PROCESS_INSTANCE_ID, processInstanceId); - headers.put(JBPMConstants.OPERATION, JBPMConstants.OPERATION + Operation.abortProcessInstance); + headers.put(JBPMConstants.OPERATION, JBPMConstants.OPERATION + JBPMOperation.abortProcessInstance); template.sendBodyAndHeaders("direct:start", null, headers); getMockEndpoint("mock:result").expectedMessageCount(4);