zoukankan      html  css  js  c++  java
  • Activiti工作流(一)——Activiti Diagram

    工作流解决在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现。

    使用Eclipse开发,需要安排工作流插件,详情见下面。

    Name:Activiti BPMN 2.0 designer
    Location:http://activiti.org/designer/update/

    New–Other

    这里写图片描述

    1. Activiti Project

      新建Project,Activiti的项目其实也是用maven管理的。

      这里写图片描述

    2. Activiti Diagram

      Activiti提供了图形化的操作页面,我们可以拖动图形控件设计符合特定规则的流程。

      这里写图片描述

    示例:

    这里写图片描述

    以xml格式打开bpmn流程图,可以看到,我们所画的每个流程图,其实相当于一个xml配置文件。这个配置文件中详细描述了整个流程的执行的具体参数,类似ssh的config文件下的各种配置。

     <process id="hello" name="helloprocess" isExecutable="true">
        <startEvent id="startevent1" name="Start"></startEvent>
        <endEvent id="endevent1" name="End"></endEvent>
        <userTask id="usertask1" name="提交申请"></userTask>
        <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
        <userTask id="usertask2" name="审批【部门经理】"></userTask>
        <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
        <userTask id="usertask3" name="审批【总经理】"></userTask>
        <sequenceFlow id="flow3" sourceRef="usertask2" targetRef="usertask3"></sequenceFlow>
        <sequenceFlow id="flow4" sourceRef="usertask3" targetRef="endevent1"></sequenceFlow>
      </process>
      ……
      ……

    在properties下,我们可以看到该工作流图以及每个节点、每条线的详细配置。

    这里写图片描述

    但同样问题也就出现了,与ssh中的配置文件不同,Activiti中的工作图很多,配置文件就要写多个,而且这些配置信息有很大的相似之处。另一方面,在程序运行过程中,用户也需要查看当前流程的位置。因此,Activiti为我们提供了一个数据库来单独存放这些流程信息。

    创建数据库的两种方式:

    1)代码

    ProcessEngineConfiguration processEngineConfiguration=  ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
            //连接数据库的配置
    processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
            processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8");
    processEngineConfiguration.setJdbcUsername("root");
    processEngineConfiguration.setJdbcPassword("");
    
            // DB_SCHEMA_UPDATE_TRUE:表不存在,自动建表
        processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
    
            //工作流的核心对象
            ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();

    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 name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=utf8" />
            <property name="jdbcUsername" value="root" />
            <property name="jdbcPassword" value="" />
    
            <!-- 没有表创建表 -->
            <property name="databaseSchemaUpdate" value="true"></property>
        </bean>
    
    </beans>

    比较:两种创建方式的具体内容很类似,包括数据库连接配置和建表的配置,但使用代码配置会很繁琐,配置文件比较灵活。

    数据库会生成23张表,这23张表都是以“act_”开头,存放工作流不同阶段的数据。

    这里写图片描述


    具体的工作流的这几个过程我们下篇再介绍。

  • 相关阅读:
    Forms身份验证和基于Role的权限验证
    构建高扩展性网站
    多态和继承(继承)
    MVC使用Bootstrap
    使用Navicat Premium 和PLSQL Developer连接Oracl
    内存排查 valgrind
    MVC Bootstrap Helpers
    IOS各种调试
    JavaScript 奇技淫巧
    深入理解Linux修改hostname(转)
  • 原文地址:https://www.cnblogs.com/saixing/p/6730242.html
Copyright © 2011-2022 走看看