Activiti自动部署流程文件

Activiti工作流提供AutoDeployment,在项目启动时进行自动部署指定的xml工作流文件,实现方式有两种如下:

  1. activiti xml文件中进行配置
<bean id="processEngineConfiguration"
          class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="activitiDataSource"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="databaseSchemaUpdate" value="true"/>
        <!-- 微软雅黑字体-->
        <property name="activityFontName" value="微软雅黑"/>
        <property name="labelFontName" value="微软雅黑"/>
        <property name="annotationFontName" value="微软雅黑"/>

        <!-- 自动部署流程 -->
        <property name="deploymentResources" value="classpath:diagram/core_auto_deployment/*.bpmn20.xml"/>
        <property name="deploymentResources">
            <list>
                <value>classpath:diagram/core_auto_deployment/*.bpmn20.xml</value>
            </list>
        </property>
    </bean>

因为使用的activiti版本为5.22.0,查看源码得知,自动部署到数据库ACT_RE_PROCDEF表中的名称统一为SpringAutoDeployment,并且DGRM_RESOURCE_NAME_字段值会存储文件的绝对路径,在后续的版本中已经针对该问题作出了修改。

  1. 自定义自动部署类,该方式可自由定义名称
<bean class="com.fangjie.activiti.core.config.AutoDeploymentCoreProcess" init-method="autoDeploymentResources">
        <property name="repositoryService" ref="repositoryService"/>
        <property name="deploymentResources">
            <list>
                <value>classpath:diagram/core_auto_deployment/*.bpmn20.xml</value>
            </list>
        </property>
    </bean>
package com.fangjie.activiti.core.config;

import org.activiti.engine.ActivitiException;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.DeploymentBuilder;
import org.springframework.core.io.Resource;

import java.util.zip.ZipInputStream;

/**
 * @author fangjie
 * @Description: ${todo}
 */
public class AutoDeploymentCoreProcess {

    protected RepositoryService repositoryService;

    protected Resource[] deploymentResources = new Resource[0];

    public void setRepositoryService(RepositoryService repositoryService) {
        this.repositoryService = repositoryService;
    }

    public void setDeploymentResources(Resource[] deploymentResources) {
        this.deploymentResources = deploymentResources;
    }

    void autoDeploymentResources() {
        if (deploymentResources != null && deploymentResources.length > 0) {
            for (Resource resource : deploymentResources) {
                try {
                    //指定文件名称
                    String resourceName = "SpringAutoDeployment_" + resource.getFilename();
                    DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().enableDuplicateFiltering().name(resourceName);
                    if (resourceName.endsWith(".bar") || resourceName.endsWith(".zip") || resourceName.endsWith(".jar")) {
                        deploymentBuilder.addZipInputStream(new ZipInputStream(resource.getInputStream()));
                    } else {
                        deploymentBuilder.addInputStream(resourceName, resource.getInputStream());
                    }
                    deploymentBuilder.deploy();
                } catch (Exception e) {
                    throw new ActivitiException("couldn't auto deploy resource '" + resource + "': " + e.getMessage(), e);
                }
            }
        }
    }
}

转载于:https://my.oschina.net/u/1161660/blog/3010386

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值