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"));

    }

}

 

posted @ 2019-09-22 11:53  attilaxAti  阅读(37)  评论(0编辑  收藏  举报