Activiti总结
Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activi。。。

Activiti⼯作流框架学习笔记(⼆)之springboot2.0整合⼯作流Activi。
以前在⼯作当中做过不少与⼯作流Activiti有关的⼯作,当时都是spring集成activiti5.22的项⽬,现在回过头去看,其实版本已经稍微⽼了,因此,基于先前的⼯作经验,决定⽤较新版本的技术来重新梳理下以前接触过的技术。
决定⽤springboot2.0+Activiti6.0来做实践总结。
第⼀步,在springboot项⽬pom.xml⽂件引⼊相关依赖:1<!--Activiti ⼯作流-->2<dependency>3<groupId>mysql</groupId>4<artifactId>mysql-connector-java</artifactId>5<scope>5.1.35</scope>6</dependency>78<dependency>9<groupId>org.activiti</groupId>10<artifactId>activiti-spring</artifactId>11<version>6.0.0</version>12</dependency>1314<dependency>15<groupId>com.fasterxml.jackson.core</groupId>16<artifactId>jackson-core</artifactId>17<version>2.9.5</version>18</dependency>第⼆步,建⽴Activiti的配置类1 @Configuration2 public class Activiticonfig {34 /**5 * 流程实例类,启动流程时创建6 * @return7 */8 @Bean9 public ProcessEngine processEngine(){10 ProcessEngineConfiguration pro=ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();11 pro.setJdbcDriver("com.mysql.jdbc.Driver");12 pro.setJdbcUrl("jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&nullCatalogMeansCurrent=true");13 pro.setJdbcUsername("root");14 pro.setJdbcPassword("root");15 //避免发布的图⽚和xml中⽂出现乱码16 pro.setActivityFontName("宋体");17 pro.setLabelFontName("宋体");18 pro.setAnnotationFontName("宋体");19 pro.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);20 return pro.buildProcessEngine();21 }222324 /**25 * 仓库服务类,⽤于管理bpmn⽂件与流程图⽚26 * @return27 */28 @Bean29 public RepositoryService repositoryService(){30 return processEngine().getRepositoryService();31 }3233 /**34 * 流程运⾏服务类,⽤于获取流程执⾏相关信息35 * @return36 */37 @Bean38 public RuntimeService runtimeService(){39 return processEngine().getRuntimeService();40 }4142 /**43 * 任务服务类,⽤户获取任务信息44 * @return45 */46 @Bean47 public TaskService taskService(){48 return processEngine().getTaskService();49 }505152 /**53 * 获取正在运⾏或已经完成的流程实例历史信息54 * @return55 */56 @Bean57 public HistoryService historyService(){58 return processEngine().getHistoryService();59 }6061 /**62 * 流程引擎的管理与维护63 * @return64 */65 @Bean66 public ManagementService managementService(){67 return processEngine().getManagementService();68 }6970 /**71 * 创建、更新、删除,查询群组和⽤户72 * @return73 */74 @Bean75 public IdentityService identityService(){76 return processEngine().getIdentityService();77 }7879 }在springboot⼯程⾥简单加完这些配置后,启动项⽬,原以为可以正常⽣成Activi6.0⼯作流⾃带的28张表,但这时出现了⼀堆错误:### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'example.act_ge_property' doesn't exist ### The error may exist in org/activiti/db/mapping/entity/Property.xml### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntityImpl.selectProperty-Inline### The error occurred while setting parameters### SQL: select * from ACT_GE_PROPERTY where NAME_ = ?### Cause: java.sql.SQLSyntaxErrorException: Table 'example.act_ge_property' doesn't exist出现这种问题主要是因为MySql的版本问题,在连接mysql的url后边加⼀个&nullCatalogMeansCurrent=true即可解决。
Activiti总结

Activiti总结Activiti总结1.关于Activiti简介1.Activiti它是什么东西,有什么功能,怎么实现?Activiti是⼀个业务流程管理引擎,它的流程图⼤概就像是列车的轨道,⽽所要执⾏的对象像是⼀辆⾃动运⾏的列车,只要列车启动,它就能沿着轨道⼀直⾛到终点,⽽其中的节点就像是列车到达终点途中所要经过的⽕车站,它会告诉⽕车下⼀站是哪⾥,然后⽕车就往指定的下⼀站驶去,直到终点,流程结束。
2.Activiti数据库的理解以及关联关系1)activiti在每个节点都能知道下⼀个节点是什么,以及当前任务是什么,那势必会有存储流程的各种信息的表,activiti共有23张表ACT_RE_*: 'RE'表⽰repository。
这个前缀的表包含了流程定义和流程静态资源(图⽚,规则,等等)。
ACT_RU_*: 'RU'表⽰runtime。
这些运⾏时的表,包含流程实例,任务,变量,异步任务,等运⾏中的数据。
Activiti只在流程实例执⾏过程中保存这些数据,在流程结束时就会删除这些记录。
这样运⾏时表可以⼀直很⼩速度很快。
ACT_ID_*: 'ID'表⽰identity。
这些表包含⾝份信息,⽐如⽤户,组等等。
ACT_HI_*: 'HI'表⽰history。
这些表包含历史数据,⽐如历史流程实例,变量,任务等等。
ACT_GE_*: 通⽤数据,⽤于不同场景下。
2) 表关联关系资源库流程规则表1) act_re_deployment 部署信息表2) act_re_model 流程设计模型部署表3) act_re_procdef 流程定义数据表运⾏时数据库表1) act_ru_execution运⾏时流程执⾏实例表2) act_ru_identitylink运⾏时流程⼈员表,主要存储任务节点与参与者的相关信息3) act_ru_task运⾏时任务节点表4) act_ru_variable运⾏时流程变量数据表历史数据库表1) act_hi_actinst 历史节点表2) act_hi_attachment历史附件表3) act_hi_comment历史意见表4) act_hi_identitylink历史流程⼈员表5) act_hi_detail历史详情表,提供历史变量的查询6) act_hi_procinst历史流程实例表7) act_hi_taskinst历史任务实例表8) act_hi_varinst历史变量表组织机构表1) act_id_group⽤户组信息表2) act_id_info⽤户扩展信息表3) act_id_membership⽤户与⽤户组对应信息表4) act_id_user⽤户信息表这四张表很常见,基本的组织机构管理,关于⽤户认证⽅⾯建议还是⾃⼰开发⼀套,组件⾃带的功能太简单,使⽤中有很多需求难以满⾜需重新⾃建。
activiti流转原理

