一. activiti项目的搭建

对于工作流,在公司边摸索边开发,断断续续弄了三四个月,全都是泪啊。开始这里的工作流博客是为了自己整理思路逻辑,也为后面的人对工作流的开发有一个思路引导。

刚毕业不到半年吧,公司用到的是springboot,刚开始的时候逼格没有觉得springboot有过人的地方,但时间久了以后发现,springboot比以前使用的SSH与SSM都要方便的好多,特别是配置文件,对各种框架配置文件头疼的人,springboot的确是福音。此处的工作流项目就是基于springboot开发的,因为熟知的惰性缘故,以前并没有写关于springboot这一块的博客,嗯....,以后补上,此处不多讲关于springboot的知识,主要讲activiti的开发。

对于activiti,已经有了starter,不需要我们过多考虑activiti的依赖关系,只要在maven添加下面引用即可,此处使用的是5.X的版本,因为使用6.X版本有问题(具体问题忘记是什么的,该死该死,当时没有记笔记....,哎总以为自己记性会特别好,其实一点也不是....)。

<dependency>
    <groupId>org.activiti</groupId>
	<artifactId>activiti-spring-boot-starter-basic</artifactId>
	<version>5.20.0</version>
</dependency>

在application.yml中添加一下配置,其中database-schema-update是在运行的时候会检测activiti系统表是否存在,如果不存在会自动创建;history-level是在activiti完成一个环节后,保留在历史表(以act_hi开头的表)中的数据的级别,full全部保存;check-process-definitions表示不让activiti检测processes这个文件夹,如果不置为false会报错,这个文件夹中要保存的是bpmn20.xml文件,我们不一定要写死bpmn20.xml文件,所以将其置位false。在application.yml中配置数据库请自行配置。

spring:
  activiti:
    database-schema-update: true
    history-level: full
    check-process-definitions: false

上述配置完成后,运行这个项目就可以自动创建数据库表了,记得自己配置数据库啊,博客只是作为思路引导,千万别懒省事。

此时工作流的各个方法类已经注册到spring中了,只需要各个方法就行了。对了,关于activiti主要类与主要数据表,bpmn以及如何画在下一个博客中,此处只讲如果快速搭建工作流项目。

    @Autowired
    protected ProcessEngine processEngine;

    @Autowired
    protected RepositoryService repositoryService;

    @Autowired
    protected RuntimeService runtimeService;

    @Autowired
    protected TaskService taskService;

    @Autowired
    protected HistoryService historyService;

-----------------------------------------------------------分割线--------------------------------------------------------------------------------

做这个分割线原因是,我们在开发的时候,测试的时候不一定要运行整个项目,运行整个项目来测试一个方法对开发者来说是件头疼的事情,如果我们写一个main方法就可以进行运行岂不更省事,下面说如何操作。

将activiti.cfg.xml添加到resources目录下,主要是数据库的连接,以及存储bpmn时的字体,防止乱码的出现。

<beans xmlns="http://www.springframework.org/schema/beans"
       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">

  <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti" />
    <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUsername" value="root" />
    <property name="jdbcPassword" value="root" />
    <!--<property name="dataSource" ref="dataSource"/>-->
    <property name="activityFontName" value="宋体"/>
    <property name="labelFontName" value="宋体"/>

    <!--  每次构建流程引擎时都会进行版本检测 -->
    <property name="databaseSchemaUpdate" value="true" />
    <property name="asyncExecutorActivate" value="false" />
    <!-- 择定制历史存储的配置 -->
    <property name="history" value="audit" />
  </bean>
</beans>

在main方法中创建数据库表

public class CreateActivitiDB {
    public static void main(String[] args){
        ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault().setDatabaseSchemaUpdate("create").buildProcessEngine();
    }
}

在mian方法中测试activiti时,我们需要手动创建ProcessEngine、RepositoryService 等各个方法。

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

RepositoryService repositoryService = processEngine.getRepositoryService();

部署一个工作流。第二个参数是bpmn的路径。

/**部署工作流*/
public void deploymentProcessDefinition(String processDefinitionKey,String resourceClassPath){
    DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
    Deployment deployment = deploymentBuilder.name(processDefinitionKey)
            .addClasspathResource(resourceClassPath)
            .deploy();

    logger.info("deployment name: {}",deployment.getName());
    logger.info("deployment id: {}",deployment.getId());
}

工作流项目的搭建其实很简单,但对于bpmn的创建以及各个方法的混合运用确实有点麻烦,所谓会者不难,难者不会,只要对工作流了解透彻了,后期开发会方便很多。本人也不敢说彻底了解activiti,毕竟刚毕业不久,现在做的主要是使用,对源码的分析一点也没有做,写博客也是让自己清晰思路的一种方法吧。

 github上有我更多的笔记:Raray-chuan (兮川) · GitHub,欢迎stars与following,如果有问题可以在issue中向我咨询

关注我的公众号,获取更多关于后端、大数据的知识

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值