Activity工作流(一):环境搭建

这篇具有很好参考价值的文章主要介绍了Activity工作流(一):环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 环境搭建

开发环境: activiti 5.22.0 jdk 1.8 mysql 5.6 tomcat 8.5

注意,activiti需要在数据库里创建表,可以在官网下载源码安装包,里面有数据库的表。或者通过java代码自动创建表。所以1.1和1.2节中的方法二选一即可。

1.1 下载源码包

https://www.activiti.org/download-links
在这里插入图片描述

本教程使用的是5.22.0版本,解压后如下:
Activity工作流(一):环境搭建

在database\create文件夹下有各种版本数据库使用的创建数据库的sql语句。5.22.0版本里有25张基础表。此处使用mysql5.6数据库,新建一个数据库,运行如下文件
Activity工作流(一):环境搭建

运行后得到25张表:

Activity工作流(一):环境搭建

数据库表说明:
Activity工作流(一):环境搭建

1.2 通过java代码创建表

引入依赖的jar

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
  </dependency>
  <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-bpmn-converter</artifactId>
    <version>5.22.0</version>
  </dependency>
  <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-bpmn-model</artifactId>
    <version>5.22.0</version>
  </dependency>
  <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-image-generator</artifactId>
    <version>5.22.0</version>
  </dependency>
  <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-process-validation</artifactId>
    <version>5.22.0</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.1</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.1</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
  </dependency>
  <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
  </dependency>
  <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-root</artifactId>
    <version>5.22.0</version>
  </dependency>
  <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring</artifactId>
    <version>5.22.0</version>
  </dependency>
</dependencies>

在resources目录下创建activiti.cfg.xml,配置数据源和默认引擎

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/activiti2?characterEncoding=utf-8" />
    <property name="username" value="root" />
    <property name="password" value="" />
</bean>

<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource" />
    <property name="databaseSchemaUpdate" value="true" />
</bean>

其中databaseSchemaUpdate属性允许在进程引擎启动和关闭时设置策略来处理数据库模式。

  1. false
    (默认):当创建流程引擎时,检查数据库模式对库的版本,如果版本不匹配则抛出异常。
  2. true:在构建流程引擎时,执行检查,如果需要,执行模式的更新。如果模式不存在,则创建它。
  3. create-drop:在创建流程引擎时创建模式,并在流程引擎关闭时删除模式。 这里设置成true,运行程序的时候自动生成表。
    activiti底层使用的是mybtais,可以通过log4j查看执行的语句:
#For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
#begin
#for normal test,delete when online
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

测试代码:

@Test
public void createTable() {
    ProcessEngineConfiguration configuration =
            ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
    //ProcessEngines.getDefaultProcessEngine();
    ProcessEngine processEngine = configuration.buildProcessEngine();
    System.out.println(processEngine);
}

1.3 idea安装activiti插件

File->Settings->Plugins 搜索actiBPM,右侧选择Install,安装成功后重启Idea。

Activity工作流(一):环境搭建

在工程中可以创建 bpmn文件了。bpmn规范会在后续课程中讲解。

Activity工作流(一):环境搭建

Activity工作流(一):环境搭建

idea中绘制流程图的时候中文会乱码,在idea安装路径的bin目录下修改配置文件:
Activity工作流(一):环境搭建

在文件末尾加一句,如图:-Dfile.encoding=UTF-8
Activity工作流(一):环境搭建

1.4 示例工程

绘制流程图leave.bpmn:ZhangSan发起请假,LiSi审批请假

部署任务:

@Test
public void addDeployment() {
    Deployment deployment = processEngine.getRepositoryService() // 与流程定义和部署对象相关的Service
            .createDeployment() // 创建一个部署对象
            .name("请假流程") // 设置对应流程的名称
            .addClasspathResource("leave.bpmn") 
            .deploy(); // 完成部署
}

数据库里已经插入了对应的数据

启动任务:
@Test
public void startProcess() {
    RuntimeService runtimeService = processEngine.getRuntimeService();
    //key是act_re_procdef中的KEY_,bpmn的id
    runtimeService.startProcessInstanceByKey("myProcess_1");
}

查看ZhangSan的任务并提交给下一个操作者。查看李四的任务并处理。(act_ru_task表)

@Test
public void queryZhangSanTask() {
    String assignee = "ZhangSan";
    List<Task> taskList = processEngine.getTaskService()//获取任务service
            .createTaskQuery()//创建查询对象
            .taskAssignee(assignee)//指定查询人
            .list();
    for (Task task : taskList) {
        System.out.println("代办任务ID:" + task.getId());
        System.out.println("代办任务name:" + task.getName());
        System.out.println("代办任务创建时间:" + task.getCreateTime());
        System.out.println("代办任务办理人:" + task.getAssignee());
        System.out.println("流程实例ID:" + task.getProcessInstanceId());
        System.out.println("执行对象ID:" + task.getExecutionId());
        //提交任务到下一个代理人
        engine.getTaskService().complete(task.getId());
    }
}
@Test
public void queryLiSiTask() {
    String assignee = "LiSi";
    List<Task> taskList = processEngine.getTaskService()//获取任务service
            .createTaskQuery()//创建查询对象
            .taskAssignee(assignee)//指定查询人
            .list();
    for (Task task : taskList) {
        System.out.println("代办任务ID:" + task.getId());
        System.out.println("代办任务name:" + task.getName());
        System.out.println("代办任务创建时间:" + task.getCreateTime());
        System.out.println("代办任务办理人:" + task.getAssignee());
        System.out.println("流程实例ID:" + task.getProcessInstanceId());
        System.out.println("执行对象ID:" + task.getExecutionId());
        processEngine.getTaskService().complete(task.getId());
    }
}

