工作流引擎设计之取回任务定义

取回(Withdraw Work Item)

取回是针对本人的“已办任务”的操作,即取回已办任务。

何谓取回:参与者提交任务后,发现自己办理此任务有误或不应该立刻提交等情况,需要将此已办理完成的任务取回重新办理或稍后再提交。

取回原则:执行取回以不影响其他执行者已经办理的任务及下一步参与者已经完成的工作为基本指导原则。如果前活动仍在执行状态,即下一步活动还没有被激活,则只要流程定义允许,任务是肯定可以被取回的。

以下是一些不可执行取回的场景,当然这不是绝对的,有的引擎设计是可以支持部分下列场景的取回,所以,仅供参考。

1. 前活动的定义不允许对任务执行取回操作。


2. 前活动为自动活动的情况



3. 前活动为子流程活动的情况



4. 下一步活动不存在的情况,有可能下一步活动即是流程的终点



5. 下一步活动是自动活动的情况



6. 下一步活动是子流程活动的情况



7. 下一步活动已经有任务被执行者接受,即活动处于正在执行中的状态



8. 下一步活动已经执行完成,即处于已完成的状态



图注:蓝色标识前活动,即已办任务所处的活动。

不可取回的场景

补充说明

如果前活动和其下一步活动之间存在一个或多个路由节点,则路由不会对取回规则产生任何影响,引擎在做取回运算时将跳过所有路由节点。

