说说 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, Map
parameters) 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说在 Android 中如何使用文件存取数据
下一篇:Android Device Monitor 报 open failed: Permission denied 问题的解决方法

发表评论

最新留言

很好
[***.229.124.182]2024年04月08日 09时57分36秒