1.创建流程模型,工程右键-->new-->other-->activiti diagram

2.图解元素介绍:

Start event:开始事件
  End entit:结束事件
  User task:用户任务活动
  Service task:服务任务活动
  Exclusive gateway:独家网关,排它网关通道,只能有一条分支执行,如if else
  Parallel gateway:并行网关,并行网关通道,所有分支一块执行

Activiti 用户手册: http://www.mossle.com/docs/activiti/index.html#bpmnConstructs点击打开链接

3.创建流程数据库表

package com.wawj.rpt.web.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;

public class ActivitiTest {
     //驱动程序名
    static String driver = "net.sourceforge.jtds.jdbc.Driver";
    //URL指向要访问的数据库名mydata
    static String url = "jdbc:jtds:sqlserver://10.10.110.13:1433/tester";
    //MySQL配置时的用户名
    static String user = "sa";
    //MySQL配置时的密码
    static  String password = "Sa123456";
    
    public static void main(String[] args) {
//        ActivitiTest activitiTest = new ActivitiTest();
        //获取sql server 的数据库 原生JDBC
        //activitiTest.getMsSql();
        
        //流程引擎ProcessEngine对象,所有操作都离不开引擎对象  
        ProcessEngineConfiguration processEngineConfiguration =  ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();  
        //连接数据库的配置  
        processEngineConfiguration.setJdbcDriver(driver);  
        processEngineConfiguration.setJdbcUrl(url);  
        processEngineConfiguration.setJdbcUsername(user);  
        processEngineConfiguration.setJdbcPassword(password);  
        
      //三个配置  
        //1.先删除表,再创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP="create-drop"  
        //2.不能自动创建表,需要表存在:processEngineConfiguration.DB_SCHEMA_UPDATE_FALSE="false"  
        //3.如果表存在,就自动创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE="true"  
        processEngineConfiguration.setDatabaseSchema(processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);  
        //获取工作流的核心对象,ProcessEngine对象  
        ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();  
        System.out.println("processEngine:"+processEngine+"Create Success!!");  
        
    }
    public void getMsSql(){
         //声明Connection对象
        Connection con;
        //遍历查询结果集
        try {
            //加载驱动程序
            Class.forName(driver);
            //1.getConnection()方法,连接MySQL数据库!!
            con = DriverManager.getConnection(url,user,password);
            if(!con.isClosed())
                System.out.println("Succeeded connecting to the Database!");
            //2.创建statement类对象,用来执行SQL语句!!
            Statement statement = con.createStatement();
            //要执行的SQL语句
            String sql = "select top 10 * from sys_user";
            //3.ResultSet类,用来存放获取的结果集!!
            ResultSet rs = statement.executeQuery(sql);
            String name = "";
            while(rs.next()){
                //获取stuname这列数据
                name = rs.getString("name");
                //首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
                //输出结果
                System.out.println("name=" + name);
            }
            rs.close();
            con.close();
        } catch(Exception e) {   
            //数据库驱动类异常处理
            e.printStackTrace();
        }finally{
            System.out.println("数据库数据成功获取!!");
        }
    }
    
}

4.生成的流程表介绍

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

ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。

ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。

ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。

ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。

ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

4.1资源库流程规则表

1)act_re_deployment 部署信息表

2)act_re_model  流程设计模型部署表

3)act_re_procdef  流程定义数据表

4.2运行时数据库表

1)act_ru_execution运行时流程执行实例表

2)act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息

3)act_ru_task运行时任务节点表

4)act_ru_variable运行时流程变量数据表

4.3历史数据库表

1)act_hi_actinst 历史节点表

2)act_hi_attachment历史附件表

3)act_hi_comment历史意见表

4)act_hi_identitylink历史流程人员表

5)act_hi_detail历史详情表,提供历史变量的查询

6)act_hi_procinst历史流程实例表

7)act_hi_taskinst历史任务实例表

8)act_hi_varinst历史变量表

4.4组织机构表

1)act_id_group用户组信息表

2)act_id_info用户扩展信息表

3)act_id_membership用户与用户组对应信息表

4)act_id_user用户信息表

这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足

4.5通用数据表

1)act_ge_bytearray二进制数据表

2) act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。

5.部署流程demo

5.1

