1.概述前言

在网上好多都是spring整合activiti的例子或解决方案,最近有点时间所以来学习学习,这里以公司使用的主要框架Jboot为主。网上有个JFina集成的例子,项目很好l Activiti集成Modeler(使用Jfinal)(不用SpringMvc,不用Spring)。我的配置项就是根据他做的

2.插件配置

2.1ActivitiPlugin

import com.jfinal.plugin.IPlugin;
import com.jfinal.plugin.activerecord.DbKit;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;/****/
public class ActivitiPlugin implements IPlugin{private static ProcessEngine processEngine = null;private static ProcessEngineConfiguration processEngineConfiguration = null;private boolean isStarted = false;@Overridepublic boolean start(){try {createProcessEngine();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return true;}@Overridepublic boolean stop() {ProcessEngines.destroy();isStarted = false;return true;}private Boolean createProcessEngine() throws Exception{if (isStarted) {return true;}StandaloneProcessEngineConfiguration conf = (StandaloneProcessEngineConfiguration) ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();conf.setDataSource(DbKit.getConfig().getDataSource());conf.setEnableDatabaseEventLogging(false);conf.setDatabaseSchemaUpdate(ProcessEngineConfigurationImpl.DB_SCHEMA_UPDATE_TRUE);//更新
//      conf.setDatabaseSchemaUpdate(ProcessEngineConfigurationImpl.DB_SCHEMA_UPDATE_DROP_CREATE);//重置数据库!!!调试用!!!请勿打开!!!conf.setDbHistoryUsed(true);conf.setTransactionsExternallyManaged(true);//使用托管事务工厂conf.setTransactionFactory(new ActivitiTransactionFactory());UuidGenerator uuidG = new UuidGenerator();conf.setIdGenerator(uuidG);conf.setActivityFontName("宋体");conf.setLabelFontName("宋体");conf.setAnnotationFontName("宋体");ActivitiPlugin.processEngine = conf.buildProcessEngine();isStarted = true;//开启流程引擎System.out.println("启动流程引擎.......");return isStarted;}// 开启流程服务引擎public static ProcessEngine buildProcessEngine() {if (processEngine == null)if (processEngineConfiguration != null) {processEngine = processEngineConfiguration.buildProcessEngine();}return processEngine;}
}

2.2 ActivitiTransaction

import java.sql.Connection;
import java.sql.SQLException;import javax.sql.DataSource;import org.apache.ibatis.session.TransactionIsolationLevel;
import org.apache.ibatis.transaction.Transaction;import com.jfinal.plugin.activerecord.DbKit;/****/
public class ActivitiTransaction implements Transaction {protected Connection connection;protected DataSource dataSource;protected TransactionIsolationLevel level;protected boolean autoCommmit;public ActivitiTransaction(DataSource ds, TransactionIsolationLevel desiredLevel, boolean desiredAutoCommit) {dataSource = ds;level = desiredLevel;autoCommmit = desiredAutoCommit;}public ActivitiTransaction(Connection connection) {this.connection = connection;}@Overridepublic Connection getConnection() throws SQLException {if (connection == null) {openConnection();}return connection;}@Overridepublic void commit() throws SQLException {}@Overridepublic void rollback() throws SQLException {}@Overridepublic void close() throws SQLException {if(connection!=null){DbKit.getConfig().close(connection);}}protected void openConnection() throws SQLException {connection = DbKit.getConfig().getConnection();if (level != null) {connection.setTransactionIsolation(level.getLevel());}}
}

2.3 ActivitiTransactionFactory

import java.sql.Connection;
import java.util.Properties;import javax.sql.DataSource;import org.apache.ibatis.session.TransactionIsolationLevel;
import org.apache.ibatis.transaction.Transaction;
import org.apache.ibatis.transaction.TransactionFactory;/****/
public class ActivitiTransactionFactory implements TransactionFactory {@Overridepublic void setProperties(Properties props) {}@Overridepublic Transaction newTransaction(Connection conn) {return new ActivitiTransaction(conn);}@Overridepublic Transaction newTransaction(DataSource ds, TransactionIsolationLevel level, boolean autoCommit) {return new ActivitiTransaction(ds, level, autoCommit);}
}

2.3 ActivitiConfig

凡是开发过 JFinal 的同学,都知道 JFinalConfig 是 JFinal 的核心配置,详情: https://www.jfinal.com/doc/2-1

因为 Jboot 已经对 JFinal 进行了默认的配置,所以编写一个类继承 JbootAppListenerBase,然后复写对应的方法

import com.example.activiti.plugin.ActivitiPlugin;
import io.jboot.aop.jfinal.JfinalPlugins;
import io.jboot.core.listener.JbootAppListenerBase;public class ActivitiConfig extends JbootAppListenerBase{public void ActivitiConfig(){}public void onPluginConfig(JfinalPlugins plugins) {plugins.add(new ActivitiPlugin());}}

3 启动项目验证流程是否启动

并且数据库已经生成activiti的表:

配置成功!!!

Jboot初遇activiti相关推荐

