zoukankan      html  css  js  c++  java
  • Atitit flowable使用总结 目录 1. flowable 1 1.1. 添加依赖 1 1.2. Flowable的启动接口 2 2. 还是使用简单流程来完成业务流程的学习, 2 2.1.

    Atitit flowable使用总结

    目录

    1. flowable 1

    1.1. 添加依赖 1

    1.2. Flowable的启动接口 2

    2. 还是使用简单流程来完成业务流程的学习, 2

    2.1. 设计流程: 3

    2.2. 4.新建flowable的表 自定义h2模式 3

    2.3. 5.使用flowable创建一个简单的流程 5

    2.4. 5.2部署启动写好的BPMN2.0文件: 5

    2.5. d. 最后一步,完成实现申请通过后执行的自动逻辑,在现实中,这个逻辑可以做任何事情,例子中只做任务处理 6

     

    1. flowable
    • flowable存储数据默认采用h2内存数据库,但我这里还是用熟悉的mysql
    • flowable内部采用SLF4J作为其日志框架

     

    1. 部署前我们编辑了一个普通的流程文件,需要加载下改文件来防止文件有错误,把文件转换为BPMNModel来校验,核心接口为BpmnXMLConverter,通过API接口convertToBpmnModel来实现xml到模型的转换

     

      1. 添加依赖

    <dependency>

      <groupId>org.flowable</groupId>

      <artifactId>flowable-engine</artifactId>

      <version>6.4.1</version>

    </dependency>

     <dependency>

          <groupId>com.h2database</groupId>

         <artifactId>h2</artifactId>

         <version>RELEASE</version>

         <scope>compile</scope>

        </dependency>

        

      1.  Flowable的启动接口
    1.   加载完成流程后,我们将流程启动,Flowable的启动接口为runtimeService,运行时服务调用startProcessInstanceByKey启动一个流程,并且返回流程对象ProcessInstance。该对象包含ID,后续我们将经常用到该ID。

     

     

    1. 还是使用简单流程来完成业务流程的学习,

    目前流程只包含一个开始节点/用户任务节点/结束节点。给用户任务节点配置一个分配人为admin.如下图所示:

    当客户有这么一个需求:下一个任务我需要自动执行一些操作,并且这个节点不需要任何的人工干涉,也就是说这个节点是自动化的。那么,这个当前面一个经办人员把任务发送下去的时候,自然而然的下一个节点就会开始马上执行。这个时候。我们就需要使用Activiti工作流的ServiceTask任务。

     

      1. 设计流程:

     

     

    搞个类左右

     

      1. 4.新建flowable的表 自定义h2模式

     

    ProcessEngineConfiguration config=ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()

      .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)

      .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")

      .setAsyncExecutorActivate(false);

     

     

            ProcessEngine processEngine =config.buildProcessEngine();

     运行后表目录为

     

      1. 5.使用flowable创建一个简单的流程

      5.1创建一个bpmn文件:使用eclipse bpmn2插件

    process_1.bpmn

     

    注意地方

     

     <bpmn2:process id="process_1" name="Default Process" isExecutable="true">

       xmlns:activiti="http://activiti.org/bpmn"

     

      1. 5.2部署启动写好的BPMN2.0文件:

    /*创建了一个新的部署*/

    /*创建了一个新的部署*/

    RepositoryService repositoryService = processEngine.getRepositoryService();

    Deployment deployment = repositoryService.createDeployment()

            .addClasspathResource("process_1.bpmn")     //TODO holiday.xml命名为何不行?

            .deploy();

     

     

     

    //启动一个流程结点

    RuntimeService runtimeService = processEngine.getRuntimeService();

     

    ProcessInstance processInstance =

            runtimeService.startProcessInstanceByKey("process_id2", new HashMap());

     

    System.out.println("--finis");

      1.  d. 最后一步,完成实现申请通过后执行的自动逻辑,在现实中,这个逻辑可以做任何事情,例子中只做任务处理

    <serviceTask id="externalSystemCall" name="Enter holidays in external system" activiti:class="cn.thinvent.first.CallExternalSystemDelegate"/>

    创建Java类,实现JavaDelegate

    public class CallExternalSystemDelegate implements JavaDelegate {

        public void execute(DelegateExecution execution) {

            System.out.println("Calling the external system for employee "

                    + execution.getVariable("employee"));

        }

    }

     

  • 相关阅读:
    Oracle查看正在执行的存储过程的sid---转
    使用WITH子句重用子查询
    oracle解决显示数据的层次问题--实现数据缩进
    oracle9i、10g、11g区别 --转
    oracle10g安装在裸设备上
    在Linux系统上面创建使用裸设备的数据库
    监控Oracle数据库的常用shell脚本-转
    sql server使用维护计划定时备份完整数据库、差异数据库
    使用Advanced Installer14.3 简单打包windows窗体应用程序
    SVG Path标签 A 参数
  • 原文地址:https://www.cnblogs.com/attilax/p/15197146.html
Copyright © 2011-2022 走看看