Activiti工作流入门详解完整教程(精编文档).doc
- 格式:doc
- 大小:1.13 MB
- 文档页数:42
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会自动生成对应的流程图片。
activiti⼊门最近项⽬有个⼯作流的需求,从头开始学⼀下activiti,记录⼀些问题。
1.去官⽹下载activiti7.0或者使⽤maven下载,并在idea中下载activiBPM流程插件2.创建⼀个普通的maven依赖,添加activiti、mysql、mybatis、连接池、junit等jar包。
推荐使⽤相关配置如下:<properties><activiti.version>7.0.0.Beta1</activiti.version></properties><dependencies><dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-converter</artifactId><version>${activiti.version}</version></dependency><!--<dependency>--><!--<groupId>org.activiti</groupId>--><!--<artifactId>activiti-json-converte</artifactId>--><!--<version>${activiti.version}</version>--><!--</dependency>--><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-layout</artifactId><version>${activiti.version}</version></dependency><!--<dependency>--><!--<groupId>org.activiti</groupId>--><!--<artifactId>activiti-cloud-services</artifactId>--><!--<version>${activiti.version}</version>--><!--</dependency>--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.4</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.32</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.28</version></dependency></dependencies>有两个依赖下不下来,先不管它,后⾯再填坑3.在resource下配置log4j,activiti.cfg.xml配置⽂件(<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!--配置数据库相关--><!--数据库驱动--><property name="jdbcDriver" value="com.mysql.jdbc.Driver"/><!--数据库连接--><property name="jdbcUrl" value="jdbc:mysql:///activiti"/><!--数据库⽤户名和密码--><property name="jdbcUsername" value="root"/><property name="jdbcPassword" value="root"/><!--activiti数据库表在⽣成时的策略--><!--true表⽰数据库中存在相应的表就直接使⽤,不存在则创建--><property name="databaseSchemaUpdate" value="true"/></bean>),注意bean的id和配置⽂件的名称都不能修改。
Activiti工作流使用说明文档V1.02019年8月9日目录一、模型设计器 (4)1.1任务 (5)1.1.1 用户任务 (5)1.1.2 服务任务 (5)1.1.3 脚本任务 (6)1.1.4 业务规则任务 (7)1.1.5 接收任务 (7)1.1.6 手动任务 (7)1.1.7 邮件任务 (8)1.1.8 Camel任务 (8)1.1.9 Mule任务 (8)1.1.10 决策任务 (9)1.2构造 (10)1.2.1 子流程 (10)1.2.2 事件子流程 (11)1.3泳道列表 (11)1.4分支 (12)1.4.1 排他分支 (12)1.4.2 并行分支 (12)1.4.3 包容分支 (13)1.4.4 事件分支 (13)1.5事件 (14)1.5.1 定时器事件 (14)1.5.2 信号事件 (14)1.5.3 消息事件 (16)1.5.4 错误事件 (16)1.5.5 边界事件 (17)1.5.6 中间事件 (18)1.5.7 开始事件 (18)1.5.8 结束事件 (18)1.6属性元素 (18)1.6.1 异步 (18)1.6.2 排他 (19)1.6.3 补偿 (19)1.6.4 中断任务 (20)1.6.5 分配 (21)1.6.6 到期时间 (22)1.6.7 表单 (22)1.6.8 表达式 (24)1.6.9 多实例 (25)1.7监听器配置 (28)1.7.1 执行监听器 (29)1.7.2 任务监听器 (30)1.7.3 事件监听器 (32)1.7.4 全局事件监听器 (33)二、workflow-service (34)2.1数据更新逻辑 (34)2.2方法表达式配置 (35)2.3自定义外置表单 (36)2.4事件监听器配置 (37)2.5方法调用说明 (37)三、常见问题 (37)一、模型设计器模型设计器项目qqdznyyglpt-workflow-designer主要完成自定义流程、表单设计,可以在模型设计器中完成整个功能的流转,但仅限与admin(密码默认为test)相同租户的用户可使用全功能,其他租户用户登录后只有流程设计、表单配置、决策表配置功能,无法在设计器进行流程执行。
Activiti⼯作流学习(⼆)流程实例、执⾏对象、任务⼀.前⾔前⾯说明了基本的流程部署、定义,启动流程实例等基本操作,下⾯我们继续来学习流程实例、执⾏对象、任务。
⼆.流程实例、执⾏对象说明整个Activiti的⽣命周期经过了如下的⼏个步骤: 1.流程部署 ---> 2.启动流程实例 --- > 3.执⾏流程对象(⼀个流程实例包含多执⾏对象) ---> 4.完成整个流程说明:三.例⼦演⽰1.完成我的任务2.查询流程状态(判断流程正在执⾏,还是结束)3.查询历史任务4.流程实例、执⾏对象、任务四.对应数据库表------------------------------------------流程实例、执⾏对象、任务--------------------------------------------------正在执⾏的执⾏对象表-- 执⾏ID_ 56 流程实例ID_ 56 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 正在运⾏的任务定义ID_ 【可变】 USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6SELECT T.*, T.ROWID FROM ACT_RU_EXECUTION T;--流程实例历史表开始信息--历史流程定义ID_ 56 流程S实例ID_ 56 业务KEY_10000001 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 开始任务节点ID_ STARTEVENT52B3145F-C133-7B3D-F50F-E6D48BA60EAESELECT T.*, T.ROWID FROM ACT_HI_PROCINST T;--正在执⾏的任务对象表--任务ID_ 68 执⾏ID_ 56 流程实例ID_ 56 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 任务节点ID_ USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6SELECT T.*, T.ROWID FROM ACT_RU_TASK T;--历史任务流程实例信息--历史任务ID_ 68 流程实例ID_ 56 执⾏实例ID_ 56 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 任务节点ID_ USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6 表单KEY_ /PAGES/HOLIDAY/HOLIDAYMANAGE/H --历史任务ID_ 74 流程实例ID_ 56 执⾏实例ID_ 56 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 任务节点ID_ USERTASK04A84BE1-1133-7B3D-F511-1D0B7BB0A668 表单KEY_ /PAGES/HOLIDAY/HOLIDAYMANAGE/HO SELECT T.*, T.ROWID FROM ACT_HI_TASKINST T;--所有活动节点历史任务表--历史任务ID_58 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 流程实例ID_ 56 流程执⾏ID_ 56 任务节点ID_ STARTEVENT52B3145F-C133-7B3D-F50F-E6D48BA60EAE--历史任务ID_67 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 流程实例ID_ 56 流程执⾏ID_ 56 任务节点ID_ USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6 任务ID_ 68--历史任务ID_73 流程定义ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 流程实例ID_ 56 流程执⾏ID_ 56 任务节点ID_ USERTASK04A84BE1-1133-7B3D-F511-1D0B7BB0A668 任务ID_ 74SELECT T.*, T.ROWID FROM ACT_HI_ACTINST T;五.流程变量模拟设置获取流程变量的场景设置流程变量获取流程变量流程变量对应数据库表----------------------------------------流程变量信息----------------------------------------------------正在执⾏的流程变量信息SELECT T.*, T.ROWID FROM ACT_RU_VARIABLE T;--历史流程变量信息存放历史表单重要信息--流程实例ID_ 56 执⾏实例ID_ 56 任务ID_SELECT T.*, T.ROWID FROM ACT_HI_VARINST T;历史意见信息、节点参与者信息(任务办理⼈)-------------------------------------------历史意见信息-------------------------------------------------历史审批意见表--任务ID_ 68 流程定义ID_ 56SELECT T.*, T.ROWID FROM ACT_HI_COMMENT T;-----------------------------------------节点参与者信息(任务办理⼈)---------------------------------------------------任务办理⼈表(个⼈任务、组任务)SELECT T.*, T.ROWID FROM ACT_RU_IDENTITYLINK T;--历史任务办理⼈表(个⼈任务、组任务)SELECT T.*, T.ROWID FROM ACT_HI_IDENTITYLINK T;。
activiti⼯作流⼊门学习⼯作流⼀般在OA系统⽤的⽐较多,当然,只要有流程审批的地⽅都会⽤到,activiti只是开源的⼯作流中⽐较流⾏的⼀个,还有其他的开源的⼯作流,这⾥学习activiti⼯作流;前⾯部分是关于activiti的总体的介绍及如何搭建,后半部分使⽤⼀个demo演⽰,清晰直观的观察⼯作流的⼯作机制及数据库表的数据变化,对⼯作流的理解和使⽤有⼀个直观的认识。
⼀.总体认识1.介绍Activiti是⼀个开源的⼯作流框架,⽤的最多的例⼦就是审批流程,⽐如员⼯请假,申请之后提交,然后会提交到经理,经理审批完可能还会部长审批,等⼀系列流程;还有⽐如报销申请,需要先由经理审批,然后由总监审批,最后还要财务审批等,经过⼀系列事先制定好的流程;当然了,这只是⼯作流的⼀个应⽤,实际⼯作流还有其他的很多应⽤;activiti使⽤起来也⽐较⽅便,⾃动⽣成25张数据库表,有8⼤核⼼API,通过这些核⼼API就可以很⽅便的使⽤⼯作流。
2.部署⽅式很多讲⼯作流的博客都⽐较⽼,⽽且都只从⾃⼰的⼀个部署⽅式去讲解,不同的博客可能使⽤不同的部署⽅式,让初学者感到很懵,不知道到底应该⽤哪个,其实部署流程资源有很多种⽅法,包括classpath、InputStream、字符串、zip格式压缩包,不同的部署⽅式可以根据项⽬或者⾃⼰实现的难易程度进⾏⾃由选择;因为⽀持直接加载.bpmn格式的⽂件,⽐较⽅便,⽽actiBPMN插件也正好可以很⽅便的⽣成.bpmn格式的⽂件,很⽅便的画流程图,所以这就是前⾯要先安装actiBPMN插件原因,画出流程图之后,然后部署就⾏了,所以我使⽤直接加载.bpmn⽂件的⽅式部署,希望初学者不要在这⾥疑惑。
3.使⽤使⽤步骤:部署流程==>发起⼀个流程实例(流程开始)==>使⽤流程(查询流程、查询代办、提交审批、结束流程….等等)每次修改完流程图之后,都要重新部署流程;每开始⼀个(审批流程)新的流程实质就是发起⼀个流程实例;发起流程之后,整个流程就开始了。
1公共词汇1.1基础概念(背会)1.1.1任务列表任务列表也称之为工作列表,指用户自己有权限处理的任务队列。
在BPM 套件中,业务人员通过Work Client的“我的任务”功能,或由用户通过API实现的自定义任务列表中,获取自己的任务列表。
任务列表通常根据状态可分为:待处理的任务、已处理的任务、委托的任务、委托完成的任务等。
任务列表具有相对性,比如:对一个用户是代理的任务,对另一个用户来说可能是"自己的任务"。
以下解释都是相对"当前用户"来说的:1)待处理的任务:等待当前用户处理的任务,即用户有权限处理的任务;2)已处理的任务:当前用户已经处理过的任务;3)委托的任务:当前用户代办或者协办出去的任务;4)委托完成的任务:经当前用户代办或者协办出去,并且已经完成的任务。
或者根据当前用户的代理关系,由有权限的代理人完成的任务;待处理任务是用户使用流程应用时,由应用分配的日常工作的主体。
按照不同属性又有其它分类:1)按照任务的所有者属性可以分为:公共任务、个人任务。
2)按照任务的来源可以分为:自己的任务、代理的任务、代办的任务、协办的任务等。
1.1.2表单表单是SG-UAP BPM 套件对人机交互时需要输入的现实工作中各种纸质单据、数据的抽象。
例如,用户在请假时需要填写请假申请表,请假申请表会被用户的上级主管审批,然后由人事部门留存。
在SG-UAP BPM 套件中,这样一个请假申请表可以看作是一个表单,当请假流程被启动时,用户可以通过人机交互的方式,在WEB界面填写请假的相关事由及请假时间等,然后通过流程的驱动给上级主管审批。
SG-UAP BPM 套件在流程设计期提供了为开始事件、人工活动定义表单规格的能力。
通过这个定义规格,引擎在运行期可以自动帮助用户生成可供交互填写的表单,可以最大限度地减少开发人员开发WEB页面的工作量,同时快速帮助用户处理各种复杂的人机交互工作。
2021全⽹最全Activiti7教程02(Activiti7⼊门使⽤-欢迎收藏)全⽹最详细Activiti系列⽂章,强烈建议收藏加关注哦!Activiti的⼊门应⽤1Activiti的基本使⽤1.1 创建Maven项⽬ 创建⼀个普通的Maven项⽬,并添加相关的依赖<properties><slf4j.version>1.6.6</slf4j.version><log4j.version>1.2.12</log4j.version><activiti.version>7.0.0.Beta1</activiti.version></properties><dependencies><dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring</artifactId><version>${activiti.version}</version></dependency><!-- bpmn 模型处理 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-model</artifactId><version>${activiti.version}</version></dependency><!-- bpmn 转换 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-converter</artifactId><version>${activiti.version}</version></dependency><!-- bpmn json数据转换 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-json-converter</artifactId><version>${activiti.version}</version></dependency><!-- bpmn 布局 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-layout</artifactId><version>${activiti.version}</version><exclusions><exclusion><groupId>com.github.jgraph</groupId><artifactId>jgraphx</artifactId></exclusion></exclusions></dependency><!-- activiti 云⽀持 --><dependency><groupId>org.activiti.cloud</groupId><artifactId>activiti-cloud-services-api</artifactId><version>${activiti.version}</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency><!-- mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!-- 链接池 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency></dependencies>1.2 log4j 添加⼀个⽇志⽂件log4j.properties# Set root category priority to INFO and its only appender to CONSOLE.#log4j.rootCategory=INFO, CONSOLE debug info warn error fatallog4j.rootCategory=debug, CONSOLE, LOGFILE# Set the enterprise logger category to FATAL and its only appender to CONSOLE..apache.axis.enterprise=FATAL, CONSOLE# CONSOLE is set to be a ConsoleAppender using a PatternLayout.log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n# LOGFILE is set to be a File appender using a PatternLayout.log4j.appender.LOGFILE=org.apache.log4j.FileAppenderlog4j.appender.LOGFILE.File=d:\log\act\activiti.loglog4j.appender.LOGFILE.Append=trueyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n1.3 添加Activiti配置⽂件 我们在本案例中使⽤的数据库是mysql8.0. Activiti的默认的使⽤⽅式是要求我们在resources下创建activiti.cfg.xml⽂件,默认的⽅式的名称是不能修改的。
一、工作流工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
简单的说,就是做事的流程,一个流程中有多个环节,每个环节都有特定的人来进行审核和办理。
工作流管理系统:工作流管理系统顾名思义就是管理工作流的一个系统。
一个流程有了,要想按照这种预定义的流程自动进行就需要将流程通过工作流管理系统管理起来。
工作流管理系统是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流规则进行工作流实例的执行。
工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。
二、Activiti工作流管理系统Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。
Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM 的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。
2.1、工作流引擎(ProcessEngine)ProcessEngine是activiti工作的核心,负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
2.2、核心配置文件(activiti.cfg.xml)activiti.cfg.xml作为Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
简单的说就是,通过配置文件配置工作流引擎生成工具参数获取想要的工作流引擎,通过工作流引擎获取各种操作对象。
2.3、数据库表Activiti的后台是有数据库的支持,一共23表都以ACT_开头。
第二部分是表示表的用途的两个字母标识。
⼿把⼿教你如何玩转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:然后点击右边的安装,等待⼀下就可以啦。
Activiti⼯作流引擎表关系重点知识详解及简单认知1、Activiti⼯作流引擎是什么,使⽤它有什么好处,使⽤它的场景描述,认识它?activiti的⾃我介绍在本⽂中就不需要做了,或许在⾯试中需要,关于怎么使⽤activiti,主要有三步曲:第⼀步:定义流程模型(在同⼀项⽬中,流程可以定义多个)第⼆步:部署定义好的流程模型(在同⼀项⽬中,可以同时部署多个流程,部署后的流程会⽣成流程⾝份唯⼀key标识,这样当你想使⽤哪个流程,就使⽤哪个流程的key)第三步:使⽤流程模型(要想使⽤部署后的流程模型,就离不开activiti引擎框架所提供的七⼤服务接⼝,都是使⽤这七⼤服务接⼝来完成⼯作的)2、前⾯简单介绍了activiti的使⽤,引出了⼀个问题,activiti的七⼤服务接⼝有哪些?在说七⼤接⼝之前,咱们先说⼀个核⼼基础引擎接⼝/**ProcessEngine的表⽩:它把服务的七⼤接⼝在本类中都实例化了,并单独为每⼀个服务接⼝提供了⼀个实例化的⽅法,所以说通过它可以获取所有的服务接⼝对象,它使⽤了外观设计模式,关于设计模式在此处不多说,我只是看他源码结构的时候发现了⽽已。
*/ProcessEngine processEngine // 流程引擎接⼝现在可以介绍有哪七⼤服务接⼝了,闪亮登场,分别是RepositoryService:提供⼀系列管理流程部署和流程定义的API。
RuntimeService:在流程运⾏时对流程实例进⾏管理与控制。
TaskService:对流程任务进⾏管理,例如任务提醒、任务完成和创建任务等。
HistoryService:对流程的历史数据进⾏操作,包括查询、删除这些历史数据。
IdentityService:提供对流程⾓⾊数据进⾏管理的API,这些⾓⾊数据包括⽤户组、⽤户及它们之间的关系。
ManagementService:提供对流程引擎进⾏管理和维护的服务。
FormService:表单服务。
【最新整理,下载后即可编辑】Activiti入门教程详解完整教程1.Activiti介绍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会自动生成对应的流程图片。
2.4 准备开发环境2.4.1 创建maven web项目,在maven中添加Activiti依赖在eclipse左边工作栏右键New选择创建Maven Project项目,创建一个名为ActivitiTest的项目点击Finish完成。
右键项目选择Properties,选择Project Facets 勾选上图中的选项,点击Apply,再点击OK然后将项目转换成web项目,右键项目选择Properties,在Project Facets中做如下勾选,然后点击Appy应用和OK确定然后右键项目Properties ,选择Deployment Assembly,将test相关目录Remove掉之保留main下面需要发布的内容,如下图然后点击Appply和OK然后在pom.xml文件中添加以下依赖<dependencies><dependency><groupId>org.Activiti</groupId><artifactId>Activiti-engine</artifactId><version>5.21.0</version></dependency><dependency><groupId>org.Activiti</groupId><artifactId>Activiti-spring</artifactId><version>5.21.0</version></dependency><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.4.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.6</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.7.6</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency></dependencies>然后在命令行下mvn compile 编译当前项目,将需要的包下载到本地仓库2.4.2 初始化数据库1)src/main/resource目录下创建Activiti.cfg.xml文件,内容如下<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context" xmlns:tx="/schema/tx" xmlns:jee="/schema/jee" xmlns:aop="/schema/aop"xsi:schemaLocation="/schema/bean s/schema/beans/spring-beans-3.0.xs d/schema/context/schema/context/spring-context-3.0 .xsd/schema/tx/schema/tx/spring-tx-3.0.xsd /schema/jee/schema/jee/spring-jee-3.0.xsd /schema/aop/schema/aop/spring-aop-3.0.xsd"><bean id="processEngineConfiguration"class="org.Activiti.engine.impl.cfg.StandaloneProcessEngineConfig uration"><property name="jdbcDriver"value="com.mysql.jdbc.Driver" /><property name="jdbcUrl"value="jdbc:mysql://localhost:3306/test?useUnicode=true&char acterEncoding=utf8"/><property name="jdbcUsername"value="root"/><property name="jdbcPassword"value="root"/><property name="databaseSchemaUpdate"value="true"/> </bean></beans>jdbcUrl为你电脑数据库的urljdbcUsername为数据库用户名jdbcPassword为数据库密码2)在main/java目录下创建任意目录和类编写创建Activiti数据表方法public class CreateTable {/***** 创建流程表* */@Testpublic void createTable() {ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromR esource("Activiti.cfg.xml").buildProcessEngine();System.out.println("------processEngine:" + processEngine);}}然后运行该测试方法,如果运行成功,在数据库中应该会产生25张Activiti的相关数据表2.4.3 Activiti表说明下面是概括了几个常用的数据表流程部署相关表act_re_deployement 部署对象表act_rep_procdef 流程定义表act_ge_bytearray 资源文件表act_ge_prperty 主键生成策略表(对于部署对象表的主键ID)流程实例相关表act_ru_execution 正在执行的执行对象表(包含执行对象ID和流程实例ID,如果有多个线程可能流程实例ID不一样)act_hi_procinst 流程实例历史表act_hi_actinst 存放历史所有完成的任务Task 任务相关表act_ru_task 代办任务表(只对应节点是UserTask的)act_hi_taskinst 代办任务历史表(只对应节点是UserTask的)act_hi_actinst 所有节点活动历史表(对应流程的所有节点的活动历史,从开始节点一直到结束节点中间的所有节点的活动都会被记录)流程变量表act_ru_variable 正在执行的流程变量表act_hi_variable 流程变量历史表3.核心API3.1 ProcessEngine说明:1) 在Activiti中最核心的类,其他的类都是由他而来。