Activiti5基于jBPM4的开源工作流系统10分钟入门指南
Activiti工作流入门详解完整教学教程

Activiti入门教程详解完整教程1.A ctiviti介绍Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。
Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss JBPM的项目架构师,它的特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。
1.1工作流引擎ProcessEngine对象,这是Activiti工作的核心。
负责生成流程运行时的各种实例及数据,监控和管理流程的运行。
1.2BPMN业务流程建模与标注(Business Process Model and Notation,BPMN),描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)2.准备环境2.1Activiti软件环境1)JDK1.6或者更高版本2)支持的数据库有:h2,mysql,oracle,mysql,db2等3)支持Activiti运行的jar包,可以通过maven依赖引入4)开发环境为Eclipse3.7或者以上版本,myeclipse为8.6版本2.2安装流程设计器(eclipse插件)1)打开Help →Install New Software →Add输入Name: Activiti DesignerLocation: /designer/update/输入完成后,单击OK按钮等待下载完成后安装。
安装完成后在菜单选项中会出现Activiti的目录选项2.3 设置eclipse activit插件的画流程图选项打开菜单Windows --> Preferences --> Activiti -->Save 下流程图片的生成方式勾选上Create process definition image when saving the diagram操作,勾选上这个操作后在画流程图后保存eclipse会自动生成对应的流程图片。
JBPM4.4

JBPM4.4应用开发——入门篇2010-10-27 20:38:24标签:JBPM工作流工作流程入门原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/1931202/411612首先简单说说JBPM——java Business Process Management (java 业务流程管理)jBPM是一个框架、一堆开放的源代码。
而非一套“应用程序”。
jBPM的流程引擎可以看做是一个java工程——若干java类、依赖库和配置文件;使用和学习jBPM需要如下条件:1.jBPM的流程定义和运行时的上下文需要被存储到关系型数据库中——可以是基于调试目的的内存数据库HSQLDB,也可以是真正的持久化数据库(MySql,Oracle,PostgreSql,Sybase等等);2.jBPM的流程设计一般都需要一个基于客户端的图形化流程设计器软件,当然在jBPM4版本以后可以支持在web上做流程设计(这要归功于Sigvio项目)3.最终,基于jBPM开发出来的应用程序一般都会被部署到一台应用服务器中,以便服务于来自web的访问、监控和管理等。
注意:在jBPM4.3以后,几乎所有的准备工作(安装数据库,建表,安装应用服务器,安装图形化设计器插件等)jBPM软件包的发布者都帮我们做好了。
只要通过Ant脚本“一键获取”所需要的jBPM4整套开发、运行和管理环境。
在安装jBPM之前首先要安装JDK和Ant。
快速开始--------------------------------------------------------一、1.打开cmd命令控制台:进入到${jbpm.home}/install2.运行脚本:ant demo.setup.tomcat或ant.demo.setup.jboss使用这两个服务器都可以。
具体这个命令做了上面事:请查看install目录下的build.xml文件中的目标。
jBPM4工作流应用开发指南

目录
第一篇 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
因为工作的机会,作者曾作为RedHat JBoss产品应用架构师有幸深入地“解剖”了jBPM系列产品并且为国内 多个jBPM应用项目提供咨询、培训等服务。作者发现在许多优秀的工作流产品中已经实现了的设计、计划实现的 创意以及许多让人忍不住“击节叫好”的思想,都已经被jBPM系列产品做到了!当前,在Red Hat JBoss项目组 工程师、架构师们的不懈努力下,jBPM已经发布了第4个大版本,最新的jBPM4进一步克服了jBPM3的固有缺陷 (这在书中会多次提到),并且更加“变本加厉”地增强和优化了jBPM——这个世界上首屈一指的开源工作流产 品的功能。
本书分两篇。第一篇介绍工作流管理技术的概念、起源和发展历程,开源工作流选型,以及jBPM——这个迄 今为止最成功的Java开源工作流项目的“前世今生”。此外,本篇还可以帮助读者快速上手jBPM4、使用jBPM4开 发企业流程应用,包括安装和配置jBPM4、使用jBPM图形化流程设计器(GPD)设计流程、把流程部署到服务器上 去、使用jBPM4 Service API控制流程、掌握jBPM流程定义语言、流程变量、流程脚本。第二篇主要涉及基于 jBPM4这个强大的应用程序框架打造属于自己独特业务的“企业流程管理平台”,包括jBPM4扩展研发先决条件、 深入jPDL和jBPM Service API、升级jBPM3到jBPM4、流程虚拟机原理、jBPM4的设计思想、随需而配jBPM4、异 步工作执行器、深入jBPM4电子邮件支持、系统日志、jBPM4与Spring框架集成、jBPM4与JBoss应用服务器集成、 中国特色工作流的jBPM实现。
activiti工作流基础方法

