Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated
DefaultActivityBehaviorFactory 默认活动行为工厂类
/**
* 默认活动行为工厂类
* 活动行为工厂{@link ActivityBehaviorFactory}的默认实现。
* 在流程引擎配置类{@link ProcessEngineConfigurationImpl}上没有注入自定义{@link ActivityBehaviorFactory}时使用。
*
* @author Joram Barrez
*/
public class DefaultActivityBehaviorFactory extends AbstractBehaviorFactory implements ActivityBehaviorFactory {
private final ClassDelegateFactory classDelegateFactory;
public DefaultActivityBehaviorFactory(ClassDelegateFactory classDelegateFactory) {
this.classDelegateFactory = classDelegateFactory;
}
public DefaultActivityBehaviorFactory() {
this(new DefaultClassDelegateFactory());
}
// 开始事件
public static final String EXCEPTION_MAP_FIELD = "mapExceptions";
@Override
public NoneStartEventActivityBehavior createNoneStartEventActivityBehavior(StartEvent startEvent) {
return new NoneStartEventActivityBehavior();
}
// 任务
@Override
public TaskActivityBehavior createTaskActivityBehavior(Task task) {
return new TaskActivityBehavior();
}
@Override
public ManualTaskActivityBehavior createManualTaskActivityBehavior(ManualTask manualTask) {
return new ManualTaskActivityBehavior();
}
@Override
public ReceiveTaskActivityBehavior createReceiveTaskActivityBehavior(ReceiveTask receiveTask) {
return new ReceiveTaskActivityBehavior();
}
@Override
public ReceiveEventTaskActivityBehavior createReceiveEventTaskActivityBehavior(ReceiveTask receiveTask, String eventDefinitionKey) {
return new ReceiveEventTaskActivityBehavior(eventDefinitionKey);
}
@Override
public UserTaskActivityBehavior createUserTaskActivityBehavior(UserTask userTask) {
return new UserTaskActivityBehavior(userTask);
}
// 服务任务
protected Expression getSkipExpressionFromServiceTask(ServiceTask serviceTask) {
return createExpression(serviceTask.getSkipExpression());
}
protected Expression createExpression(String expressionValue) {
Expression expression = null;
if (StringUtils.isNotEmpty(expressionValue)) {
expression = expressionManager.createExpression(expressionValue);
}
return expression;
}
@Override
public ClassDelegate createClassDelegateServiceTask(ServiceTask serviceTask) {
return classDelegateFactory.create(serviceTask.getId(), serviceTask.getImplementation(),
createFieldDeclarations(serviceTask.getFieldExtensions()),
serviceTask.isTriggerable(),
getSkipExpressionFromServiceTask(serviceTask), serviceTask.getMapExceptions());
}
@Override
public ServiceTaskDelegateExpressionActivityBehavior createServiceTaskDelegateExpressionActivityBehavior(ServiceTask serviceTask) {
Expression delegateExpression = expressionManager.createExpression(serviceTask.getImplementation());
return new ServiceTaskDelegateExpressionActivityBehavior(serviceTask.getId(), delegateExpression,
getSkipExpressionFromServiceTask(serviceTask), createFieldDeclarations(serviceTask.getFieldExtensions()),
serviceTask.getMapExceptions(), serviceTask.isTriggerable());
}
@Override
public ServiceTaskExpressionActivityBehavior createServiceTaskExpressionActivityBehavior(ServiceTask serviceTask) {
Expression expression = expressionManager.createExpression(serviceTask.getImplementation());
return new ServiceTaskExpressionActivityBehavior(serviceTask, expression, getSkipExpressionFromServiceTask(serviceTask));
}
@Override
public WebServiceActivityBehavior createWebServiceActivityBehavior(ServiceTask serviceTask, BpmnModel bpmnModel) {
return new WebServiceActivityBehavior(bpmnModel);
}
@Override
public WebServiceActivityBehavior createWebServiceActivityBehavior(SendTask sendTask, BpmnModel bpmnModel) {
return new WebServiceActivityBehavior(bpmnModel);
}
@Override
public MailActivityBehavior createMailActivityBehavior(ServiceTask serviceTask) {
return createMailActivityBehavior(serviceTask.getId(), serviceTask.getFieldExtensions());
}
@Override
public MailActivityBehavior createMailActivityBehavior(SendTask sendTask) {
return createMailActivityBehavior(sendTask.getId(), sendTask.getFieldExtensions());
}
protected MailActivityBehavior createMailActivityBehavior(String taskId, List<FieldExtension> fields) {
List<FieldDeclaration> fieldDeclarations = createFieldDeclarations(fields);
return (MailActivityBehavior) ClassDelegate.defaultInstantiateDelegate(
MailActivityBehavior.class, fieldDeclarations);
}
@Override
public DmnActivityBehavior createDmnActivityBehavior(ServiceTask serviceTask) {
return new DmnActivityBehavior(serviceTask);
}
@Override
public DmnActivityBehavior createDmnActivityBehavior(SendTask sendTask) {
return new DmnActivityBehavior(sendTask);
}