activiti流转原理Activiti是一个开源的用于工作流和业务流程管理的引擎,它采用了基于BPMN 2.0标准的模型作为输入,并提供了强大的流转引擎来执行这些模型。
它提供了一种灵活而可扩展的方式来管理和执行各种类型的工作流和业务流程。
在Activiti中,流转是指将一个流程实例从一个活动节点转移到下一个活动节点的过程。
流转的原理是通过执行和控制来实现的。
下面将详细介绍Activiti的流转原理。
1.流转的触发流转的触发可以通过多种方式来实现,包括手动触发、定时触发、事件触发等。
手动触发是指用户在流程运行过程中手动执行一些操作来引发流转,比如提交申请、审核通过等。
定时触发是指根据预定的时间表来触发流转,比如在特定的日期或时间段执行一些活动。
事件触发是指根据特定的事件发生来触发流转,比如收到消息、邮件等。
2.流转的执行流转的执行是指按照预定的流程模型,将流程实例从一个活动节点转移到下一个活动节点的过程。
在Activiti中,流转的执行是由各种执行器来完成的,包括以下几种:-用户任务执行器:用于执行用户任务,即需要人工干预的活动节点。
用户任务执行器负责分配任务给用户,等待用户完成任务,并在任务被完成后继续流转。
-脚本任务执行器:用于执行脚本任务,即需要执行一段脚本的活动节点。
脚本任务执行器负责解析并执行脚本,并在脚本执行完成后继续流转。
-服务任务执行器:用于执行服务任务,即需要调用外部服务的活动节点。
服务任务执行器负责调用服务接口,并在服务调用完成后继续流转。
-接收任务执行器:用于执行接收任务,即等待外部触发事件的活动节点。
接收任务执行器负责等待特定的事件发生,并在事件发生后继续流转。
3.流转的控制流转的控制是指根据预定的流程规则和条件控制流程实例的流转。
在Activiti中,流程规则和条件可以通过表达式和脚本来定义和处理。
流转的控制主要包括以下几个方面:-顺序流控制:根据流程模型中定义的顺序流规则,按照活动节点的先后顺序依次执行。
工作流Activiti的学习总结activiti的API和虚拟工作流测试

