文档章节

Activiti简介(学习总结一)

沙shasha
 沙shasha
发布于 07/16 15:07
字数 939
阅读 15
收藏 0

一、介绍

activiti是使用命令模式设计基于bpmn2.0的一款开源工作流引擎。

工作流简单举例:提交请假申请->经理审批->结束。这就是一个简单流程。activiti支持用户自定义流程。配置各个流程对应审批人,表单等数据,较为灵活。

二、简单流程的实现

原理有兴趣的话可以自己购买书籍,这里先说说实现。

1、引入相关jar包

<dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>6.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-converter</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-model</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
            <version>6.0.0</version>
        </dependency>

2、自定义bpmn文件

如果使用idea开发,引入相关插件以便自定义bpmn流程文件。

右侧是工作流的各种节点不多做解释,这里只是用了start(开始节点),usertask(任务节点),end(结束节点)。配置了一个两部审批的简单流程。保存下来的bpmn文件实质上是xml文件,另存为xml我们可以看下里面的内容。

实质内容就是process里面的内容,对应的就是流程定义的各个节点,其中usertask节点下extensionElemnts对应的就是内置表单的内容。

3、部署

这里需要简单介绍下activiti几个比较重要的类。

通过ProcessEngineConfiguration可以获取到ProcessEngine(工作流引擎)。activiti几乎所有的工作都是通过这里来实现。

正常的ProcessEngine我们可以通过xml配置获得,这里图个方便,我就使用createStandaloneProcessEngineConfiguration

ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration
            . createStandaloneProcessEngineConfiguration();
        processEngineConfiguration.setJdbcDriver("org.postgresql.Driver");
        processEngineConfiguration.setJdbcUrl("jdbc:postgresql://localhost:5432/comrobot");
        processEngineConfiguration.setJdbcUsername("postgres");
        processEngineConfiguration.setJdbcPassword("123456");
        processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);

        processEngine =  processEngineConfiguration.buildProcessEngine();

 

通过ProcessEngine可以获得几个类,就是我们比较常用的。

RepositoryService:仓储类,主要用于流程定义以及获取流程定义相关的内容。

HistoryService:历史类,主要用于获取流程历史节点及流程的信息

TaskService:任务类,主要用于流程运转及获取实例节点的信息。

RuntimeService:这个类对应的整个流程,一般用来获取开启工作流及流程的定义

IdentityService:主要是各种验证

FormService:用于各个节点下的表单操作

这里的部署主要用RepositoryService

RepositoryService rep = processEngine.getRepositoryService();

        DeploymentBuilder deploymentBuilder = rep.createDeployment();
        Deployment deployment =  deploymentBuilder.name("zyl_test_2")
            .category("请假分类1")
            .addClasspathResource("bpm/rest.bpmn")
            .deploy();

4、运转

这里就是跑流程了,内容也很简单。

Map<String,Object> variables = new HashMap();//设置流程变量

        variables.put("reason","累了,要休息");
        variables.put("applyUserId","qwer");
        variables.put("applyTitle","test_请假申请流程");
        variables.put("applyTime","7天");
        variables.put("applyCtreateTime",new Date());
        variables.put("applyReason","休假");
        variables.put("managerId ","xxx");
        variables.put("category ","请假分类——1");
        variables.put("user","tom");
        variables.put("name","tom");
        processEngine.getIdentityService().setAuthenticatedUserId("startuser");
        ProcessInstance processInstance = processEngine.getRuntimeService()
            .startProcessInstanceById("myProcess_1:1:4",variables);

在流程开始时,可以在startProcessInstanceXXX(XX,XX)方法我们可以放入第二个参数,这里参数是map形式,会以流程变量的形式,绑定在流程实例(ProcessInstance)上。

Map param = new HashMap();
        param.put("type",56);
        processEngine.getTaskService().complete("5017",param);
        processEngine.getTaskService();

上面complete方法就是从一个节点流转到下一个节点,第一个参数对应的当前节点对应的实例ID(taskid),第二个参数是有网关时,流程运转条件。

对于上面的简单例子而言。

startProcess后就会流转firstStep,对应taskid就是5017,这里完成后,就会流转到第二个节点second step对应taskid 5018,这里再一次complate,流程运转就结束了。

© 著作权归作者所有

共有 人打赏支持
沙shasha
粉丝 0
博文 16
码字总数 11035
作品 0
南京
程序员
zhaoml529/SpringMVC-Activiti5.16-Shiro

SpringOA简介 基于SpringMVC+Shiro+Activiti 5.16 的简单OA,可以快速入门Activiti学习用。 此版本前台使用的是EasyUI 框架简介 框架以Spring Framework为核心、Spring MVC作为模型视图控制器...

zhaoml529
2017/05/19
0
0
Activiti工作流引擎初学教程

http://wenku.baidu.com/view/bb7364ad4693daef5ff73d32.html 1. 初识Activiti 1.1. 工作流与工作流引擎 工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起...

孟飞阳
2016/07/31
469
0
Activiti快速入门--kft-activiti-demo

1.项目简介 1.1 项目信息 本项目旨在让Activiti初学者可以快速入门,使用工作流里面的请假流程作为Activiti企业实战的Hello World。 简单通过这个实例说明如何结合流程与业务,表单、业务、流...

咖啡兔
2012/12/16
62.7K
4
Activiti入门教程

初识Activiti 1.1. 工作流与工作流引擎 工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。它...

wangrikui
2015/09/09
6.7K
4
Activiti 工作流学习(二)

上一篇 Activiti 工作流学习(一) 今天要在IDEA中导入Activiti DEMO项目,参考 咖啡兔子大神 的书籍《Activiti 实战》 1、在书籍作者的git上下载demo源码 Github -> https://github.com/hen...

雷斯林
2016/12/09
263
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
12
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
14
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部