activiti基本介绍

由于新项目要用到工作流,之前也没接触过,这几天就学了学工作流Activiti。好记性不如烂笔头,在这里记录一下,以后也可以回过头看一看。

概念:我的理解是通过定义流程,启动流程,执行流程等一系列操作,实现业务逻辑。在定义好流程后,会产生两个文件分别是*.bpmn和*.png。

应用场景:比如常见的请假,正规一点的,可能需要好几级领导审批,或者根据不同的请假天数,对应不同的领导签字(后面会发现有了排他网关,实现很方便);费用报销、会议的多人会签等等,都是可以使用工作流来完成。

数据库的支持: activiti的后台是有数据库的支持,所有的表都是以ACT_开头的,第二部分表示表的用途的两个字母标识,用途也和服务的API对应。

下面这些我就直接截图了,码字的话,太多了。网上也都能看到这些表的说明。

 

 

表的生成:

有两种方式,(1)通过Java代码实现。(2)通过配置文件实现。这里附上如何配置的(参考b站上面的视频资源),一般都是用配置来实现。

<!-- 
        ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
        //连接数据库的配置
        processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
        processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/itcast0711activiti?useUnicode=true&characterEncoding=utf8");
        processEngineConfiguration.setJdbcUsername("root");
        processEngineConfiguration.setJdbcPassword("root");
        
        /**
             public static final String DB_SCHEMA_UPDATE_FALSE = "false";不能自动创建表,需要表存在
              public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";先删除表再创建表
              public static final String DB_SCHEMA_UPDATE_TRUE = "true";如果表不存在,自动创建表
         */
        processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
     -->
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <!-- 连接数据的配置 -->
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=utf8"></property>
        <property name="jdbcUsername" value="root"></property>
        <property name="jdbcPassword" value="123456"></property>
        <!-- 没有表创建表 -->
        <property name="databaseSchemaUpdate" value="true"></property>
    </bean>

 

重点来了!!! 重点来了!!!重点来了!!!

activiti的核心就是ProcessEngine流程引擎对象,所有的操作,都是通过流程引擎来实现的,本篇就讲述几个常用Api。

(1)ProcessEngine(核心)

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

(2)RepositoryService(规则相关)

 RepositoryService repositoryService = processEngine.getRepositoryService();

(3)RunTimeServicce(运行时)

RuntimeService runtimeService = processEngine.getRuntimeService();

(4)TaskService(用户任务)

TaskService taskService = processEngine.getTaskService();

(5)ProcessDefinition(流程定义对象)

(6)ProcessInstance(流程实例)

下一章我们再说这些api的具体应用。

 

posted @ 2020-05-11 22:07  沐言星空  阅读(619)  评论(0编辑  收藏  举报