activiti使用总结

一、activiti 初识

它是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。(引用百度百科)
我们常见的activiti的工作有:OSWorkFlow、jBPM(jboss business process management)Activiti工作流(是对jBPM升级)

二、activiti 入门

1、常用概念

工作流引擎(ProcessEngine)
这个是activiti的核心,activiti就是由此引擎为入口进行工作的,通过该引擎可以获取到其它的服务(历史服务、仓库服务等)

BPMN(业务流程建模与标注)
这个是一个图,可以通过在eclipse中创建Activiti Diagrams,通过这些图来标识我们的一个具体业务流程。

数据库
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。
第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应
Activiti的工作流数据库有23张表
要保存流程定义
- act_ge_* :通用表
- act_hi_* :历史流程相关表
- act_re_* :仓库表:保存流程定义
- act_ru_* :保存流程运行相关的表
- act_id_* :用户参与相关的表

activiti.cfg.xml
activiti的核心配置文件,主要用来配置连接数据库的配置参数

2、环境搭建

安装插件
上面提到过BPMN图,要知道我们的eclipse默认情况下是不能创建activiti项目的,需要我们手动安装插件。
尽量在有网的情况下在线安装,安装地址为:http://activiti.org/designer/update/,重启即生效。

注意 安装完插件之后需要在preference->activiti->save actions 中的create …打上勾,
让在保存bpmn图的时候也新生成png图。

创建项目

1、新建项目

在eclipse中新建项目,选择activiti project。注意,activiti默认情况下是使用maven管理的,所以最好
已经配置了maven。

2、新建核心配置文件

activiti.cfg.xml:


    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"   xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-2.5.xsd
        http://www.springframework.org/schema/tx    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <!-- 配置数据库连接 -->
    <bean id="processEngineConfiguration"
        class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUsername" value="root"></property>
        <property name="jdbcPassword" value="root"></property>
        <property name="jdbcUrl"
            value="jdbc:mysql://localhost:3306/activitiDB?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf8"></property>
        <!-- 
            配置表策略 
            false:不会创建表,没有表则异常 true:如果没有表自动创建 create-drop:先删除,再创建
        -->
        <property name="databaseSchemaUpdate" value="true"></property>

    </bean>


</beans>

3、新建BPMN图

这个就不贴图了,根据具体的逻辑来画具体的图。

4、部署流程


    ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

    // 获取仓库服务:管理流程定义
    RepositoryService rs = engine.getRepositoryService();

    Deployment deploy = rs.createDeployment()
            .addClasspathResource("diagrams/LeaveBill.bpmn")// 加载bpmn图
            .addClasspathResource("diagrams/LeaveBill.png") // 加载png,也可以不用加载
            .name("请假单") // 设置部署名称
            .category("办公") // 设置类别
            .deploy();// 真正部署
    System.out.println("id:" + deploy.getId());

这里的LeaveBill就是我创建的BPMN图。

5、开启流程


    //这个key其实就是bpmn的id
    String processDefiKey = "leaveBill"; 
    RuntimeService rs = engine.getRuntimeService();
    // 流程实例,通过流程定义的key开启并获取实例
    ProcessInstance pi = rs.startProcessInstanceByKey(processDefiKey);
    System.out.println("流程实例id:" + pi.getId());
    System.out.println("流程定义id:" + pi.getProcessDefinitionId());

开启流程之后,默认会执行第一个流程任务

6、完成任务


    String taskId = "302";
    TaskService ts = engine.getTaskService();
    // 根据任务Id来完成任务
    ts.complete(taskId);

3、activiti中其它的API介绍

省去配置文件
上面使用了activiti的核心配置文件,那么可不可以不用呢?当然是可以了。


        ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                .createStandaloneProcessEngineConfiguration();
        // 设置数据库属性
        configuration.setJdbcDriver("com.mysql.jdbc.Driver");
        configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activitiDB?createDatabaseIfNotExist=true"
                + "&useUnicode=true&characterEncoding=utf8");
        configuration.setJdbcUsername("root");
        configuration.setJdbcPassword("root");
        // 设置创建表的策略
        /**
         * false:不会创建表,没有表则异常 true:如果没有表自动创建 create-drop:先删除,再创建
         */
        configuration.setDatabaseSchemaUpdate("true");
        // 创建流程引擎
        ProcessEngine engine = configuration.buildProcessEngine();// 开始创建数据库