查看执行历史act_hi_taskinst表:文章来源地址https://www.toymoban.com/news/detail-426018.html

@Test
public void viewHistory() {
    HistoryService historyService = processEngine.getHistoryService();
    HistoricProcessInstance historicProcessInstance =
            historyService
                    .createHistoricProcessInstanceQuery()
                    .processInstanceId("15001").singleResult();
    System.out.println("开始时间:" + historicProcessInstance.getStartTime());
    System.out.println("结束时间:" + historicProcessInstance.getEndTime());
}

到了这里,关于Activity工作流(一):环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 生信工作流框架搭建 | 04-nextflow与Slurm高性能计算

    本篇为biodoge《生信工作流框架搭建》系列笔记的第5篇,该系列将持续更新。 上回生信工作流框架搭建 | 03-nextflow与AWS批量计算为大家提供了nextflow上云的实用教程。虽然AWS批量计算技术含量较大,但毕竟在国内应用场景较少,下面将为大家介绍另一种更为常用的应用:阿里云

    2024年02月15日
    浏览(100)
  • Github Flow工作流简单介绍(以部署为中心的开发模式)

    前言 这篇文章主要介绍Github Flow的理念,以下内容来源于《Github入门与实践》。 Github Flow是以部署为中心的开发模式,通过简单的规则,持续高速且安全地进行部署。而Gitflow则是以发布为中心的分支管理模型,它提供了一种更灵活的方式来管理代码库中的更改。可以参考《

    2024年02月15日
    浏览(39)
  • 保姆级教程:从0到1搭建Stable Diffusion XL完整工作流进行AI绘画

    Rocky Ding 公众号:WeThinkIn 【人人都是算法专家】栏目专注于分享Rocky在AI行业中对业务/竞赛/研究/产品维度的思考与感悟。欢迎大家一起交流学习💪 大家好,我是Rocky。 之前Rocky详细介绍了Stable Diffusion(SD)的核心基础知识,SD是目前最流行的开源AI绘画模型,其繁荣的生态大

    2024年02月13日
    浏览(51)
  • 中东 Shopify 如何使用 Bytebase 构建一站式数据库开发工作流

    Salla 是一家 2016 年成立,位于沙特麦加的自建站电商平台。 作为中东 Shopify,其最大的特点是支持阿拉伯语建站,并且提供更多适应中东地区特点的本地化服务。截止目前,已有 47,000 家店铺入驻 Salla,商品销售总额达到了 43 亿美元,近三年保持了接近 100% 的增速。 与 Sall

    2024年02月09日
    浏览(49)
  • Asp.net基于工作流引擎的系统框架设计开发(源代码+论文)

    工作流就是一系列相互衔接、自动进行的业务活动或任务。工作流引擎是工作流管理系统的核心,它的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。 论文主要讲述了工作流引擎的基本功能及设计

    2024年02月12日
    浏览(48)
  • 基于Java开发的全文检索、知识图谱、工作流审批机制的知识库

    一、项目介绍 一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,应用在需要进行常用文档整理、分类、归集、检索的地方,适合知识密集型单位/历史文档丰富的单位,或者大型企业、集团。 为什么建立知识库平台? 二、项目所用技术 springboot+vue+tiny

    2023年04月26日
    浏览(37)
  • 关于工作流开发前端选型的一点个人见解(bpmn.js与LogicFlow)

    掘金2023年度人气创作者打榜中,快来帮我打榜吧~ https://activity.juejin.cn/rank/2023/writer/747323639208391?utm_campaign=annual_2023utm_medium=self_web_shareutm_source=MiyueFE 首先需要明确的一点是,本文的出发点 纯粹是针对工作流开发 的场景的选型对比,其他业务场景下建议重新调研。 什么是工作

    2024年02月20日
    浏览(50)
  • 揭秘!我用AI写了一部精彩小说;搭建AI视频创作工作流;一键生成摘要工具清单;大模型创业生死5问 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 作者团队梳理了自2018年以来大语言模型的发展历程,并可视化成了这棵树的生长过程。对于模型的学习和选择,都非常有参考意义。 GIF高清动图 和 JPG高清图有点大,放在咱们的知识星球里了,

    2024年02月10日
    浏览(56)
  • 【工作流】Activiti工作流简介以及Spring Boot 集成 Activiti7

    什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程。 文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、

    2024年02月08日
    浏览(53)
  • 云原生离线工作流编排利器 -- 分布式工作流 Argo 集群

    作者:庄宇 在现代的软件开发和数据处理领域,批处理作业(Batch)扮演着重要的角色。它们通常用于数据处理,仿真计算,科学计算等领域,往往需要大规模的计算资源。随着云计算的兴起,阿里云批量计算和 AWS Batch 等云服务提供了管理和运行这些批处理作业的平台。 随

    2024年01月24日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包