@Test
    public void fy_test() {
        
        try {
            //表不存在的话创建表
            ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
            System.out.println("------processEngine:" + processEngine);
            
            //创建流程
            Deployment deployment = processEngine.getRepositoryService().createDeployment().name("请假程序")
            .addClasspathResource("activiti/MyProcess.bpmn").addClasspathResource("activiti/MyProcess.png").deploy();
            
            
            System.out.println(deployment.getId());
            System.out.println(deployment.getName());
        } catch (Exception e) {
            e.printStackTrace();
        }

运行结果:7501    请假程序

5.2查看数据库部署信息表如图:

5.3启动自己的流程

/** 启动流程实例 **/
    @Test
    public void startProcessInstance() {
        try {
            ProcessEngine processEngine = ProcessEngineConfiguration
                    .createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
            // 流程定义的key
            String processDefinitionKey = "myProcess";
            ProcessInstance pi = processEngine.getRuntimeService()// 与正在执行
                                                                    // 的流程实例和执行对象相关的Service
                    .startProcessInstanceByKey(processDefinitionKey); // 使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动
            System.out.println("流程实例ID:" + pi.getId());
            System.out.println("流程定义ID:" + pi.getProcessDefinitionId());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

运行结果:

流程实例ID:10001
流程定义ID:myProcess:1:7504

查看运行时流程执行实例表:act_ru_execution

5.4查询当前人的个人任务

运行结果:

5.5完成我的代办任务


运行结果:完成任务:任务ID:10004

Activiti 简单demo (2)相关推荐

  1. EPSON机器人建立TCP/IP通讯的简单demo

    以下为我近期研究EPSON机器人通讯的经验总结,主要实现机械手接收相机发送过来的数据,从而达到对应的位置,及其简单demo. 欢迎加入知识星球[3D视觉工坊],进行交流学习.

  2. Solr配置与简单Demo[转]

    Solr配置与简单Demo 简介: solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目.它的官方网址在http://lucene.apache.org/sol ...

  3. VC++ 拖放编程简单Demo

    微软的编程类库都带有拖放编程的接口:下面看一个最简单demo:win7, vc6:新建一个对话框工程: 添加一个列表框控件:设置 接受文件 属性: 在 类向导-Class Info 做如下选择: 为W ...

  4. win32汇编定时器简单Demo

    timer.asm: .386.model flat,stdcalloption casemap:noneinclude windows.inc include user32.inc includel ...

  5. win32汇编创建线程简单Demo

    代码如下:thread.asm: .386.model flat,stdcalloption casemap:noneinclude windows.inc include user32.inc in ...

  6. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

  7. python wpf教程_WPF使用IronPython库的简单Demo

    WPF使用IronPython库的简单Demo 一.IronPython和C#交互 IronPython是一个.NET平台上的Python实现,包括了完整的编译器.执行引擎与运行时支持,能够与.NET ...

  8. Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

    来源:https://www.cnblogs.com/7tiny/p/10493805.html [前言] Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请 ...

  9. java爬虫的2种爬取方式(HTTP||Socket)简单Demo(一)

    转载自 java爬虫的2种爬取方式(HTTP||Socket)简单Demo(一) 最近在找java的小项目自己写着玩,但是找不到合适的,于是写开始学一点爬虫,自己也是感觉爬虫比较有趣.这里自己找了一个 ...

最新文章

  1. 跟我学Spring Cloud(Finchley版)-10-Feign深入
  2. 关于java使用javacomm20-win32实践总结 (转)
  3. getElementById取得文本框中的值
  4. Java web对试卷进行单选多选答题进行打分_java + vue 考试系统,适配各种题型,包含微信小程序端...
  5. 并发编程:原子性问题,可见性问题,有序性问题。
  6. Spring : Spring @Transactional-事物回滚
  7. Web接收实时视频流并显示(flask创建路由接收)| 解决延时不同步问题
  8. 使用C语言读写xlsx文件
  9. ISCC2021-WP合集
  10. 蒋勇 | 白话区块链技术栈与应用
  11. 配置文件 ini toml yaml 以及 json对比
  12. Python画地图数据可视化分析
  13. 戴仁光:神奇的推广力量——软文
  14. 机器学习-神经网络(Neural Network)算法
  15. DesignWare 加密文件 综合成GTECH 以便FPGA使用
  16. DigitalPersona Personal 4 x86 下载
  17. DirectX 性能优化
  18. java json去掉反斜杠,如何去掉Json字符串中反斜杠
  19. Linux上安装git
  20. spring 注解大全 及用法

热门文章

  1. TelephonyTesgistry
  2. linux文件目录管理
  3. 【历史上的今天】6 月 18 日:京东诞生;网店平台 Etsy 成立;Facebook 发布 Libra 白皮书
  4. NVIDIA 为微软 Xbox One 游戏机发布 PhysX 支持
  5. 如何下载GitHub网站上的代码的方法(未完,更新中。。。)
  6. ZGC是如何工作的?
  7. C语言 memcpy和memcpy_s
  8. CSDN如何上传视频
  9. 一百个最有用的网站地址
  10. 高一计算机课的总结,高中《信息技术》期末教学总结范文