使用zip加载流程


    //这个rs就是RepositoryService
    rs.createDeployment().name("采购流程").category("购销").addZipInputStream(new ZipInputStream(getClass().getClassLoader().getResourceAsStream("diagrams/buy.zip"))).deploy()

流程变量
作用:传递业务参数,指定办理人等
使用:TaskService 和 RuntimeService 服务设置变量


    /******************整个流程实例**************************/
    // 设置普通参数
    ts.setVariable(taskId, "cost", 1000);
    ts.getVariable(taskId, "cost"); // 整个流程实例
    // 设置对象:这个对象必须实现序列化接口
    ts.setVariable(taskId, "applyBillBean", applyBillBean);// 整个流程实例
    // 获取对象
    ts.getVariable(taskId, "applyBillBean")
    /******************当前任务对象**************************/
    ts.setVariableLocal(taskId, "person", "文哥");// 该变量只有在本任务是有效的。

分支

就是在我们完成一个任务之后可能会有分支,也就是”人”型结构,那么此时系统到底走哪条呢?

解决:在这个任务和下一个任务的连线着手配置。
1、双击连线->Main Config -> Condition 通过变量进行配置


    ${message == '1'}

2、我们在代码中指定message的值


    Map<String, Object> params = new HashMap<>() ;
    params.put("message", "1");
    TaskService ts = engine.getTaskService();
    ts.complete(taskId,params);

三、代码

OK,这篇对activiti的总结就到这了。
具体代码见 我的github

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Activiti是一个开源的工作流引擎,它提供了丰富的API来帮助开发人员设计和管理工作流程。Activiti 7是Activiti的最新版本,它提供了许多新的功能和改进,包括更好的性能和易用性。Activiti API可以用来管理工作流程定义、部署和执行,包括启动、查询和终止流程实例。此外,Activiti API还提供了对流程变量、任务和历史数据的管理功能。 ### 回答2: activiti7是一个开源的工作流引擎,它是activiti的升级版本。activiti7提供了一套强大的API,使得开发者可以方便地与工作流引擎进行交互。 activiti7的API可以用于各种工作流相关的操作,包括流程定义、流程实例、任务管理等。通过activiti7的API,开发者可以创建、部署和管理各种流程定义,定义流程的图形模型、表单等。同时,API还支持启动、暂停和终止流程实例,查询和处理任务,得到流程实例运行状态等。 使用activiti7的API还可以对流程进行管理,包括监听流程启动、流程完成等事件,触发相应的业务逻辑。此外,API还支持获取和设置流程变量,进行用户组和角色的管理,以及集成和扩展其他业务系统等。 activiti7的API遵循了RESTful架构,提供了一套统一的HTTP接口,使得开发者可以轻松地集成activiti7到自己的应用程序中。同时,activiti7还提供了一些Java类库和工具类,方便开发者进行各种操作。 总之,activiti7提供了一套简洁易用的API,使得开发者可以方便地使用工作流引擎,实现各种复杂的工作流业务。无论是开发者还是企业用户,都可以通过activiti7的API来提升工作效率和业务管理能力。 ### 回答3: Activiti7是一个开源的企业级工作流管理和自动化平台,它提供了一套强大的API,用于流程定义、任务管理、流程实例管理等操作。 首先,使用Activiti7的API可以定义流程,包括流程节点、流程变量和流程规则等。可以使用API中的类和方法创建和配置流程,将各个节点按照需要连接起来,并定义流程中的变量和规则。通过API的调用,可以实现灵活的流程定义,满足业务需求。 其次,Activiti7的API还提供了任务管理功能。通过API可以创建、分配和处理任务,可以将任务分配给特定的用户或组,并设置任务的截止日期和优先级等属性。API还提供了查询任务的方法,可以根据不同的条件查询任务列表,并对任务进行处理,如完成、取消或重新指派任务等。 另外,API还包括流程实例管理的功能。通过API可以启动流程实例,跟踪流程实例的状态,并对流程实例进行操作,如暂停、恢复或终止。API还提供了查询流程实例的方法,可以根据条件查询流程实例列表,并对流程实例进行管理和监控。 总结来说,Activiti7提供了一套功能丰富的API,可以方便地进行流程定义、任务管理和流程实例管理。通过使用这些API,可以实现灵活、高效的工作流管理和自动化,提升企业的业务流程效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值