activiti工作流基础方法
Activiti是一个基于Java的工作流引擎,它提供了一套丰富的API来支持工作流的定义、部署、运行和管理。
以下是Activiti工作流的一些基础方法:
1. 部署流程定义:使用Deployment API可以将BPMN 流程定义文件部署到Activiti引擎中。
部署完成后,可以获取到流程定义的ID,并使用该ID 进行流程实例的创建。
2. 创建流程实例:使用ProcessInstance API可以创建一个新的流程实例。
在创建流程实例时,需要指定流程定义的ID、流程的起始节点ID以及其他相关参数。
3. 启动流程实例:一旦流程实例创建成功,可以使用Start API启动流程实例。
启动后,流程将按照定义的流程逻辑开始执行。
4. 执行任务:在流程执行过程中,会涉及到多个任务节点的处理。
使用Task API可以获取当前任务节点的相关信息,并进行任务的处理。
5. 完成任务:完成任务节点后,需要使用Task API将任务状态更新为已完成。
同时,根据流程定义中的规则,可能会自动创建新的任务节点或者触发其他事件。
6. 查询流程实例:使用ProcessInstance API可以查询指定ID的流程实例的状态信息,包括当前节点、历史记录等。
7. 查询任务:使用Task API可以查询指定ID的任务节点信息,包括任务状态、处理人等。
8. 删除流程实例:当流程实例执行完毕或者需要终止流程时,可以使用Delete API删除流程实例。
以上是Activiti工作流的一些基础方法,它们提供了对流程定义、部署、执行和管理的全面支持,可以帮助您轻松实现工作流的自动化和管理。
jbpm4工作流详解

