|
@@ -1,30 +1,42 @@
|
|
package com.flow.flowable.behavior;
|
|
package com.flow.flowable.behavior;
|
|
|
|
|
|
import com.flow.flowable.cmd.JumpActivityCmd;
|
|
import com.flow.flowable.cmd.JumpActivityCmd;
|
|
|
|
+import com.flow.flowable.event.CustomFlowableEngineEvent;
|
|
|
|
+import com.flow.flowable.event.CustomFlowableEventType;
|
|
import com.flow.flowable.model.JumpServiceTask;
|
|
import com.flow.flowable.model.JumpServiceTask;
|
|
import org.flowable.common.engine.api.delegate.Expression;
|
|
import org.flowable.common.engine.api.delegate.Expression;
|
|
|
|
+import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher;
|
|
import org.flowable.common.engine.impl.el.ExpressionManager;
|
|
import org.flowable.common.engine.impl.el.ExpressionManager;
|
|
import org.flowable.engine.ManagementService;
|
|
import org.flowable.engine.ManagementService;
|
|
import org.flowable.engine.delegate.DelegateExecution;
|
|
import org.flowable.engine.delegate.DelegateExecution;
|
|
import org.flowable.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior;
|
|
import org.flowable.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior;
|
|
|
|
+import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
|
|
|
+import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
|
|
import org.flowable.engine.impl.util.CommandContextUtil;
|
|
import org.flowable.engine.impl.util.CommandContextUtil;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
+import java.util.Objects;
|
|
|
|
+
|
|
public class JumpActivityBehavior extends AbstractBpmnActivityBehavior {
|
|
public class JumpActivityBehavior extends AbstractBpmnActivityBehavior {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void execute(DelegateExecution execution) {
|
|
public void execute(DelegateExecution execution) {
|
|
JumpServiceTask jumpServiceTask = (JumpServiceTask) execution.getCurrentFlowElement();
|
|
JumpServiceTask jumpServiceTask = (JumpServiceTask) execution.getCurrentFlowElement();
|
|
|
|
+ ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration();
|
|
String skipExpression = jumpServiceTask.getSkipExpression();
|
|
String skipExpression = jumpServiceTask.getSkipExpression();
|
|
if (!StringUtils.isEmpty(skipExpression)) {
|
|
if (!StringUtils.isEmpty(skipExpression)) {
|
|
- ExpressionManager expressionManager = CommandContextUtil.getProcessEngineConfiguration().getExpressionManager();
|
|
|
|
|
|
+ ExpressionManager expressionManager = processEngineConfiguration.getExpressionManager();
|
|
Expression expression = expressionManager.createExpression(skipExpression);
|
|
Expression expression = expressionManager.createExpression(skipExpression);
|
|
Object result = expression.getValue(execution);
|
|
Object result = expression.getValue(execution);
|
|
if ((result instanceof Boolean && (Boolean) result)) {
|
|
if ((result instanceof Boolean && (Boolean) result)) {
|
|
- leave(execution);
|
|
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
|
|
|
+ if (Objects.nonNull(eventDispatcher) && eventDispatcher.isEnabled()) {
|
|
|
|
+ CustomFlowableEngineEvent customFlowableEngineEvent = new CustomFlowableEngineEvent((ExecutionEntityImpl) execution, CustomFlowableEventType.ACTIVITY_JUMP);
|
|
|
|
+ eventDispatcher.dispatchEvent(customFlowableEngineEvent, processEngineConfiguration.getEngineCfgKey());
|
|
|
|
+ }
|
|
ManagementService managementService = CommandContextUtil.getProcessEngineConfiguration().getManagementService();
|
|
ManagementService managementService = CommandContextUtil.getProcessEngineConfiguration().getManagementService();
|
|
managementService.executeCommand(new JumpActivityCmd(execution.getProcessInstanceId(), jumpServiceTask.getTargetNode()));
|
|
managementService.executeCommand(new JumpActivityCmd(execution.getProcessInstanceId(), jumpServiceTask.getTargetNode()));
|
|
leave(execution);
|
|
leave(execution);
|