Activiti工作流入门详解完整教学教程
(待分)activiti完整教程

1.介绍是由软件在年月日发布的业务流程管理()框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。
基于许可的开源平台,创始人是的项目架构师,它的特色是提供了插件,开发人员可以通过插件直接绘画出业务流程图。
1.1工作流引擎对象,这是工作的核心。
负责生成流程运行时的各种实例及数据,监控和管理流程的运行。
1.2业务流程建模与标注(),描述流程的基本符号,包括这些图元如何组合成一个业务流程图( )2.准备环境2.1软件环境1)或者更高版本2)支持的数据库有等3)支持运行的包,可以通过依赖引入4)开发环境为或者以上版本,为版本安装流程设计器(插件))打开→→输入::输入完成后,单击按钮等待下载完成后安装。
安装完成后在菜单选项中会出现的目录选项设置插件的画流程图选项打开菜单> > > 下流程图片的生成方式勾选上操作,勾选上这个操作后在画流程图后保存会自动生成对应的流程图片。
准备开发环境创建项目,在中添加依赖在左边工作栏右键选择创建项目,创建一个名为的项目点击完成。
右键项目选择,选择勾选上图中的选项,点击,再点击然后将项目转换成项目,右键项目选择,在中做如下勾选,然后点击应用和确定然后右键项目,选择,将相关目录掉之保留下面需要发布的内容,如下图然后点击和然后在文件中添加以下依赖<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>然后在命令行下编译当前项目,将需要的包下载到本地仓库初始化数据库)目录下创建文件,内容如下<""""?><""""""""""""""><""""><""""><""""><""""><""""><""""><><>为你电脑数据库的为数据库用户名为数据库密码)在目录下创建任意目录和类编写创建数据表方法{***** 创建流程表* *() {("")();(":" );}}然后运行该测试方法,如果运行成功,在数据库中应该会产生张的相关数据表表说明下面是概括了几个常用的数据表流程部署相关表部署对象表流程定义表资源文件表主键生成策略表(对于部署对象表的主键)流程实例相关表正在执行的执行对象表(包含执行对象和流程实例,如果有多个线程可能流程实例不一样)流程实例历史表存放历史所有完成的任务任务相关表代办任务表(只对应节点是的)代办任务历史表(只对应节点是的)所有节点活动历史表(对应流程的所有节点的活动历史,从开始节点一直到结束节点中间的所有节点的活动都会被记录)流程变量表正在执行的流程变量表流程变量历史表.核心说明:) 在中最核心的类,其他的类都是由他而来。
springbootactiviti工作流的搭建与简单使用

springbootactiviti⼯作流的搭建与简单使⽤前⾔最近⼀直研究springboot,根据⼯作需求,⼯作流需要作为⼀个单独的微服务⼯程来提供给其他服务调⽤,现在简单的写下⼯作流(使⽤的activiti)微服务的搭建与简单使⽤jdk:1.8数据库:mysql 5.7IDE:eclipsespringboot:1.5.8activiti:6.0.01.新建空⽩的maven微服务架构新建maven项⽬的流程不在阐述,这⾥添加上activiti、myslq连接的依赖,只贴主要代码pox.xml<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>com.xxx</groupId><artifactId>xxx</artifactId><version>0.0.1-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.8.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>6.0.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>确认服务是可⽤2.连接服务名、服务端⼝、数据库配置在resources⽬录下的application.properties(项⽬定位原因没有使⽤yaml,可根据⾃⼰项⽬使⽤)spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/activity?characterEncoding=utf8&useSSL=trueername=rootspring.datasource.password=rootspring.jpa.properties.hibernate.hbm2ddl.auto=updatespring.jpa.show-sql=trueserver.port=8081server.context-path=/activityserver.session.timeout=10server.tomcat.uri-encoding=UTF-8确认配置的数据库可⽤3.mainimport org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Created by Guo on 2017/11/15.*/@SpringBootApplicationpublic class ActivityApp{public static void main(String[] args){SpringApplication.run(ActivityApp.class, args);}}4.service及实现service:import org.activiti.engine.task.TaskQuery;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/activityService")public interface ActivityConsumerService {/*** 流程demo* @return*/@RequestMapping(value="/startActivityDemo",method=RequestMethod.GET)public boolean startActivityDemo();}implimport java.util.HashMap;import java.util.Map;import org.activiti.engine.RuntimeService;import org.activiti.engine.TaskService;import org.activiti.engine.impl.persistence.entity.ExecutionEntity;import org.activiti.engine.task.Task;import org.activiti.engine.task.TaskQuery;import ng3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.hongguaninfo.activity.service.ActivityConsumerService;@Service("activityService")public class ActivityConsumerServiceImpl implements ActivityConsumerService {@Autowiredprivate RuntimeService runtimeService;@Autowiredprivate TaskService taskService;@Overridepublic boolean startActivityDemo() {System.out.println("method startActivityDemo begin....");Map<String,Object> map = new HashMap<String,Object>();map.put("apply","zhangsan");map.put("approve","lisi");//流程启动ExecutionEntity pi1 = (ExecutionEntity) runtimeService.startProcessInstanceByKey("leave",map);String processId = pi1.getId();String taskId = pi1.getTasks().get(0).getId();plete(taskId, map);//完成第⼀步申请Task task = taskService.createTaskQuery().processInstanceId(processId).singleResult();String taskId2 = task.getId();map.put("pass", false);plete(taskId2, map);//驳回申请System.out.println("method startActivityDemo end....");return false;}}5.bpmn在resources⽬录下新建⽂件夹:processes,并在processes创建⼀个新的bpmn⽂件,如图⽂件内容:<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="/spec/BPMN/20100524/MODEL" xmlns:xsi="/2001/XMLSchema-instance" xmlns:xsd="/2001/XMLSchema" xmlns:activiti="/bpmn" xmlns:bpmndi="/ <process id="leave" isExecutable="true" isClosed="false" processType="None"><startEvent id="_2" name="StartEvent"></startEvent><endEvent id="_3" name="EndEvent"></endEvent><userTask id="approve" name="经理审批" activiti:assignee="${approve}"></userTask><exclusiveGateway id="_5" name="ExclusiveGateway"></exclusiveGateway><sequenceFlow id="_6" sourceRef="approve" targetRef="_5"></sequenceFlow><sequenceFlow id="_7" name="通过" sourceRef="_5" targetRef="_3"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${pass}]]></conditionExpression></sequenceFlow><userTask id="application" name="提交申请" activiti:assignee="${apply}"></userTask><sequenceFlow id="_9" sourceRef="_2" targetRef="application"></sequenceFlow><sequenceFlow id="_10" sourceRef="application" targetRef="approve"></sequenceFlow><userTask id="modify" name="修改申请" activiti:assignee="${apply}"></userTask><sequenceFlow id="_12" name="不通过" sourceRef="_5" targetRef="modify"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${!pass}]]></conditionExpression></sequenceFlow><sequenceFlow id="_13" sourceRef="modify" targetRef="approve"></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_leave"><bpmndi:BPMNPlane bpmnElement="leave" id="BPMNPlane_leave"><bpmndi:BPMNShape bpmnElement="_2" id="BPMNShape__2"><omgdc:Bounds height="35.0" width="35.0" x="15.0" y="60.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="_3" id="BPMNShape__3"><omgdc:Bounds height="35.0" width="35.0" x="630.0" y="63.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="approve" id="BPMNShape_approve"><omgdc:Bounds height="55.0" width="85.0" x="315.0" y="50.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="_5" id="BPMNShape__5"><omgdc:Bounds height="40.0" width="40.0" x="505.0" y="60.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="application" id="BPMNShape_application"><omgdc:Bounds height="55.0" width="85.0" x="135.0" y="50.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="modify" id="BPMNShape_modify"><omgdc:Bounds height="55.0" width="85.0" x="315.0" y="150.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="_6" id="BPMNEdge__6"><omgdi:waypoint x="400.0" y="77.0"></omgdi:waypoint><omgdi:waypoint x="505.0" y="80.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_7" id="BPMNEdge__7"><omgdi:waypoint x="545.0" y="80.0"></omgdi:waypoint><omgdi:waypoint x="630.0" y="80.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_9" id="BPMNEdge__9"><omgdi:waypoint x="50.0" y="77.0"></omgdi:waypoint><omgdi:waypoint x="135.0" y="77.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_10" id="BPMNEdge__10"><omgdi:waypoint x="220.0" y="77.0"></omgdi:waypoint><omgdi:waypoint x="315.0" y="77.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_12" id="BPMNEdge__12"><omgdi:waypoint x="525.0" y="100.0"></omgdi:waypoint><omgdi:waypoint x="525.0" y="177.0"></omgdi:waypoint><omgdi:waypoint x="400.0" y="177.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_13" id="BPMNEdge__13"><omgdi:waypoint x="357.0" y="150.0"></omgdi:waypoint><omgdi:waypoint x="357.0" y="105.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></definitions>需要认知的问题:.项⽬启动的时候,activiti会⾃动在mysql中创建activiti相关表,不⽤像oracle那样需要⼿动去创建6.验证启动项⽬前,连接数据库,查看需要连接数据库中没有表,启动项⽬完成后,刷新数据库,activiti已经创建相关表,打开act_re_procdef表,流程数据已经存在,即流程已经部署成功。
activity工作流详解

activity工作流详解# Activity工作流在学生社团活动组织中的详解。
一、啥是Activity工作流呀?Activity工作流就像是一个活动的“指挥棒”,它能帮咱们把一个复杂的活动安排得明明白白,让每一步都有条不紊地进行。
比如说咱们社团要举办一场校园音乐节,从前期的策划、场地预订、宣传推广,到活动当天的现场布置、节目表演,再到活动结束后的总结反馈,这一系列的事儿就可以通过Activity工作流来管理。
它能清楚地告诉咱们每一步该做啥,谁来做,啥时候做,就像给活动画了一张清晰的“路线图”。
二、Activity工作流有啥好处呢?# (一)提高效率。
以前咱们组织活动,可能会出现手忙脚乱的情况,一会儿忘了这个事儿,一会儿又耽误了那个事儿。
有了Activity工作流,就像有个小助手在旁边提醒,每个环节都按计划推进,效率自然就提高啦。
就拿校园音乐节来说,宣传组按照工作流的安排,准时把海报贴出去,把宣传信息发出去,就不会出现活动都快开始了,还有很多同学不知道这回事儿的尴尬情况。
# (二)明确分工。
在活动组织中,大家的分工很重要。
Activity工作流能把每个任务分配得清清楚楚,让每个人都知道自己该干啥。
比如在音乐节筹备中,有的同学负责联系演出嘉宾,有的同学负责准备音响设备,大家各司其职,就不会出现互相扯皮或者都不管的情况啦。
# (三)便于跟踪和调整。
活动过程中,有时候会出现一些意外情况。
Activity工作流可以让咱们随时了解活动的进展,看看哪个环节出了问题,然后及时调整。
比如说音乐节当天突然下雨了,咱们可以根据工作流快速安排人员去搭建雨棚,调整活动流程,让活动能继续顺利进行。
三、Activity工作流一般都有哪些环节呢?# (一)活动策划。
这是活动的第一步,就像盖房子要先画图纸一样。
咱们得确定活动的主题、目标、时间、地点、参与人员等等。
比如说校园音乐节,咱们要确定是流行音乐为主还是古典音乐为主,是面向全校学生还是特定的几个学院,活动是在周末还是工作日,在学校的哪个场地举办等等。
Activiti使用步骤(IDEA)

Activiti使⽤步骤(IDEA)⼀.Activiti7体系架构通过加载activiti.cfg.xml⽂件得到ProcessEngineConfiguration对象,通过ProcessEngineConfiguration对象可以得到ProcessEngine对象得到该对象后,可以通过流程引擎对象ProcessEngine来得到各种Service,每⼀种Service接⼝有每个⽤途RepositoryService activiti 的资源管理类RuntimeService activiti 的流程运⾏管理类TaskService activiti 的任务管理类HistoryService activiti 的历史管理类ManagerService activiti 的引擎管理类⼆.Activiti使⽤步骤1.流程定义使⽤Activiti Designer⼯具创建流程图新建⼀个BPMNFile流程图,可更改该流程图的ID 和每个任务环节的执⾏⼈,流程图就是⼀个xml⽂件,每⼀个流程需要⽣成⼀张流程图保存, ⾸先将.bpmn⽂件改为.xml⽂件 然后右键该xml⽂件Diagrams--->show BPMN 2.0 Designer就能⽣成⼀张流程图, 将流程图导出保存到项⽬对应⽬录即可,然后将xml改回bpmn即可2.流程部署需要将流程部署到Activiti当中,代表当前有该流程/*** 流程部署* `act_ge_bytearray` 流程定义的资源信息,包含bpmn和png流程⽂件信息* `act_re_deployment` 流程部署信息,包含流程名称,ID,Key等* `act_re_procdef` 流程定义信息*/@Testpublic void deployment() {//获取ProcessEngine对象默认配置⽂件名称:activiti.cfg.xml 并且configuration的Bean实例ID为processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取RepositoryService对象进⾏流程部署RepositoryService repositoryService = processEngine.getRepositoryService();//进⾏部署,将对应的流程定义⽂件⽣成到数据库当中,作为记录进⾏保存Deployment deployment = repositoryService.createDeployment().addClasspathResource("bpmn/holiday.bpmn") //加载流程⽂件.addClasspathResource("bpmn/holiday.png").name("请假流程") //设置流程名称.key("holidayKey").deploy(); //部署//输出部署信息System.out.println("流程名称:" + deployment.getName());System.out.println("流程ID:" + deployment.getId());System.out.println("流程Key:" + deployment.getKey());}3.创建流程实例流程定义相当于类流程实例相当于类的实例(对象)/*** 启动流程实例* `act_hi_actinst` 已开始和执⾏完毕的活动信息* `act_hi_identitylink` 历史参与者信息* `act_hi_procinst` 流程实例信息* `act_hi_taskinst` 历史任务实例* act_ru_execution 任务执⾏信息* act_ru_identitylink 当前任务参与者* `act_ru_task` 任务信息*/@Testpublic void startInstance() {//获取ProcessEngine对象默认配置⽂件名称:activiti.cfg.xml 并且configuration的Bean实例ID为processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取到RuntimeService对象RuntimeService runtimeService = processEngine.getRuntimeService();//创建流程实例ProcessInstance holiday = runtimeService.startProcessInstanceByKey("myProcess_1");//红字是流程图的key值//输出实例信息System.out.println("流程部署ID:" + holiday.getDeploymentId());System.out.println("流程实例ID:" + holiday.getId());System.out.println("活动ID:" + holiday.getActivityId());}执⾏效果:`act_hi_actinst` 已开始和执⾏完毕的活动信息`act_hi_identitylink` 历史参与者信息`act_hi_procinst` 流程实例信息`act_hi_taskinst` 历史任务实例* act_ru_execution 任务执⾏信息* act_ru_identitylink 当前任务参与者* `act_ru_task` 任务信息4.⽤户查询代办任务/*** 查看代办任务*/@Testpublic void getTask() {//获取ProcessEngine对象默认配置⽂件名称:activiti.cfg.xml 并且configuration的Bean实例ID为processEngineConfigurationProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取⼀个TaskService对象TaskService taskService = processEngine.getTaskService();//查询代办业务 createTaskQuery查询任务 taskCandidateOrAssigned查询任务执⾏者 processDefinitionKey:查询流程/*** taskCandidateOrAssigned匹配规则:1.Assigned 2.配置bpmn⽂件中定义的值* taskAssignee匹配规则:1.Assigned*//*List<Task> list = taskService.createTaskQuery().taskCandidateOrAssigned("lisi").processDefinitionKey("holiday").list();*/List<Task> list = taskService.createTaskQuery().taskAssignee("zhangsan").processDefinitionKey("myProcess_1").list();//分页:List<Task> list = taskService.createTaskQuery().taskAssignee("zhangsan").processDefinitionKey("holiday").listPage(i,j);for (Task task : list) {System.out.println("任务名称:" + task.getName());System.out.println("任务执⾏⼈:" + task.getAssignee());System.out.println("任务ID:" + task.getId());System.out.println("流程实例ID:" + task.getProcessInstanceId());}}5.⽤户进⾏任务处理/*** 任务处理:当所有任务处理完毕,对应当前流程实例信息删除,但是可以在历史中查看到该信息*/@Testpublic void completeTask() {//获取ProcessEngine对象默认配置⽂件名称:activiti.cfg.xml 并且configuration的Bean实例ID为processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取⼀个TaskService对象TaskService taskService = processEngine.getTaskService();//任务处理plete("2505");}先查看代办任务,再调⽤ plete(); ⽅法传⼊代办ID任务就被处理掉了上⼀步zhangsan被处理掉了,没有了代办任务,再查找zhangsan的下⼀步,lisi的代办任务发现lisi有了代办任务,数据库表也更新了处理完所有流程后ru表就为空了,数据都保存到了hi历史表6.流程结束7.当业务流程结束后通过历史可以查看到已经⾛完的流程/*** 查看历史任务*/@Testpublic void getHistory() {//获取ProcessEngine对象默认配置⽂件名称:activiti.cfg.xml 并且configuration的Bean实例ID为processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取HistoryService接⼝HistoryService historyService = processEngine.getHistoryService();//获取历史任务HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery();//获取指定流程实例的任务historicActivityInstanceQuery.processInstanceId("2501");//获取任务列表List<HistoricActivityInstance> list = historicActivityInstanceQuery.list();for (HistoricActivityInstance ai : list) {System.out.println("任务节点ID:"+ai.getActivityId());System.out.println("任务节点名称:"+ai.getActivityName());System.out.println("流程实例ID信息:"+ai.getProcessDefinitionId());System.out.println("流程实例ID信息:"+ai.getProcessInstanceId());System.out.println("==============================");}}。
activiti流程开发基本步骤详解

activiti流程开发指南•一、BPMN•二、activiti主要接口•三、如何实现一个业务流程•四、如何管理所有流程与实例•五、开发流程•六、api一、BPMN1. 什么是BPMN首先BPMN规范是由标准组织BPMI发布的.BPMN 1.0规范发布于2004年5月。
此规范展示了BPMI组织两年多的努力成果。
BPMN的主要目标就是要提供被所有业务用户理解的一套标记语言,包括业务分析者、软件开发者以及业务管理者与监察者。
BPMN还将支持生成可执行的BPEL4WS语言。
所以,BPMN在业务流程设计与流程实现之间搭建了一条标准化的桥梁。
BPMN定义了业务流程图,其基于流程图技术,同时为创建业务流程操作的图形化模型进行了裁减。
业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。
2. BPMN基础业务流程图由一系列的图形化元素组成。
这些元素简化了模型的开发,且业务分析者看上去非常熟悉。
这些元素每个都有各自的特性,且与大多数的建模器类似。
比如,活动是矩形,条件是菱形。
应该强调的是:开发BPMN的动力就是为了在创建业务流程模型时提供一个简单的机制,同时又能够处理来自业务流程的复杂性。
要处理这两个矛盾的需求的方法就是将标记的图形化方面组织分类为特定的类别。
这里提供标记类别中的一小部分,以便业务流程图的读者可以简单地识别出元素的基本类型从而理解图形。
以下是四种基本的类型:1)流对象2)连接对象3)泳道4)人工信息BPMN2.0概要:/workclass/201206272.asp二、activiti主要接口ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();RuntimeService runtimeService = processEngine.getRuntimeService();RepositoryService repositoryService = processEngine.getRepositoryService();TaskService taskService = processEngine.getTaskService();ManagementService managementService = processEngine.getManagementService();IdentityService identityService = processEngine.getIdentityService();HistoryService historyService = processEngine.getHistoryService();FormService formService = processEngine.getFormService();ProcessEngines.getDefaultProcessEngine()会在第一次调用时初始化并创建一个流程引擎,以后再调用就会返回相同的流程引擎。
《Activiti6.0工作流引擎深度解析与实战》笔记

《Activiti6.0⼯作流引擎深度解析与实战》笔记1.1 课程导学--- 什么是⼯作流引擎?是⽤来驱动业务按照流程图逐步流转的核⼼框架。
--- 为什么学习⼯作流引擎?早期:企业OA、CRM、流程审批现在:电商购物、⾦融出⾏、中台⽀撑--- Activiti6.0流程引擎配置--- 核⼼API--- 数据模型设计--- BPMN2.0规范--- BPMN2.0元素2.1 本章概述⼯作流⼊门:⼯作流介绍、⼯作流技术选型、Activiti6.0快速体验。
2.2 ⼯作流介绍⼯作流是什么?为什么学习⼯作流?如何去学习⼯作流?1、审批业务场景(如请假,有⼀系列步骤)2、审批流程模型化(抽象出⼀系列流程图模型)“开始节点”(开始StartEvent)->填写审批信息的“⽤户节点”->通过“流程判断”(排他⽹关Exclusive Gateway)可以流转到“主管审批”(任务UserTask)->...->“结束节点”(结束EndEvent)3、常见的⽹上购物流程4、购物⼯作流程模型化有3个参与者,“电商购物流程”是泳池Pool,“仓储物流”等是泳道Line,“检验库存”是服务任务ServiceTask(服务任务是指不是由⼈⼯操作,⽽是由系统⾃动完成实现的逻辑)。
5、⼯作流是什么6、为什么需要⼯作流2.3 ⼯作流引擎技术选型2.4 Activiti6.0快速体验--部署环境介绍默认的⽤户名和密码是:admin和test2.5 Activiti6.0快速体验--部署环境实操win10下打开Cygwin,进⾏如下操作:1、curl -s "http://get.sdkman.io" | bash报错:Looking for a previous installation of SDKMAN...Looking for unzip...Looking for zip...Not found.Please install zip on your system using your favourite package manager.参考:https:///IOIO_/article/details/84946257解决⽅法是重新点击cygwin的安装包,把zip的package安装⼀遍,重启cygwin,再输⼊⼀遍这个命令即可。
IDEA教程之Activiti插件图文详解

IDEA教程之Activiti插件图⽂详解⽬录⼀、安装Activiti插件1.搜索插件2.开始安装3.安装进度4.安装完成5.查看结果⼆、使⽤Activiti1.创建BPMN⽂件2.绘制流程图3.导出图⽚4.解决中⽂乱码问题最新idea2020安装部署超详细教程本⽂作者:Spring_ZYL版权声明:本⽂版权归作者所有,转载请注明出处⼀、安装Activiti插件1.搜索插件点击菜单【File】-->【Settings...】打开【Settings】窗⼝。
点击左侧【Plugins】按钮,在右侧输出"actiBPM",点击下⾯的【Search in repositories】链接会打开【Browse Repositories】窗⼝。
2.开始安装进⼊【Browse Repositories】窗⼝,选中左侧的【actiBPM】,点击右侧的【Install】按钮,开始安装。
3.安装进度4.安装完成安装完成后,会提⽰【Restart IntelliJ IDEA】,重启IDEA即可完成安装。
5.查看结果打开【Settings】窗⼝,在【Plugins】中可看到安装的【actiBPM】插件,表⽰安装成功。
⼆、使⽤Activiti1.创建BPMN⽂件点击菜单【File】-->【New】-->【BpmnFile】输⼊⽂件名称,点击【OK】按钮会出现如下绘制界⾯2.绘制流程图⿏标左键拖拽右侧图标,将其拖下左侧界⾯上,同样的⽅式再拖拽其他图标⿏标移⾄图标的中⼼会变成⿊⽩⾊扇形,拖拽到另⼀图标,即可连接双击图标,可修改名称3.导出图⽚右击bpmn⽂件,选择【Refactor】-->【Rename】,修改其扩展名为.xml,点击【Refactor】接着右击此xml⽂件,选择【Diagrams】-->【Show BPMN 2.0 Diagrams...】,打开如下界⾯点击上图中【Export to file】图标,弹出【Save as image】窗⼝,点击【OK】即可导出png图⽚4.解决中⽂乱码问题在IDEA的安装⽬录,在下⾯两个⽂件中加上-Dfile.encoding=UTF-8重启IDEA,乱码问题解决最新idea2020安装部署超详细教程懂得懂的到此这篇关于IDEA教程之Activiti插件图⽂详解的⽂章就介绍到这了,更多相关IDEA Activiti插件内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Activiti6.0教程28张表解析

Activiti6.0教程28张表解析使⽤Activit的朋友都知道Activiti对应的有28张表,今天我们就来说下Activit中28张表对应的含义是什么?如何创建表?在Activiti中创建表有三种⽅式,我们依次来看下:⼀、通过硬编码的形式直接指定// 创建⼀个流程成引擎对像ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();// 设置数据库连接信息processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/db_activiti");processEngineConfiguration.setJdbcUsername("root");processEngineConfiguration.setJdbcPassword("");processEngineConfiguration.setDatabaseType("mysql");processEngineConfiguration.setDatabaseSchemaUpdate("update");// 设置⾃动创建表processEngineConfiguration.setDatabaseSchemaUpdate("true");// 在创建引擎对象的时候⾃动创建表ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();⼆、通过activit.cfg.xml配置⽂件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti?characterEncoding=utf8" /><property name="jdbcDriver" value="com.mysql.jdbc.Driver" /><property name="jdbcUsername" value="root" /><property name="jdbcPassword" value="" /><property name="databaseSchemaUpdate" value="true" /><property name="databaseType" value="mysql"></property></bean></beans>ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();三、使⽤配置⽂件,在资源⽬录下创建activiti-context.xml<!-- 创建流程引擎配置对象 --><bean id="ProcessEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"><property name="jdbcDriver" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti" /><property name="jdbcUsername" value="root" /><property name="jdbcPassword" value="" /><property name="databaseSchemaUpdate" value="true" /></bean>代码⾥边读取加载配置⽂件String resource = "activiti-context.xml";String beanName = "ProcessEngineConfiguration";ProcessEngineConfiguration cf = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(resource, beanName); ProcessEngine processEngine = cf.buildProcessEngine();以上就是创建表的三种⽅式,接下来我们看创建好的表都有哪些?先上⼀张图,后⾯详细说。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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会自动生成对应的流程图片。
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.x sd/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.StandaloneProcessEngine Configuration"><property name="jdbcDriver"value="com.mysql.jdbc.Driver" /><property name="jdbcUrl"value="jdbc:mysql://localhost:3306/test?useUnicode=true&ch aracterEncoding=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.createProcessEngineConfigurationFro mResource("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中最核心的类,其他的类都是由他而来。