生命不息,编程不止

deniro's thinking

说说如何在项目中引入 jBPM4 工作流框架以及遇到的坑儿

由于各种原因,我们需要在项目中引入 jBPM4 工作流框架,遇到了不少问题,今记录如下O(∩_∩)O 1 引入步骤 1.1 加入依赖包 非 Maven 项目,在 lib 包中加入 jbpm.jar。 Maven 项目,加入以下配置: <depende...

2018-08-15 11:47:09

阅读数 741

评论数 0

说说在 jBPM 工作流中如何实现【委派】功能

委派,又称为代理,是一种很常见的任务再分配模式。 委派的业务场景是这样的:任务已经分配给小李,但由于某种原因现在不方便办理,这时就需要委派给小王,代为办理。 实现委派功能两种思路: 不创建新的任务,而是直接修改原始任务的分配人(assignee 属性)。这样做会彻底断绝任务与原始分配人之间...

2018-06-16 15:38:49

阅读数 135

评论数 0

说说在 jBPM 工作流中如何实现【会签】功能

会签(会审),指的是在流程中某个业务需要经过多人表决,并且根据表决意见的汇总结果以及设定的规则,来决定流程的走向,它是审批流程中常见的需求。 会签可以分为两种: 单步 - 只使用一个活动来处理。 多步 - 由多个活动所组成的。 单步会签比较常见,也容易实现,主要的解决方案是在会签活动的主...

2018-06-09 16:50:57

阅读数 258

评论数 3

说说在 jBPM 工作流中如何实现【撤销】功能

撤销(Withdraw):针对当前用户已办理的任务(历史任务),重置回待办状态。 撤销一般发生在以下场景中:当用户办理完任务后,发现办理的任务存在业务错误或者觉得下一节点办理人需要重新选择,那么这时就需要撤销任务啦 O(∩_∩)O哈哈~ 注意:如果下一节点办理人已完成任务或者流程可能已经流转了...

2018-05-29 19:07:10

阅读数 230

评论数 0

说说在 jBPM 工作流中如何实现【回退】功能

回退,指的是用户主动回退到当前任务的上一流程节点(上一步骤)。 想象这样一种场景,当前用户接收任务后,发现这个任务不该由他办理或者这个任务存在严重的业务问题,这时就需要回退给上一步的办理者重新办理。 解决方案如下: 识别 “需要具有回退能力” 的任务。 为上述任务设计处理回退逻辑的监听器。...

2018-05-23 18:26:25

阅读数 201

评论数 1

说说 jBPM 工作流的定时器

jBPM 定时器(Timer)实现了以下功能: timer 定义在 transition 元素中,当流程处于 state、task、sub-process 类型活动的等待状态时,会开始计算 timer 的时间,当时间耗尽时,就会触发转移。 timer 也可以定义在用户代码活动中,负责事件监听的...

2018-05-16 17:22:47

阅读数 181

评论数 0

说说如何定制 jBPM

在官方发布的 jbpm.jar 的根路径中包含了一些默认提供的配置文件 。 我们可以选择包含或排除某些功能,通过在 jbpm.cfg.xml 配置文件中导入需要的配置文件。 配置文件 说明 jbpm.default.cfg.xml 主配置。 jbpm.iden...

2018-05-05 17:14:50

阅读数 70

评论数 0

说说如何扩展 jBPM 实现“变态”需求

如果需求很“变态”,那我们可以试着扩展 jBPM,它很容易被扩展,比如事件监听器、自定义活动和 Java 代码活动等等。 假设我们这里需要定制任务的查询,基于多个属性来作为查询条件。 目前的任务服务(TaskService)要实现这个功能比较麻烦,我们可以扩展 jBPM4 的命令服务,来实现自...

2018-05-04 17:37:09

阅读数 61

评论数 0

说说 jBPM 的表设计结构

jBPM4 的数据持久化基于 Hibernate 框架。 1 流程定义与实例运行时数据表 这些表用于保存所有与流程定义相关的资源以及运行中的流程实例数据: 表名 涉及的类 说明 jbpm4_deployment org.jbpm.pvm.interna...

2018-05-04 16:41:35

阅读数 68

评论数 0

说说 jBPM 工作流引擎的设计原理

1服务 API 设计 jBPM4 工作流引擎的核心 PVM 主要依靠 4 组服务 API : 流程定义服务 - Process Service。 流程执行服务- Execution Service。 流程管理服务 - Managerment Service。 指令服务 - Command ...

2018-04-30 20:56:44

阅读数 1816

