文档章节

Activiti简介(学习总结一)

沙shasha
 沙shasha
发布于 07/16 15:07
字数 939
阅读 4
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
1
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部