——以上是我以前在实现工作流引擎系统时的一些设计和指导原则,现在发表出来,供大家参考。不足之处,欢迎拍砖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BPM4工作应用开发指南 《jBPM4工作应用开发指南》是2010年电子工业出版社出版的图书,作者是胡奇。 完全解析jBPM4应用开发技术 9位工作业内专家联袂推荐 随着在现代企业管理中对于信息化、程化的深度挖掘,具有业务程管理的技术和思想已经成为致力于全面掌控企业级应用系统人士“日常生活、居家旅行”的必备素质。 本书分两篇。第一篇介绍工作管理技术的概念、起源和发展历程,开源工作选型,以及jBPM——这个迄今为止最成功的Java开源工作项目的“前世今生”。此外,本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业程应用,包括安装和配置jBPM4、使用jBPM图形化设计器(GPD)设计程、把程部署到服务器上去、使用jBPM 4 Service API控制程、掌握jBPM定义语言、程变量、程脚本。第二篇主要涉及基于jBPM4这个强大的应用程序框架打造属于自己独特业务的“企业程管理平台”,包括jBPM4扩展研发先决条件、深入jPDL和jBPM Service API、升级jBPM3到jBPM4、程虚拟机原理、jBPM4的设计思想、随需而配jBPM4、异步工作执行器、深入jBPM4电子邮件支持、系统日志、jBPM4与Spring框架集成、jBPM4与JBoss应用服务器集成、中国特色工作的jBPM实现。 本书结构条理清晰,实践例程与理论思想紧密结合,翔实易懂,由浅入深,具有很强的参考性和实用性。本书适合所有掌握JavaEE(Java企业级版本)开发技术的人员——无论您是技术开发者、项目实施者、系统架构师,还是程分析师、业务方案顾问,本书都适合您。 第一篇 jBPM工作开发基础 1 第1章 工作基础 2 1.1 工作概念 2 1.1.1 工作管理思想之于企业现代化管理 2 1.1.2 工作技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作技术 6 1.2 工作管理系统的发展历程 9 1.2.1 工作管理系统参考模型 11 1.2.2 BPM 15 1.3 开源工作选型 16 1.4 jBPM 19 1.4.1 jBPM前世今生 19 1.4.2 关于jBPM4您需要知道的 19 1.5 小结 23 第2章 安装和配置jBPM4 24 2.1 jBPM4安装先决条件 24 2.2 快速开始吧 26 2.3 安装脚本详解 27 2.3.1 关于配置文件 30 2.3.2 关于依赖库 31 2.4 安装到JBoss 31 2.5 安装到Tomcat 32 2.6 基于Web的Signavio设计器 33 2.6.1 jBPM Web设计器简介 33 2.6.2 独立安装Signavio 34 2.6.3 配置Signavio 34 2.7 用户自定义jBPM Web应用程序 35 2.8 安装jBPM数据库 35 2.8.1 新数据库安装 36 2.8.2 升级旧的数据库 36 2.9 安装图形化设计器(GPD) 37 2.9.1 获取Eclipse 37 2.9.2 在Eclipse中安装GPD插件 37 2.9.3 配置jBPM运行环境 38 2.9.4 添加jPDL4 Schema校验 41 2.9.5 导入和使用范例 41 2.10 例程:jBPM HelloWorld 43 2.11 小结 45 第3章 使用jBPM图形化设计器(GPD)设计程 46 3.1 创建一个新程 47 3.2 编辑定义源 49 3.3 例程:设计一个“复杂的”业务程 49 3.4 小结 53 第4章 把程部署到服务器上去 54 4.1 部署定义和资源文件 54 4.2 部署程Java类的3个方法 57 4.3 例程:部署业务定义 58 4.4 小结 61 第5章 使用jBPM4 Service API控制程 62 5.1 定义程实例和执行的概念 62 5.2 引擎API 64 5.3 利用API部署程 67 5.4 通过API删除已部署的程 69 5.5 使用API发起新的程实例 69 5.5.1 发起程实例的常规方法 70 5.5.2 指定业务键发起程实例 70 5.5.3 指定变量发起程实例 71 5.6 唤醒一个等待状态的执行 71 5.7 任务服务API 72 5.8 历史服务API 75 5.9 管理服务API 76 5.10 查询服务API 77 5.11 例程:利用jBPM Service API完成程实例 78 5.12 小结 80 第6章 掌握jBPM定义语言 81 6.1 process(程) 82 6.2 转控制活动 84 6.2.1 start(开始活动) 85 6.2.2 state(状态活动) 86 6.2.3 decision(判断活动) 89 6.2.4 fork – join(分支/聚合活动) 97 6.2.5 end(结束活动) 102 6.2.6 task(人工任务活动) 107 6.2.7 sub-process(子程活动) 120 6.2.8 自定义活动 132 6.3 自动活动 134 6.3.1 java(Java程序活动) 135 6.3.2 script(脚本活动) 139 6.3.3 hql(Hibernate查询语言活动) 144 6.3.4 sql(结构化查询语言活动) 147 6.3.5 mail(邮件活动) 149 6.4 事件 153 6.4.1 事件监听 155 6.4.2 事件传播 157 6.4.3 处理异常事件 159 6.5 异步执行 160 6.5.1 异步活动 162 6.5.2 异步分支/聚合 164 6.6 用户代码 166 6.6.1 用户代码的定义 166 6.6.2 用户代码的类加载 168 6.7 小结 170 第7章 程变量 171 7.1 变量作用域 173 7.2 变量类型 174 7.3 变量的自动更新和序列化 175 7.4 例程:用变量去控制一个程的运行 177 7.5 小结 179 第8章 程脚本 182 8.1 Java统一表达式语言 182 8.1.1 语法特点 183 8.1.2 值和方法表达式 184 8.1.3 隐式对象 187 8.1.4 运算符和保留字 188 8.1.5 一些经典EL表达式的例子 190 8.2 例程:用脚本去控制一个程的运行 192 8.3 小结 194 第二篇 定制属于自己的程——深入jBPM4扩展研发 195 第9章 jBPM4扩展研发先决条件 196 9.1 深入应用jBPM4所需要知道的 196 9.1.1 如果您的业务基于复杂的规则,在jBPM中加入Drools吧 196 9.1.2 抉择,是否使用BPEL 197 9.2 Maven仓库和Java依赖库 199 9.3 小结 200 第10章 深入jPDL和jBPM Service API 201 10.1 timer(定时器)能为您做什么 201 10.1.1 持续时间表达式 202 10.1.2 工作日历 202 10.1.3 定时转移 204 10.1.4 定时事件 205 10.1.5 工作日历定时 207 10.1.6 定时重复 208 10.2 使用group活动编组程 209 10.3 如何在活动中调用EJB方法 214 10.4 使用jms活动 215 10.4.1 模拟JMS服务 217 10.4.2 JMS文本消息 219 10.4.3 JMS Object消息 220 10.4.4 JMS Map消息 222 10.5 历史会话监听链 223 10.6 自定义Web任务表单 225 10.6.1 基本思路 225 10.6.2 表单格式 226 10.7 程实例的自动迁移 228 10.7.1 简单的程实例迁移 230 10.7.2 终止程实例运行的迁移 232 10.7.3 应用活动映射的迁移 234 10.7.4 自定义迁移处理器 236 10.8 小结 239 第11章 升级jBPM3到jBPM4 240 11.1 你所要知道的升级局限性 241 11.2 定义转换工具 242 11.2.1 命令行执行 242 11.2.2 Java编码执行 243 11.3 jBPM3到jBPM4的语义变更及翻译 244 11.4 小结 246 第12章 程虚拟机原理 247 12.1 PVM的架构 247 12.2 PVM的实现 250 12.3 小结 253 第13章 jBPM4的设计思想 254 13.1 API设计 254 13.1.1 活动API 256 13.1.2 事件监听API 256 13.2 执行环境设计 257 13.3 命令设计 258 13.4 服务设计 259 13.5 历史程处理原理 262 13.6 数据持久化设计 263 13.6.1 jBPM4定义资源和实例运行时数据表 264 13.6.2 jBPM4程历史数据表 265 13.6.3 jBPM4身份认证数据表 266 13.6.4 jBPM4引擎属性数据表 267 13.7 例程:扩展jBPM4的API满足客户化的需求 268 13.8 小结 270 第14章 随需而配jBPM4 272 14.1 配置文件设计概要 273 14.2 配置工作日历 274 14.3 配置身份认证组件(组织适配器) 274 14.4 小结 277 第15章 异步工作执行器 278 15.1 设计原理 278 15.2 配置使用 280 15.3 小结 281 第16章 深入jBPM4电子邮件支持 282 16.1 电子邮件的产生 282 16.2 电子邮件服务器 285 16.3 电子邮件扩展 287 16.4 小结 289 第17章 系统日志 290 17.1 配置日志 290 17.2 日志输出级别 292 17.3 Java Logging API日志 292 17.4 利用持久化层日志进行调试 294 17.5 小结 295 第18章 jBPM4与Spring框架集成 296 18.1 集成的目标 297 18.2 为集成配置jBPM4 297 18.3 为集成配置Spring 299 18.4 使用 301 18.5 测试 302 18.6 小结 302 第19章 jBPM4与JBoss应用服务器集成 303 19.1 定义打包部署 303 19.2 在JBoss企业级编程模型中使用jBPM4 304 19.3 小结 306 第20章 中国特色工作的jBPM实现 307 20.1 退回 308 20.2 取回 313 20.3 会签 318 20.4 委派 326 20.5 自由 331 20.6 小结 332 附录A jBPM术语 334
驰骋工作引擎研发于2003年,具有.net与java两个版本,它们代码结构、数据库结构、设计思想、功能组成、操作手册完全相同。程表单模版两个版本完全通用。 CCFlow是.net版本的简称,由济南团队负责研发。JFlow是在java版本的简称,由深圳研发团队研发。两款产品核心代码向社会100%开源,十多年来,我们一直践行自己的诺言,努力提高产品质量,真心服务中国IT产业,成为了国内知名的老牌工作引擎,在国内开源BPM领域稳坐第一位。 CCFlow基础功能: 1、引擎设计支持所见即所得的设计:节点设计、表单设计、单据设计、报表定义设计,方向条件设计... 2、程模式简洁只有4种容易理解、线性程、同表单分合、异表单分合、父子程,没有复杂的概念。 3、支持程的基础功能:前进、后退、转向、转发、撤销、抄送、挂起、草稿、任务池共享,也支持高级功能取回审批、项目组、来宾用户等等。 4、支持sdk开发,多表单展现,字段权限控制,从表控制,多种符合中国国情的业务规则设置。 5、表单引擎引擎可以分开也可以单独使用,引擎可以驱动表单引擎,实现多种业务数据的操作,比如:汇总、分合、填写。 6、CCFlow集成方式简洁,容易实现插件模式的开发。 7、SDK接口丰富,注释详细, 丰富的帮助文档, 容易上手。 8、更多的功能请参考官方网站。 CCFlow特点: 1、CCFlow成长于中国2003年,历史长久,在多种生产、管理环境中成长起来,是国内老牌的工作引擎,拥有众多的爱好者,开发者, 100%的核心代码开源。 2、历经多个项目多种行业磨练(请参考官方网站成功案例),规则丰富,生命力强,绝大多数应用可以实现无代码设计。 3、CCFlow的核心代码都是公司自己研发的,核心算法也是基于实际应用,经过我们十多年的发展,每个所服务的客户都能得到最佳的程解决方案。 4、CCFlow没有借助第3方的程软件,拥有独立知识产权, 所以我们最容易扩展,实现客户的需求。 5、CCFlow功能强大,可配置性好,通常的应用开发可以实现无代码实现,面向业务人员、系统管理员、与程序员。 6、使用开源的软件好处众多,可以跟踪调试,可以修改,研究者众多,容易得到帮助,可以与我们的开发人员在线互动,遇到问题可以在第1时间解决。 7、CCFlow是国内第一款同时拥有.net版本与java版本的工作引擎,两者互为影子版本,数据库解构,配置界面完全相同。 8、CCFlow设计思路精巧、概念简单。只有线性、同表单分合、异表单分合、父子程四个概念。 有涵盖多种行为的5*5的算法,程模式实现现实生活中绝大多数模式(目前没有我们解决不了的问题)。 9、CCFlow的概念简洁、通俗易懂, 运行规则与运行模式清晰,数据库结构设计精简,规则丰富,帮助详实。 10、CCFlow是国内引擎与表单引擎集成较好的bpm软件,引擎可以操纵表单引擎数据实现复杂的业务数据处理与权限控制。 11、CCFlow拥有200多个程演示模版,涵盖了我们在开发过程中遇到的很多的应用场景,参考这些模版,容易获得帮助。 12、CCFlow拥有40多个单元测试案例,这些单元测试案例,是保障ccflow稳定运行的基础,在核心代码修改后容易找打问题。 13、CCFlow资料完善(约:16万字),拥有众多的爱好者,开发者容易得到帮助。 CCFlow的代码放在Git上,容易修改代码与我们合并。 14、CCFlow集成方便, 概念、名词通俗易懂。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值