工作流Activiti 的学习总结(五)activiti 的API和虚拟工作流测试工作流Activiti的学习总结(五)activiti的API和虚拟工作流测试activiti的API在activiti引擎中,你可以通过多种方式获取ProcessEngine对象,从ProcessEngine中获取各种服务对象,从而访问工作流/BPM方法。
ProcessE ngi ne和她的各种服务均为线程安全性服务。
在整个项目中每一种服务仅需要保持一个引用。
ProcessE ngi neprocessE ngin e=ProcessE ngines.getDefaultProcessE n gin e();R un timeServiceruntimeService=processE ngin e.getR un timeService();RepositoryServicerepositoryService=processE ngi ne.getRepo sitoryService();TaskServicetaskService=processE ngine.getTaskServi ce();Ma nageme ntServicema nagementService=processE ngin e.getMa n ageme ntService();lde ntityServiceide ntityService=processE ngi ne.ge tIdentityService();HistoryServicehistoryService=processE ngi ne.get HistoryService();ServiceService=processEngine.getService();针对ProcessEngine 的说明:ProcessEngine.getDefaultProcessEngine() 在第一个被调用的时候初始化并创建一个流程引擎,在以后的调用中返回同一个引用的流程引擎对象。
activiti 概念

activiti 概念Activiti是一个开源的、基于Java的业务流程管理(BPM)框架。
它提供了一系列能够帮助企业实现业务流程自动化的功能,包括流程设计、流程执行、流程监控等。
本文将围绕Activiti的概念展开,逐步介绍Activiti 的主要特点、工作原理、核心组件以及与其他流程引擎的比较。
一、Activiti的概念Activiti是一个轻量级的、开源的、基于Java的BPM框架。
它具有以下主要特点:1. 灵活性:Activiti支持各种类型的流程、任务和事件,并且可以与现有的应用系统集成,以满足不同企业的需求。
2. 可扩展性:Activiti可以通过编写自定义的服务类和监听器来扩展其功能,以满足特定的业务需求。
3. 可视化设计:Activiti提供了一个图形化的设计器,可以方便地设计和修改流程模型。
4. 易于使用:Activiti的API简单易用,可以快速上手,并且提供了丰富的文档和示例。
二、Activiti的工作原理Activiti的工作原理是基于业务流程管理的各个环节进行自动化处理。
其主要过程如下:1. 流程设计:使用Activiti提供的图形化设计器,设计和绘制业务流程模型。
流程模型由一系列的活动、转移和网关组成,描述了流程的执行顺序和条件。
2. 流程部署:将流程模型部署到Activiti的运行环境中,生成流程定义。
流程定义包括处理任务的路由和执行逻辑等信息。
3. 流程执行:根据流程定义,Activiti会实例化一个流程实例,并按照流程模型中定义的顺序和条件来执行活动。
4. 任务处理:在流程执行过程中,会产生一系列的待处理任务。
这些任务会分配给相应的参与者,并通过任务管理功能进行处理。
5. 流程监控:Activiti提供了一个监控系统,可以实时查看流程的执行情况和各个活动的状态。
三、Activiti的核心组件Activiti的核心组件包括流程引擎、流程仓库、运行时服务、任务服务以及监控服务。
activiti在项目使用过程中常见的问题