jbpm4⼯作流详解jBPM4的学习流程 1>jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息 2>对jbpm4的数据库表简单介绍 3>通过ProcessEngine类的贯穿来获取服务接⼝(Service API)来认识所有的常⽤类 4>对流程定义语⾔中活动⼏个常⽤的介绍 5>事件的介绍 JBPM:部署流程定义 jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息直接将业务流程部署到数据库中。
它不仅可以部署单个业务流程,也可以部署⼀组业务流程归档到服务器上。
jbpm⾸先扫描业务流程归档中所有以.jpdl.xml结尾的⽂件,并解析,然后⽤来发起流程实例,业务流程归档中所有其他资源也会在部署过程中被持久化到数据库中。
所有这些资源被统⼀编号保存在数据库表jbpm4_lob中我们可以通过jbpm4提供的RepositoryService.getResourceAsStream API随时访问这些资源。
jbpm4的数据库表简单介绍JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST 流程活动(节点)实例表JBPM4_HIST_DETAIL 流程历史详细表JBPM4_HIST_PROCINST 流程实例历史表JBPM4_HIST_TASK 流程任务实例历史表 JBPM4_HIST_VAR 流程变量(上下⽂)历史表JBPM4_ID_GROUP ⾓⾊表 JBPM4_ID_MEMBERSHIP ⽤户⾓⾊表 JBPM4_ID_USER ⽤户表 JBPM4_JOB 定时表 JBPM4_LOB 存储表JBPM4_PARTICIPATION 参与者表 JBPM4_SWIMLANE 泳道表 JBPM4_TASK 任务表 JBPM4_VARIABLE 上下⽂表(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB:存储上传⼀个包含png和jpdl.xml的zip包的相关数据 jbpm4_deployment表多了⼀条记录 jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion jbpm4_lob 表多了⼆条记录,保存流程图png图⽚和jpdl.xml (4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST 分别存放的是Process Instance、Activity Instance的历史记录。
jBPM4.4入门指南

jBPM4.4⼊门指南1.⼯作流与⼯作流管理系统1.1. ⼯作流(Work Flow)⼯作流就是⼯作流程的计算机模型,即将⼯作流程中的⼯作如何前后组织在⼀起的逻辑和规则在计算机中以恰当的模型进⾏表⽰并对其实施计算。
⼯作流要解决的主要问题是:为实现某个业务⽬标,在多个参与者之间,利⽤计算机,按某种预定规则⾃动传递⽂档、信息或者任务。
通俗的说,流程就是多个⼈在⼀起合作完成某件事情的步骤,把步骤变成计算机能理解的⽅式就是⼯作流。
公司内采⽤纸张表单,⼿⼯传递的⽅式,⼀级⼀级审批签字,⼯作效率低下,对于统计报表功能则不能实现。
⽽采⽤⼯作流软件,使⽤者只需在电脑上填写有关表单,会按照定义好的流程⾃动往下跑,下⼀级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,⼤⼤提⾼了效率,实现了知识管理,提升了公司的核⼼竞争⼒。
作为⼀个成熟稳定的⼯作流产品,不仅提供⽇常办公和关键业务流程智能化管理,⽽且能根据公司的特殊实际要求轻松⽅便地随时定制各种流程,并可实现不同⾓⾊不同的跟踪、查询、统计、打印等强⼤功能1.2.⼯作流管理系统(Workflow Management System)⼯作流管理系统(WfMS)的主要功能是通过计算机技术的⽀持去定义、执⾏和管理⼯作流,协调⼯作流执⾏过程中⼯作之间以及群体成员之间的信息交互。
⼯作流需要依靠⼯作流管理系统来实现。
⼯作流管理系统是定义、创建、执⾏⼯作流的系统,应能提供以下三个⽅⾯的功能⽀持:1.定义⼯作流:包括具体的活动、规则等2.运⾏控制功能:在运⾏环境中管理⼯作流过程,对⼯作流过程中的活动进⾏调度3.运⾏交互功能:指在⼯作流运⾏中,WfMS与⽤户(活动的参与者)及外部应⽤程序⼯具交互的功能。
⼀、定义⼯作流⼆、执⾏⼯作流1.3.什么地⽅使⽤⼯作流技术OA中的审批流转的功能,其作⽤是能按照指定的流程(步骤)流转要审批的表单(就像流⽔线⼀样)。
有如下问题:1,流程有很多。
JBPM4工作流介绍

工作流的基本概念 参考模型
应用场景JB基P本M概4念实J现BPM4
开发介绍 例子演示 系统整合
10
工作流的概述
描述 什么是工作流?
工具 什么是工作流引擎?
规范 什么是工作流管理系统?
JBPM工作流
11
什么是工作流?
工作流:
在一个工作群组中,为了达成某一个共同目的而需要 多人协力以串行或平行工作的形式来共同完成的任务。
16
WfMS具有的特点:
1 建立时期:定义和建模。 2 运行时期:调度。 3 运行交互功能:指在工作流运行中,WFMS与用户(业务
工作的参与者或控制者)及外部应用程序工具交互的功能。
JBPM工作流
WfMC工作流管理系统参考模型
JBPM工作流
18
功能模型与参考模型的对应关系
JBPM工作流
ห้องสมุดไป่ตู้
19
JBPM4的实现
串行:
JBPM工作流
30
流程之流转模型
循环:
JBPM工作流
31
流程之流转模型
并行:
JBPM工作流
32
流程之流转模型
聚合:
JBPM工作流
33
JBPM4流程控制最常用、最基本的活动
start
开始活动
分支/聚合
task
任务
state
状态活动
end
结束活动
判断活动
Sub-process 子流程
custom
JBPM工作流
14
什么是工作流管理系统?
工作流管理系统:
工作流管理系统即Workflow Management System, 简称WFMS,是定义、创建、执行、监控工作流的系 统。
jBPM 4.4 入门指南

1.工作流与工作流管理系统1.1. 工作流(Work Flow)工作流就是工作流程的计算机模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的方式就是工作流。
公司内采用纸张表单,手工传递的方式,一级一级审批签字,工作效率低下,对于统计报表功能则不能实现。
而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。
作为一个成熟稳定的工作流产品,不仅提供日常办公和关键业务流程智能化管理,而且能根据公司的特殊实际要求轻松方便地随时定制各种流程,并可实现不同角色不同的跟踪、查询、统计、打印等强大功能1.2.工作流管理系统(Workflow Management System)工作流管理系统(WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:1.定义工作流:包括具体的活动、规则等2.运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度3.运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
一、定义工作流二、执行工作流1.3.什么地方使用工作流技术OA中的审批流转的功能,其作用是能按照指定的流程(步骤)流转要审批的表单(就像流水线一样)。
有如下问题:1,流程有很多。
2,不同的公司,流程的具体步骤是不一样的,有时还需要增加新流程或修改现有流程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
觉得activiti设计得简单而强大,尝试翻译一下他的10分钟入门指南:
10分钟入门指南
通过一个(非常简单的)业务流程,介绍一些基本的Activiti工作流感念和API接口。
使用案例
这个用例叫干脆(straightfoward):有一个公司,暂且叫它BPMCorp。
在BPMCorp内部,会计部门每个月都要写一份财务报告给公司的股东。
但在发送给所有股东之前必须经过上级部门的批准。
下面涉及的所有文件及代码片段均可以通过Activiti分发的examples范例包中找到,请查看包
ertask的内容。
流程图
如上所述的业务流程可以使用Activiti的可视化流程编辑器 Activiti Modeler查看及编辑。
使用BPMN2.0的标准符号则如下图所示:
这里没有什么特殊的东西,图中看到的是一个none start event(左边的圆圈),其次是两个user tasks:"撰写财务报告"和”批准财务报告",以 none end event (右边边框加粗型的圆圈)结束。
XML表示
上述业务流程的XML表示形式如下所示(FinancialReportProcess.bpmn20.xml). 流程中包含一些主要的元素(通过点击链接可以查看更详细的BPMN 2.0 元素的说明):
∙none start event 让我们认识到要开始一个流程。
∙user tasks声明一个基于用户操作的流程任务. 注意第一个任务是分派用户组accountancy的, 而第二个任务是分派到用户组management的. 查看分派用户任务章节可以得到更多怎样分派任务到用户或组的信息。
开始一个流程实例
现在我们有了业务流程的流程定义(process definition)。
通过这个流程定义我们就可以创建一个流程实例(process instances)了。
在这个用例中,一个流程实例将和每月财务报告的创建和批准项匹配。
为了能够通过一个流程定义创建一个流程实例,我们必须先将定义的流程发布(deploy),发布流程意味着两件事:
∙流程定义保存到Activiti引擎的持久化数据库中。
通过发布业务流程,我们就能确保就算在引擎重启后也能够找到该流程的定义。
∙BPMN2.0流程定义文件将被解释到内存中,从而可以通过activiti的API执行相应的操作。
更详细的信息可以通过专门的发布流程章节获取。
就像专门的发布流程章节中提及的,可以通过多种方式来发布流程,以下是其中的一种:
现在我们可以通过在流程id(看XML流程定义文件中的第一行)来初始化一个流程实例了。
注意这个id在Activiti的术语中称为key。
一经上面的初始化将立即通过流程的start event,在start event.之后,紧跟着就是流出流向(在这个用例中只有一条)和到达第一个任务(撰写财务报告)。
Activiti引擎将保存一个任务到数据库中。
这时候附属于该任务的相关用户或用户组的作业也会被保存到数据库中。
任务创建后,处于等待接收状态,引擎将仅在下次接收到而外的触发调用后才会继续下去。
在这个节点,任务是分派到用户组的,意指该用户组中的任何人都可以作为这个任务的候选者来执行这个任务。
任务列表
现在我们可以通过taskService来获取用户的任务列表了。
因为流程定义中这个任务是定义为分派到用户组accountancy的,因此方法中传入的用户名参数"fozzie"必须是属于该用户组的用户:
也可以通过任务的查询API,如下获取用户组的任务:
户fozzie(他是一个会计师)身份登录到Activiti Explorer,选择PROCESSES 页签,在列表的Action列中点击流程“Monthly financial report'”的“S tart Process"链接来启动一个流程实例。
如下图所示:
正如前面解解释的,流程将运行到第一个任务处。
由于我们是以用户fozzie登录,故在我们启动了这个流程实例后,可以看到一个新的候选任务。
我们这是切换到TASKS页签页去看看这个新任务(如下图),可以发现就算其他人启动的流程实例,所有属于用户组accountancy的用户都可以看到这个新的候选任务。
领取任务
现在其中一个会计人员需要领取这个任务(claim the task)。
通过领取任务操作,特定的用户就会成为这个任务的代理人(assignee),这是这个任务就会从用户组accountancy的其他所有用户的列表视图中消失。
领取任务的调用代码如下:
现在这个任务成为了任务领取者的个人任务了。
通过Activiti Explorer界面点击claim按钮将执行相同的领取任务操作。
现在这个任务将显示在任务领取者的个人任务列表中,如下图所示:
完成任务
现在会计员可以开始撰写财务报表了,一但报表撰写完毕,就可以执行完成任务的操作将任务完成掉:
对Activiti引擎来说,这是通知流程实例必须继续跑下去的额外信号。
该任务的外出流向将被解析执行,引导到第二个任务(批准财务报告)。
同样的原理,就像上面第一个任务所发生的事情一样将在第二个任务出发生,唯一不同的是这次任务将被分派到用户组management。
在上面的demo中,使它能够过点击complete按钮来完成任务的。
因Frozzie不是管理者,所以我们需要注销并以kermit(他是管理者)用户登录。
第二个任务现在就显示在待指定任务列表中了。
如下图所示:
结束流程
这个批准任务就像第一个任务的处理一样可以接受和领取。
完成这个任务将导致流程执行到end event节点,在这个节点将终止该流程实例。
该流程实例以及所有与其相关的运行时期的执行数据将会从数据库中删除。
可以通过 Activiti Probe来证实这些数据已被清除。
因为表中已经没有任何流程的执行数据。
很容易看出来上面谈及的业务流程因太简单而无法在现实中使用到。
然而通过上述基于BPMN2.0在Activiti的构建,你将可以通过如下的手段来增强业务流程的功能:
∙通过定义一个timer start event 节点每月自动开始启动流程。
∙定义gateways节点执行条件判断。
为此,管理者可以拒绝财务报表让会计师重建原来的任务。
∙通过声明和使用变量(variables),控制报告在表单的编辑权限。
∙通过在流程结束时定义一个service task任务将报告自动发送给所有股东。
. 。