说说 jBPM 流程定义语言(9)—— 自定义活动
发布日期:2021-06-29 21:10:05
浏览次数:2
分类:技术文章
本文共 2198 字,大约阅读时间需要 7 分钟。
其实,在流程的执行过程中,我们只要拿到流程实例及其上下文对象,再通过某种机制获得流程定义的输入数据并发布输出数据,就可以实现自定义的活动啦O(∩_∩)O哈哈~
我们可以通过 custom 活动完全自定义一套活动行为,调用自己的代码,实现定制的活动逻辑 。
jPDL:
自定义的处理类需要实现 ExternalActivityBehaviour 接口,这个接口继承自 ActivityBehaviour 接口 。ActivityBehaviour 接口是所有 jBPM4 内置活动都需要实现的接口 。
我们需要实现两个方法:
1、 来自 ActivityBehaviour 的 void execute(ActivityExecution execution)
在流程实例进入到此活动时执行此方法,完成主要的活动逻辑,提供 ActivityExecution 对象作为参数,通过它可以获取流程实例 、 执行上下文等能得到的一切流程运行时对象 。
2、void signal(ActivityExecution execution, String signalName, Map
public class Print implements ExternalActivityBehaviour { /** * 流程收到执行信号后,会执行此方法 * * @param execution * @param signalName * @param parameters * @throws Exception */ @Override public void signal(ActivityExecution execution, String signalName, Mapparameters) throws Exception { //自定义逻辑 //最后让流程实例进入“下一步” execution.take(signalName); } /** * 自定义处理逻辑 * * @param execution * @throws Exception */ @Override public void execute(ActivityExecution execution) throws Exception { System.out.println("自定义处理逻辑"); execution.waitForSignal();//进入等待状态 }}
这里的 execution.waitForSignal() 方法会等待一个执行信号,让流程进入 signal 的处理方法。
测试代码:
public class Custom extends JbpmTestCase { /** * 流程定义的部署 ID */ String deploymentId; /** * 序列 state 转移(StateSequence) */ @Override protected void setUp() throws Exception { super.setUp(); //从 classpath 中部署流程定义 deploymentId = repositoryService.createDeployment().addResourceFromClasspath ("net/deniro/jbpm/test/Custom.jpdl.xml").deploy(); //可以多次调用 addResourceFromClasspath 方法,把多个资源都部署到数据库中 } /** * */ @Override protected void tearDown() throws Exception { //物理清除 deploymentId 对应的流程定义及其所有相关资源 repositoryService.deleteDeploymentCascade(deploymentId); super.tearDown(); } public void test() { //发起实例 ProcessInstance processInstance = executionService.startProcessInstanceByKey ("Custom"); assertNotNull(processInstance.findActiveExecutionIn("打印")); }}
转载地址:https://deniro.blog.csdn.net/article/details/79469065 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月08日 09时57分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
android线程与UI消息传递
2019-04-30
java枚举定义
2019-04-30
[翻译][Java]ExecutorService的正确关闭方法
2019-04-30
QT父子窗口事件传递与事件过滤器
2019-04-30
Qt到Cortex-A8的移植
2019-04-30
Qt4.7.3交叉编译移植
2019-04-30
luvcview摄像头程序到Cortex A8的安装移植
2019-04-30
Android开发书籍书籍介绍:
2019-04-30
QT 的信号与槽机制介绍
2019-04-30
Qt信号槽机制与Q_OBJECT
2019-04-30
Q_OBJECT信号槽与继承关系
2019-04-30
android定时器、消息任务与问题解决
2019-04-30
Qt模拟键盘按键按下
2019-04-30
android、java获得代码执行时长
2019-04-30
Android 定时异步刷新UI
2019-04-30
虚拟机下系统键盘无法使用
2019-04-30
android根据日期计算年龄
2019-04-30
android之单元测试问题汇总
2019-04-30
Qt窗口居中
2019-04-30