  1. Activiti——流程执行历史记录(七)

    转自:http://blog.csdn.net/zjx86320/article/details/50363544 之前的几篇文章,为大家简单的介绍了部署流程定义.启动流程实例.查看和办理个人任务以及 ...

  2. Activiti——流程变量(六)

    Activiti--流程变量 转自:http://lib.csdn.net/article/java/66665?knId=268 流程变量在整个工作流中扮演很重要的作用.例如:请假流程中有请假天数. ...

  3. Activiti——工作流之流程实例、任务的执行(五)

    转自:http://profound-accumulation.iteye.com/blog/2244881 一.流程图   二.部署流程定义 /**部署请假流程(从zip)*/ @Test publ ...

  4. Activiti——数据表结构

    备注: 本文转自:http://blog.csdn.net/hj7jay/article/details/51302829 转载目的在于个人学习使用,如有涉及著作权相关问题,请联系本人,本人将第一时间 ...

  5. Activiti——管理流程定义(四)

    Activiti--管理流程定义 1.设计流程定义文档 1.1.流程图 1.2.bpmn文件 <?xml version="1.0" encoding="UTF-8 ...

  6. Activiti——工作流程-核心API(二)

    .1 ProcessEngine 说明: 1) 在Activiti中最核心的类,其他的类都是由他而来. 2) 产生方式: 在前面看到了两种创建ProcessEngine(流程引擎)的方式(http:/ ...

  7. Activiti——准备开发环境(一)

    准备材料下 activiti-5.17.0 1.添加Activiti5 的jar包或Maven依赖 Jar包方式 通过上述下载链接下载Activiti后,解压得到如下目录: 把libs的jar包添加到 ...

  8. 【应用篇】Activiti外置表单实例demo(四)

    在这里我想说的外置表单.是说我们将我们自己的jsp(.form,.html)等页面上传到工作流的数据库中,当任务运行到当前结点时.给我们像前台发送绑定好的表单. 此处是给表单绑定表单的过程 不允许为: ...

  9. Activiti 规则任务(businessRuleTask)

    Activiti 规则任务(businessRuleTask) 作者:邓家海 目前国内研究Activiti规则任务businessRuleTask)的文章在网上应该不超出3篇 小觑夜漫酒作伴,破晓黎明 ...

最新文章

  1. ASP.NET控件事件丢失的探究
  2. 内核态与用户态的区别
  3. swift html转义,swift中webview的URL带中文或者特殊字符的处理
  4. 面具卡米怎么删模块_魔兽8.3咋肥事——面具带几个收益高?对小怪宝箱水晶有加成吗?...
  5. 解决 SQLSERVER 2008 无法删除作业
  6. Megastore:为交互式服务提供可扩展的高可用性存储
  7. 禁止sublime启动时连网检查更新
  8. html5 地图效果,html5 echarts图表插件炫光的分布地图动画特效
  9. 当Java 8 Streams API不够用时
  10. java版的中世纪战争_世界战争英雄设置-火焰纹章英雄英雄地图及AI命令设置
  11. 图像变形功能的应用: 在线修整发型
  12. python中文列名报错__mssql.MSSQLDatabaseException:(207,b“无效列名'Hello'。DBLib错误消息20018...
  13. 跨进程API Hook
  14. 今天居然中了MSN病毒。
  15. cei()、linspace()、arrange()、full()、eye()、empty()、random()
  16. 安卓桌面软件哪个好_每日提醒软件哪个好?电脑上有什么好用的可以每天提醒的桌面便签软件...
  17. 无线网DNS服务器有错误,关于dns错误的原因和解决办法
  18. Redis 6.0新特性——ACLs
  19. 解决使用人人开源,搭建前端环境问题(renren-fast-vue)
  20. 电脑重启后,原本正常启动的ensp firewall usg6000无法正常启动--无限#号

热门文章

  1. c#笔记--程序集(Assembly)、模块(Module)、类型(class)、命名空间、反射
  2. 【FPGA】用Verilog语言实现流水灯实验
  3. 电脑同步控制android设备,Total Control 免费使用电脑同时控制多台手机的教程及使用方法...
  4. 上海落户计算机水平毕业研究生,2021应届生落户上海打分标准,部分毕业生可直接落户上海...
  5. 清理win7系统盘空间
  6. YUV图片查看器以及测试文件(YUV420)
  7. ISO镜像转换成docker镜像
  8. 浏览器出现无法访问此页面的提示的解决办法
  9. 查看win10电脑电池损耗
  10. Arch Linux 安装 Anbox