activiti通过扩展点重写节点行为

简介: 在activit项目中,有时需要重写节点的behaviour,但如果将代码反编译,会为后续升级,及项目打包带为不方便。  其实 acitivit已经提供了扩展点重写节点行为。

在activit项目中,有时需要重写节点的behaviour,但如果将代码反编译,会为后续升级,及项目打包带为不方便。  
其实 acitivit已经提供了扩展点重写节点行为。
重写办法如下:

  1. activiti在初始化processEngineConfiguration时,设置行为工厂
@Bean(name = "processEngineConfiguration")
    public ProcessEngineConfigurationImpl processEngineConfiguration() {
        SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();
        processEngineConfiguration.setDataSource(druidDataSource());
        processEngineConfiguration.setTransactionManager(annotationDrivenTransactionManager());
        processEngineConfiguration.setProcessEngineName(ProcessEngines.NAME_DEFAULT);
        //设置全局事件监听
        processEngineConfiguration.setTypedEventListeners(this.getGlobalActivitiEventListener());
        //重写节点行为
        processEngineConfiguration.setActivityBehaviorFactory(new CdpActivityBehaviorFactory());
        //设置主键生成
        processEngineConfiguration.setIdGenerator(new ActivitiIdGenerator());
        //设置函数
        processEngineConfiguration.setBeans(FunctionFactory.getFunctionBeans());
        return processEngineConfiguration;
    }

其中关键代码为

    //重写节点行为
        processEngineConfiguration.setActivityBehaviorFactory(new CdpActivityBehaviorFactory());

2.类CdpActivityBehaviorFactory是节点行为工厂,设置了所有节点的行为实现类

@Component
public class CdpActivityBehaviorFactory extends DefaultActivityBehaviorFactory {
 public CdpUserTaskActivityBehavior createUserTaskActivityBehavior(UserTask userTask, TaskDefinition taskDefinition) {
        return new CdpUserTaskActivityBehavior(userTask.getId(), taskDefinition);
    }

上述代码中CdpUserTaskActivityBehavior是这边重写的节点行为类
3.类CdpUserTaskActivityBehavior为节点行为,可以继承原来的UserTaskActivityBehavior,覆盖需要重写的方法即可

public class CdpUserTaskActivityBehavior extends UserTaskActivityBehavior{
//重写需要改的方法
}

最后强烈提醒一下,节点userTask需要重写的行为有三个,因为有单实例,串行多实例,并行多实例三种,分别为UserTaskActivityBehavior,ParallelMultiInstanceBehavior,SequentialMultiInstanceBehavior。

相关文章
|
5月前
|
Java Maven Spring
Maven高级-继承、实施步骤及聚合与继承的区别
Maven高级-继承、实施步骤及聚合与继承的区别
69 0
|
12月前
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
39 0
|
资源调度 前端开发 算法
前端依赖版本重写指南
感谢神奇的 Semver 动态规则,npm 社区经常会发生依赖包更新后引入破坏变更的情况(应用没有使用依赖锁的话),而应用开发者就要在自己的依赖声明里先临时绕过,避免安装到有问题的版本,如果是一级依赖,只需要改 package.json 的声明就可以了,但如果是子依赖,就需要进行版本重写(overrides/resolution)了。本文是一篇针对版本重写功能的指南性文章,当你遇到如下的问题时,就可以按照对应的依赖重写语法,解决这些依赖问题了。
5542 1
前端依赖版本重写指南
|
3月前
|
Java Spring 容器
重写并自定义依赖的原生的Bean方法
重写并自定义依赖的原生的Bean方法
24 5
|
5月前
|
Java Maven
@ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean
@ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean
50 0
|
5月前
|
Java Maven
@ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean
@ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean
39 0
|
Java 数据库连接 Spring
SpringBoot启动类的扫描注解的用法及冲突原则
SpringBoot启动类的扫描注解的用法及冲突原则
491 0
SpringBoot启动类的扫描注解的用法及冲突原则
|
XML 数据可视化 Java
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