评论数 0

说说 jBPM 流程虚拟机的原理

jBPM4 PVM ( Process Virtual Machine ,流程虚拟机)的设计初衷是通过实现接口和定制插件等方式兼容多种流程定义语言和流程活动场景,为 “ 世界上 ” 所有的业务流程定义提供一套通用 API 平台 。 那么,无论是需要对 jBPM 原有流程定义语言进行扩...

2018-04-28 17:41:20

阅读数 76

评论数 0

说说 jBPM 流程定义语言(13)—— 可扩展接口(User Code)

我们可以根据实际的业务逻辑去实现这些可扩展的接口,然后在 jPDL 中引用这些实现。 目前支持这些扩展点: custom:自定义活动(实现 ExternalActivityBehavior 接口) event-listener:事件监听器(实现 EventListener 接口) task ...

2018-04-12 18:15:54

阅读数 65

评论数 1

说说 jBPM 流程定义语言(12)—— 异步执行

jBPM 对于所有的流程执行操作默认都是同步的。所以我们调用 ExecutionService.startProcessInstanceById 或 ExecutionService.singalProcessInstanceById 之类的方法时,会让流程实例一直处于执行状态,直到流程实例到达一...

2018-03-17 21:18:11

阅读数 140

评论数 0

说说 jBPM 流程定义语言(11)—— 事件

事件(event)用来流程执行的过程中特定的“点”,例如“流程实例开始”、“状态活动结束”等,可以在这些“点”中注册相应的监听器(listener)。当流程实例执行到这些被监听的点时,就会执行监听器中代码逻辑。 事件与监听器没有显示在流程定义的图中,因为它们更注重内部逻辑。 通过实现 Even...

2018-03-17 20:18:47

阅读数 99

评论数 0

说说 jBPM 流程定义语言(10)—— 自动活动

jBPM4 能够很好地支持多种自动活动,所谓自动活动指的是在执行过程中完全无须人工干预。 jBPM4 默认支持的自动活动类型有: * java - Java 程序活动 * script - 脚本活动 * hql - Hibernate 查询语言活动 * SQL ...

2018-03-11 15:49:04

阅读数 132

评论数 0

说说 jBPM 流程定义语言(9)—— 自定义活动

其实,在流程的执行过程中,我们只要拿到流程实例及其上下文对象,再通过某种机制获得流程定义的输入数据并发布输出数据,就可以实现自定义的活动啦O(∩_∩)O哈哈~ 我们可以通过 custom 活动完全自定义一套活动行为,调用自己的代码,实现定制的活动逻辑 。 jPDL: &am...

2018-03-07 11:52:18

阅读数 105

评论数 0

说说 jBPM 流程定义语言(8)—— sub-process(子流程活动)

当我们的流程复杂到一定程度时,就需要按照一定规则把业务拆分成若干子流程,这样业务模块之间才能明晰易于划分。 jBPM4 提供了 sub-process – 子流程活动,这可以在 “ 主干流程 ” 定义中调用其他的流程定义,从而 “ 组装 ” 我们的流程定义 。在运行到子流程活动时,工作流引擎...

2018-03-06 11:12:19

阅读数 413

评论数 0

说说 jBPM 流程定义语言(7)—— task(人工任务活动)

task 活动用来处理涉及人机交互的活动。它的功能在 jBPM 乃至整个工作流的应用中都具有极其重要的意义,因为处理人工任务、电子表单是工作流应用中最繁琐与细致的工作。 1 任务的分配者 利用 task 活动的 assignee 属性(分配者属性)可以把一个任务分配给指定的用户。 ...

2018-02-12 16:32:23

阅读数 129

评论数 0

说说 jBPM 流程定义语言(6)—— end (结束活动)

end 活动用于终结流程。 一般情况下,当流程实例运行到 end 活动后就会结束。但是在到达 end 活动的流程实例中仍然活跃的流程活动(fork - join 并发流转)可以继续执行。 这是一个最简单的包含 end 活动的流程定义: jPDL: <?xml ...

2018-02-09 10:15:27

阅读数 217

评论数 0

说说 jBPM 流程定义语言(5)—— fork - join (分支、聚合活动)

当我们需要流程并发(concurrency)执行时,就需要使用到 fork-join 活动组合,fork活动可以使流程在一条主干上出现并行的分支,join 活动则可以使流程的并行分支聚合成一条主干。 Fork 活动具有1个 name 属性和 n 个流出转移元素。 join 活动的独特属性:...

2018-02-07 10:52:03

阅读数 207

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