暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Flowable6.4 - Behavior使用初探

字痕随行 2019-10-31
2068

通过之前分析Behavior的源码,基本上搞清楚了它的作用,这次就简单试验一下它的用法。


如果看过ProcessEngineConfigurationImpl的源码,会在其中的init()方法中发现BehaviorFactory的初始化方法。由此入手,就能够了解如何定制Behavior。


这块的源码暂时先不分析,本次直接使用一个简单的Demo介绍一下如何定制UserTaskActivityBehavior。


首先,声明一个自定义类,直接继承自UserTaskActivityBehavior,具体的代码如下:

/**
 * 自定义UserTask节点的Behavior
 */

public class ExtUserTaskActivityBehavior extends UserTaskActivityBehavior {

    private static final long serialVersionUID = 7711531472879418236L;

    ExtUserTaskActivityBehavior(UserTask userTask) {
        super(userTask);
    }

    @Override
    public void execute(DelegateExecution execution) {
        System.out.println("这是自定义Behavior的输出:进入节点" + execution.getCurrentActivityId());
        super.execute(execution);
    }

    @Override
    public void trigger(DelegateExecution execution, String signalName, Object signalData) {
        System.out.println("这是自定义Behavior的输出:触发离开节点" + execution.getCurrentActivityId());
        super.trigger(execution, signalName, signalData);
    }
}


非常简单,就是在进入和离开节点之前,输出一段日志。如果想让这个自定义的Behavior生效,就必须依靠BehaviorFactory实现。


自定义BehaviorFactory,然后使用上文中已定义的ExtUserTaskActivityBehavior替换原有的UserTaskActivityBehavior,具体代码如下:

/**
 * 自定义的BehaviorFactory,在ProcessEngineConfiguration中引入
 */

public class ExtActivityBehaviorFactory extends DefaultActivityBehaviorFactory {

    @Override
    public UserTaskActivityBehavior createUserTaskActivityBehavior(UserTask userTask) {
        return new ExtUserTaskActivityBehavior(userTask);
    }
}


此时,已经在自定义的Factory中替换了原有的UserTaskActivityBehavior,但是这只是准备工作,接下来需要让Flowable知晓ExtActivityBehaviorFactory的存在。


在配置文件中,将ExtActivityBehaviorFactory注入到ProcessEngineConfiguration中,具体代码如下:

<!--实例化ExtActivityBehaviorFactory-->
 <bean id="extActivityBehaviorFactory" class="com.xnck.demo.flowabledemo.behavior.ExtActivityBehaviorFactory"></bean>

<!--流程引擎的配置bean-->
<bean id="processEngineConfiguration" class="org.flowable.spring.SpringProcessEngineConfiguration">

    <!--此处省略若干其它配置-->

    <!--注入自定义的BehaviorFactory-->
    <property name="activityBehaviorFactory" ref="extActivityBehaviorFactory"></property>
</bean>


经过上面的操作后,ExtUserTaskActivityBehavior就会正式生效,在遇到流程中的UserTask节点时,会输出日志。


比如,下面这个流程:


请求以下地址,启动流程:

http://localhost:8080/flowabledemo/flow/start/1


输出的日志如下:


请求以下地址,完成用户任务1:

http://localhost:8080/flowabledemo/flow/complate/60011


输出的日志如下:


至此,自定义的Behavior已经生效。这次的Demo比较简单,下次搞个稍微复杂点的。


以上,如有问题,欢迎指正讨论。


觉的不错?可以关注我的公众号↑↑↑


文章转载自字痕随行,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论