Activiti5基于jBPM4的开源工作流系统10分钟入门指南
- 格式:doc
- 大小:429.50 KB
- 文档页数:7
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应用开发——入门篇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文件中的目标。
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的学习流程 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⼊门指南1.⼯作流与⼯作流管理系统1.1. ⼯作流(Work Flow)⼯作流就是⼯作流程的计算机模型,即将⼯作流程中的⼯作如何前后组织在⼀起的逻辑和规则在计算机中以恰当的模型进⾏表⽰并对其实施计算。
⼯作流要解决的主要问题是:为实现某个业务⽬标,在多个参与者之间,利⽤计算机,按某种预定规则⾃动传递⽂档、信息或者任务。
通俗的说,流程就是多个⼈在⼀起合作完成某件事情的步骤,把步骤变成计算机能理解的⽅式就是⼯作流。
公司内采⽤纸张表单,⼿⼯传递的⽅式,⼀级⼀级审批签字,⼯作效率低下,对于统计报表功能则不能实现。
⽽采⽤⼯作流软件,使⽤者只需在电脑上填写有关表单,会按照定义好的流程⾃动往下跑,下⼀级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,⼤⼤提⾼了效率,实现了知识管理,提升了公司的核⼼竞争⼒。
作为⼀个成熟稳定的⼯作流产品,不仅提供⽇常办公和关键业务流程智能化管理,⽽且能根据公司的特殊实际要求轻松⽅便地随时定制各种流程,并可实现不同⾓⾊不同的跟踪、查询、统计、打印等强⼤功能1.2.⼯作流管理系统(Workflow Management System)⼯作流管理系统(WfMS)的主要功能是通过计算机技术的⽀持去定义、执⾏和管理⼯作流,协调⼯作流执⾏过程中⼯作之间以及群体成员之间的信息交互。
⼯作流需要依靠⼯作流管理系统来实现。
⼯作流管理系统是定义、创建、执⾏⼯作流的系统,应能提供以下三个⽅⾯的功能⽀持:1.定义⼯作流:包括具体的活动、规则等2.运⾏控制功能:在运⾏环境中管理⼯作流过程,对⼯作流过程中的活动进⾏调度3.运⾏交互功能:指在⼯作流运⾏中,WfMS与⽤户(活动的参与者)及外部应⽤程序⼯具交互的功能。
⼀、定义⼯作流⼆、执⾏⼯作流1.3.什么地⽅使⽤⼯作流技术OA中的审批流转的功能,其作⽤是能按照指定的流程(步骤)流转要审批的表单(就像流⽔线⼀样)。
有如下问题:1,流程有很多。
1.工作流与工作流管理系统1.1. 工作流(Work Flow)工作流就是工作流程的计算机模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的方式就是工作流。
公司内采用纸张表单,手工传递的方式,一级一级审批签字,工作效率低下,对于统计报表功能则不能实现。
而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。
作为一个成熟稳定的工作流产品,不仅提供日常办公和关键业务流程智能化管理,而且能根据公司的特殊实际要求轻松方便地随时定制各种流程,并可实现不同角色不同的跟踪、查询、统计、打印等强大功能1.2.工作流管理系统(Workflow Management System)工作流管理系统(WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:1.定义工作流:包括具体的活动、规则等2.运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度3.运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
一、定义工作流二、执行工作流1.3.什么地方使用工作流技术OA中的审批流转的功能,其作用是能按照指定的流程(步骤)流转要审批的表单(就像流水线一样)。
有如下问题:1,流程有很多。
2,不同的公司,流程的具体步骤是不一样的,有时还需要增加新流程或修改现有流程。
⼿把⼿教你如何玩转Activiti⼯作流⼿把⼿教你如何玩转Activiti⼯作流版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。
https:///Cs_hnu_scw/article/details/79059965⼀:Activiti的介绍场景:学校主⾓:阿⽑,班主任,教务处处长问题:有⼀天,阿⽑到学校,感觉到⾝体不舒服,然后想跟班主任请假,然后班主任告诉阿⽑说,你想请假,那么就必须要请假条,这个上⾯必须要我同意,然后再拿到教务处去盖章,然后交给我,这样才可以进⾏请假。
阿⽑,想着,怎么请个假都这么⿇烦,这么多层次处理问题,能不能简便⼀点。
好烦好烦~!!~~分析:从上⾯的⼩例⼦,我们可以很明显的得到⼀个结论,就是:请假流程:阿⽑------》提交申请-----》班主任审批-----》教务处审批-----》请假成功也就是说,这种问题就是⼀种流式的控制管理,当然,这是最简单的,因为⾥⾯没有包含着回馈,相当于只是⼀个⽅向。
其实,到这⾥,Activiti的定义就已经出来了。
Activiti定义:Activiti5是由Alfresco软件在2010年5⽉17⽇发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、⼯作流、服务协作等领域的⼀个开源的、灵活的、易扩展的可执⾏流程语⾔框架。
Activiti基于Apache许可的开源BPM平台,创始⼈Tom Baeyens是JBoss jBPM的项⽬架构师,它特⾊是提供了eclipse插件,开发⼈员可以通过插件直接绘画出业务流程图。
⼆:⽜⼑⼩试---------搭建第⼀个Activiti项⽬流程环境:IDEA(或者Eclipse,本⼈这⾥是⽤IDEA进⾏的)步骤:(1)第⼀步:IDEA安装Activiti插件⾸先,创建⼀个普通的Java⼯程即可,然后按照下⾯流程进⾏:1:点击菜单中的File(最左上⾓),选择settings2:33:然后点击右边的安装,等待⼀下就可以啦。
jbpm工作流入门教程1.jBPM的简单介绍jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储。
参考/products/jbpm2.jBPM和myeclipse的冲突当eclipse安装了myeclipse和jBPM时候,可能有冲突,具体表现在jBPM 的流程设计器不能在eclipse中使用。
3.Hibernate连接mysql数据库的一般参数下面的配置参数,根据需要可以修改:jbpmtest是mysql中的schema的名字;GBK是字符集,可以根据需要修改;username=root,mysql数据库的用户名是root;password=mysql,mysql数据库的用户密码是mysql;hibernate.dialect=org.hibernate.dialect.MySQLDialecthibernate.connection.driver_class=com.mysql.jdbc.Driverhibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncoding= GBKername=roothibernate.connection.password=mysqlhibernate.show_sql=truehibernate.c3p0.min_size=1hibernate.c3p0.max_size=34.Hibernate连接Oracle数据库的一般参数hibernate.dialect=org.hibernate.dialect.Oracle9Dialecthibernate.connection.driver_class=oracle.jdbc.driver.OracleDriverhibernate.connection.url=jdbc:oracle:thin:@localhost:1521:orcl ername =jbpmhibernate.connection.password=jbpm5.为jBPM创建数据库表等内容5.1.为mysql创建数据库以及数据内容JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema();JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().createSchema();这2个语针对mysq有效.5.2.为oralce创建数据库以及数据内容JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema();JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().createSchema();上面的语句对oralce无效。
觉得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任务将报告自动发送给所有股东。
. 。