activiti在项目使用过程中常见的问题Activiti是一款广泛应用的开源工作流引擎,它提供了一套完整的工作流解决方案,可以用于处理和管理复杂的业务流程。
在项目使用过程中,可能会遇到一些常见的问题,本文将介绍一些这些问题及解决方法。
一、环境搭建问题:1.1数据库配置问题:Activiti支持多种数据库,如MySQL、Oracle等。
在使用Activiti时,需要按照官方文档的说明,正确配置数据库连接信息。
如果遇到数据库连接失败的问题,可以检查数据库的访问权限和网络连接是否正常。
1.2 Activiti版本兼容性问题:在使用Activiti时,需要选择合适的版本。
如果使用了不兼容的版本,可能会出现部分功能无法正常使用或出现异常。
因此,在选择版本时,需要仔细查看官方文档,并根据实际需求选择合适的版本。
1.3网络环境问题:Activiti的运行需要依赖网络环境。
如果网络环境不稳定或存在故障,可能会导致Activiti无法正常工作。
此时,可以尝试重启网络设备或更换网络环境,以保证网络的稳定性。
二、流程定义问题:2.1流程图绘制问题:在绘制流程图时,需要使用Activiti提供的设计器或其他工具。
绘制过程中可能会遇到界面冻结、无法保存等问题。
如果遇到这些问题,可以尝试更新设计器或使用其他工具进行流程图的绘制。
2.2流程节点配置问题:在定义流程时,需要给每个节点配置相应的属性和监听器。
如果节点配置不正确,可能会导致流程无法正常运行或出现异常。
因此,在配置节点时,需要仔细查看节点的属性要求,并遵循官方文档的指导进行配置。
2.3流程变量传递问题:在流程中,可能需要传递一些参数或数据。
如果传递的参数或数据不正确,可能会导致流程无法正常运行或出现错误。
此时,可以通过调试代码或查看日志来排查问题,并确认参数或数据是否正确传递。
三、流程执行问题:3.1流程启动问题:在启动流程时,可能会遇到流程启动失败或无法找到流程定义的问题。
《深入Activiti流程引擎:核心原理与高阶实战》札记
《深入Activiti流程引擎:核心原理与高阶实战》读书笔记目录一、流程引擎概述 (2)1.1 流程引擎的定义 (4)1.2 流程引擎的作用 (5)1.3 流程引擎的发展历程 (6)二、Activiti核心原理 (7)三、Activiti高阶实战 (9)3.1 案例介绍 (10)3.1.1 电商订单处理流程 (11)3.1.2 供应链协同流程 (13)3.2 高阶特性与应用场景 (15)3.2.1 全局异步任务处理 (17)3.2.2 事件子系统的扩展性 (19)3.2.3 分布式事务处理 (20)3.3 实战中的问题与解决方案 (21)3.3.1 数据一致性保证 (22)3.3.2 性能优化策略 (24)3.3.3 安全性与权限控制 (25)四、总结与展望 (27)4.1 本书总结 (28)4.2 展望未来 (29)4.2.1 Activiti的发展趋势 (30)4.2.2 对流程引擎技术的未来思考 (32)一、流程引擎概述流程引擎(Process Engine)是Activiti工作流引擎的核心组件,负责处理和执行业务流程。
在《深入Activiti流程引擎:核心原理与高阶实战》作者详细介绍了Activiti流程引擎的基本概念、架构以及关键组件,帮助读者更好地理解和使用这一强大的工作流引擎。
流程引擎主要用于管理、执行和监控业务流程。
它可以将业务流程定义为一系列任务和事件,并根据这些任务和事件的执行顺序来驱动整个流程的运行。
通过流程引擎,企业可以实现对业务流程的可视化管理、自动化执行和监控,从而提高工作效率、降低运营成本和提升客户满意度。
进程定义(Process Definition):用于描述业务流程的结构和规则,包括任务、事件、网关等元素。
一个进程定义可以对应一个或多个流程实例。
流程实例(Process Instance):表示一个正在执行的业务流程,由一个或多个任务组成。
每个任务都有一个唯一的ID,用于在后续处理中引用。
工作流引擎Activiti使用总结
⼯作流引擎Activiti使⽤总结1.简单介⼯作流引擎与Activiti对于⼯作流引擎的解释请参考百度百科:⼯作流引擎1.1 我与⼯作流引擎在第⼀家公司⼯作的时候主要任务就是开发OA系统,当然基本都是有⼯作流的⽀持,不过当时使⽤的⼯作流引擎是公司⼀些⽜⼈开发的(据说是⽤⼀个开源的引擎修改的),名称叫CoreFlow;功能相对Activiti来说⽐较弱,但是能满⾜⽇常的使⽤,当然也有不少的问题所以后来我们只能修改引擎的代码打补丁。
现在是我⼯作的第⼆家公司,因为要开发ERP、OA等系统需要使⽤⼯作流,在项⽬调研阶段我先搜索资料选择使⽤哪个开源⼯作流引擎,最终确定了Activiti5并基于公司的架构做了⼀些DEMO。
1.2 Activiti与JBPM5?对于Activiti、jBPM4、jBPM5我们应该如何选择,在InfoQ上有⼀篇⽂章写的很好,从⼤的层⾯⽐较各个引擎之间的差异,请参考⽂章:纵观jBPM:从jBPM3到jBPM5以及Activiti51.3 Activiti资料版本:Activiti的版本是从5开始的,因为Activiti是使⽤jBPM4的源码;版本发布:两个⽉发布⼀次。
Activit中⽂群:54357162.初次使⽤遇到问题收集因为Activiti刚刚退出不久所以资料⽐较空缺,中⽂资料更是少的可怜,所以开始的时候⼀头雾⽔(虽然之前⽤过⼯作流,但是感觉差距很多),⽽且官⽅的⼿册还不是很全⾯;所以我把我在学习使⽤的过程遇到的⼀些疑问都罗列出来分享给⼤家;以下⼏点是我遇到和想到的,如果你还有什么疑问可以在评论中和我交流再补充。
2.1 部署流程图后中⽂乱码乱码是⼀直缠绕着国⼈的问题,之前各个技术、⼯具出现乱码的问题写过很多⽂章,这⾥也不例外……,Activiti的乱码问题在流程图中。
流程图的乱码如下图所⽰:解决办法有两种:2.1.1 修改源代码⽅式修改源码org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas在构造⽅法public ProcessDiagramCanvas(int width, int height)中有⼀⾏代码是设置字体的,默认是⽤Arial字体,这就是乱码产⽣的原因,把字改为本地的中⽂字体即可,例如:1Font font = new Font("WenQuanYi Micro Hei", Font.BOLD, 11);当然如果你有配置⽂件读取⼯具那么可以设置在*.properties⽂件中,我就是这么做的:1Font font = new Font(PropertyFileUtil.get("activiti.diagram.canvas.font"), Font.BOLD, 11);view raw从5.12版本开始⽀持设置字体名称,在引擎中添加如下设置,在⽣成图⽚时即可使⽤微软雅⿊设置图⽚中的⽂字。
工作流Activit介绍与应用
工作流Activiti介绍与应用工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
我的理解就是:将部分或者全部的工作流程、逻辑让计算机帮你来处理,实现自动化。
1Activiti简介Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。
它实现了BPMN 规范,可以发布设计好的流程定义,并通过api进行流程调度。
1.1Activiti基础编程框架Activiti的基础编程框架如下:Activiti基于Spring,ibatis等开源中间件作为软件平台,在此之上构建了非常清晰的开发框架。
上图列出了Activiti的核心组件。
:流程引擎的抽象,对于开发者来说,它是我们使用Activiti的外观(faade),通过它可以获得我们需要的一切服务。
(TaskService,RuntimeService,RepositoryService...):Activiti按照流程的生命周期(定义,部署,运行)把不同阶段的服务封装在不同的Service中,用户可以非常清晰地使用特定阶段的接口。
通过ProcessEngine能够获得这些Service实例。
1.2Activiti重要服务类ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。
RepositoryService: Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。
RepositoryService提供了对 repository 的存取服务。
TaskService:在Activiti业务流程定义中每一个执行节点都被称作一个Task,流程运行过程中,与每个任务节点相关的接口,比如complete, delete,delegate等等都是TaskService提供的。
activiti概念
activiti概念Activiti是一个开源的工作流引擎,它是基于BPMN 2.0规范设计的,用于处理和管理业务流程。
Activiti允许用户以图形化的方式设计、执行和监控工作流程,使得业务流程的定义和管理变得更加简单和灵活。
以下是Activiti的一些关键概念:1. 流程定义(Process Definition):指的是将业务流程描述为一个或多个连续任务和决策的图形模型。
流程定义通常使用BPMN 2.0规范进行设计,包括定义流程中的活动、网关、事件和边界事件等。
2. 流程实例(Process Instance):是指根据流程定义创建的一个具体的流程执行实例。
每当启动一个新的流程实例时,都会根据流程定义创建一个新的流程实例。
3. 任务(Task):是流程实例中的具体工作单元,可以被分配给特定的用户或角色。
任务通常需要被执行者完成指定的操作,并且可以包含附加的属性(如截止日期、优先级等)。
4. 执行(Execution):是Activiti中一个非常重要的概念,表示流程实例中的当前执行状态。
每当流程执行到某个任务节点时,都会创建一个对应的执行。
5. 条件(Condition):是用于控制流程中的分支和合并的逻辑条件。
在Activiti中,可以使用表达式、脚本或业务规则等方式定义条件。
6. 网关(Gateway):是用于控制流程中分支和合并的特殊节点。
在Activiti中,有并行网关、排他网关和包容网关等不同类型的网关。
7. 监听器(Listener):是用于在流程执行过程中监听和处理事件的机制。
可以通过监听器在特定的事件触发时执行自定义的业务逻辑。
8. 定时器(Timer):是用于在流程中触发定时事件的机制。
可以根据时间或时间表达式定义定时器,并在指定的时间触发特定的操作。
这些概念共同构成了Activiti工作流引擎的核心功能和特性,可以帮助用户更好地管理和执行业务流程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Activiti总结1.关于Activiti简介1.Activiti它是什么东西,有什么功能,怎么实现?Activiti是一个业务流程管理引擎,它的流程图大概就像是列车的轨道,而所要执行的对象像是一辆自动运行的列车,只要列车启动,它就能沿着轨道一直走到终点,而其中的节点就像是列车到达终点途中所要经过的火车站,它会告诉火车下一站是哪里,然后火车就往指定的下一站驶去,直到终点,流程结束。
2.Activiti数据库的理解以及关联关系1)activiti在每个节点都能知道下一个节点是什么,以及当前任务是什么,那势必会有存储流程的各种信息的表,activiti共有23张表ACT_RE_*: 'RE'表示repository。
这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。
ACT_RU_*: 'RU'表示runtime。
这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。
Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。
这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。
这些表包含身份信息,比如用户,组等等。
ACT_HI_*: 'HI'表示history。
这些表包含历史数据,比如历史流程实例,变量,任务等等。
ACT_GE_*: 通用数据,用于不同场景下。
2) 表关联关系资源库流程规则表1) act_re_deployment 部署信息表2) act_re_model 流程设计模型部署表3) act_re_procdef 流程定义数据表运行时数据库表1) act_ru_execution运行时流程执行实例表2) act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息3) act_ru_task运行时任务节点表4) act_ru_variable运行时流程变量数据表历史数据库表1) act_hi_actinst 历史节点表2) act_hi_attachment历史附件表3) act_hi_comment历史意见表4) act_hi_identitylink历史流程人员表5) act_hi_detail历史详情表,提供历史变量的查询6) act_hi_procinst历史流程实例表7) act_hi_taskinst历史任务实例表8) act_hi_varinst历史变量表组织机构表1) act_id_group用户组信息表2) act_id_info用户扩展信息表3) act_id_membership用户与用户组对应信息表4) act_id_user用户信息表这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足需重新自建。
sys_user用户信息表sys_dept部门信息表sys_role 角色信息表sys_menu 菜单信息表通用数据表1) act_ge_bytearray二进制数据表,会存储自己所创建的工作流程图2) act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录3.关于elicplse中activiti插件下载4.关于maven 项目中activiti 配置依赖jar包<dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>${activiti.version}</version></dependency>注: 默认activiti-engine依赖中没有提供SLF4J绑定的jar,需要根据你的实际需要使用日志框架。
<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring</artifactId><version>${activiti.version}</version></dependency>注: 可以直接用于Activiti-Spring的集成注解的配置(如:@EnableActiviti注解,@Bean注解)<dependency><groupId>org.activiti</groupId><artifactId>activiti-modeler</artifactId><version>${activiti.version}</version></dependency>注: activiti-modeler模块提供模型先关的操作:创建、保存、转换json与xml 格式等访问详细解释路径: /docs/activiti/index.html <dependency><groupId>org.activiti</groupId><artifactId>activiti-diagram-rest</artifactId><version>${activiti.version}</version></dependency>注: activiti-diagram-rest模块用来处理流程图有关的功能:流程图布局(layout)、节点高亮等访问: https:///whatlookingfor/article/details/52958668 5.关于activiti网关1)网关分为3种1.1)排他网关1.1.1)排他网关(也叫异或(XOR)网关,或更技术性的叫法基于数据的排他网关),用来在流程中实现决策。
当流程执行到这个网关,所有外出顺序流都会被处理一遍。
其中条件解析为true的顺序流(或者没有设置条件,概念上在顺序流上定义了一个'true')会被选中,让流程继续运行。
注意这里的外出顺序流与BPMN 2.0通常的概念是不同的。
通常情况下,所有条件结果为true的顺序流都会被选中,以并行方式执行,但排他网关只会选择一条顺序流执行。
就是说,虽然多个顺序流的条件结果为true,那么XML中的第一个顺序流(也只有这一条)会被选中,并用来继续运行流程。
如果没有选中任何顺序流,会抛出一个异常。
1.1.2)图形标记: 排他网关显示成一个普通网关(比如,菱形图形),内部是一个“X”图标,表示异或(XOR)语义。
注意,没有内部图标的网关,默认为排他网关。
BPMN2.0规范不允许在同一个流程定义中同时使用没有X和有X 的菱形图形。
1.2)并行网关1.2.1)网关也可以表示流程中的并行情况。
最简单的并行网关是并行网关,它允许将流程分成多条分支,也可以把多条分支汇聚到一起。
of execution.并行网关的功能是基于进入和外出的顺序流的:分支:并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
汇聚:所有到达并行网关,在此等待的进入分支,直到所有进入顺序流的分支都到达以后,流程就会通过汇聚网关。
注意,如果同一个并行网关有多个进入和多个外出顺序流,它就同时具有分支和汇聚功能。
这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。
与其他网关的主要区别是,并行网关不会解析条件。
即使顺序流中定义了条件,也会被忽略。
1.2.2)图形标记: 并行网关显示成一个普通网关(菱形)内部是一个“加号”图标,表示“与(AND)”语义。
1.3)包含网关1.3.1)包含网关可以看做是排他网关和并行网关的结合体。
和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们。
但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关一样。
包含网关的功能是基于进入和外出顺序流的:分支:所有外出顺序流的条件都会被解析,结果为true的顺序流会以并行方式继续执行,会为每个顺序流创建一个分支。
汇聚:所有并行分支到达包含网关,会进入等待章台,直到每个包含流程token的进入顺序流的分支都到达。
这是与并行网关的最大不同。
换句话说,包含网关只会等待被选中执行了的进入顺序流。
在汇聚之后,流程会穿过包含网关继续执行。
注意,如果同一个包含节点拥有多个进入和外出顺序流,它就会同时含有分支和汇聚功能。
这时,网关会先汇聚所有拥有流程token的进入顺序流,再根据条件判断结果为true的外出顺序流,为它们生成多条并行分支。
1.3.2)图形标记: 并行网关显示为一个普通网关(菱形),内部包含一个圆圈图标。
2)参考:/docs/activiti/index.html6.Activiti流程图简介6.1)怎么画流程图:6.1.1)上述已有插件路径,在elicplse中创建后缀名为: .bpmn文件(系统自动解析文件为xml格式) 如图:注:Activiti会自动生成xml格式的文件6.2)工作流引擎6.2.1)ProcessEngine对象,这是Activiti工作的核心。
负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
7.Activiti的几个核心类7.1)activiti服务结果图:7.1.1)如图:7.2)activiti核心类:7.2.1)activiti八大核心组件:(1)repositoryService:activiti是不能直接识别xml格式的流程图的,流程图文件必须被部署到activiti中才能被activiti识别并使用。
而这个过程就是使用repositoryService来完成的,流程图被导入后,会放到act_re_打头的几个表中。
repositoryService提供了若干个接口,既可以部署xml文件到数据库中,也可以从数据库检索特定流程图供处理。
(2)runtimeService:activiti最重要的一个服务,基本上所有的关于流程的操作都是通过此服务来执行的。
例如启动流程、审批、会签等等。
(3)formService:工作流的设计思路之一就是将每个节点需要显示的数据直接绑定到此节点。
而formService就是专门为此服务的,使用formService可以获取某个节点绑定的表单数据。
当然,如果没有表单绑定到此节点,此服务就没有任何用处。
(4)identityService:activiti自带的用于管理自身的组织机构的服务。