activiti 自动部署配置
来源:互联网 发布:数据挖掘算法有哪些 编辑:程序博客网 时间:2024/06/06 16:54
流程自动部署:
- package com.newtouch.ittask.service.visitor.util;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Arrays;
- import java.util.List;
- import org.activiti.engine.ActivitiException;
- import org.activiti.engine.RepositoryService;
- import org.activiti.engine.repository.Deployment;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.IOUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.FatalBeanException;
- import org.springframework.beans.factory.InitializingBean;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import org.springframework.core.io.Resource;
- /**
- * @description:结合spring自动部署activit流程定义文件
- * @version:1.0
- * @author:liumeiwu
- */
- public class WorkflowDeployer implements InitializingBean,ApplicationContextAware{
- private static final Logger logger = LoggerFactory.getLogger(WorkflowDeployer.class);
- private Resource[] deploymentResources;
- private String category;
- private ApplicationContext applicationContext;
- public WorkflowDeployer() {
- super();
- System.err.println(WorkflowDeployer.class.getName());
- }
- public void setapplicationcontext(ApplicationContext applicationContext) {
- this.applicationContext = applicationContext;
- }
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
- public void afterPropertiesSet() throws Exception {
- logger.info("visitor.bpmn20.xml 文件自动部署");
- if (category == null) { throw new FatalBeanException("缺失属性 : category"); }
- if (deploymentResources != null) {
- RepositoryService repositoryService = applicationContext.getBean(RepositoryService.class);
- for (Resource r : deploymentResources) {
- String deploymentName = category + "_" + r.getFilename();
- String resourceName = r.getFilename();
- boolean dodeploy = true;
- List<Deployment> deployments = repositoryService.createDeploymentQuery().deploymentName(deploymentName).orderByDeploymenTime().desc().list();
- if (!deployments.isEmpty()) {
- Deployment existing = deployments.get(0);
- try {
- InputStream in = repositoryService.getResourceAsStream(existing.getId(), resourceName);
- if (in != null) {
- File f = File.createTempFile("deployment", "xml", new File(System.getProperty("java.io.tmpdir")));
- f.deleteOnExit();
- OutputStream out = new FileOutputStream(f);
- IOUtils.copy(in, out);
- in.close();
- out.close();
- dodeploy = (FileUtils.checksumCRC32(f) != FileUtils.checksumCRC32(r.getFile()));
- } else throw new ActivitiException("不能读取资源 " + resourceName + ", 输入流为空");
- } catch (ActivitiException ex) {
- logger.error("unable to read " + resourceName + " of deployment " + existing.getName() + ", id: " + existing.getId() + ", will re-deploy");
- }
- }
- if (dodeploy) {
- repositoryService.createDeployment().name(deploymentName).addInputStream(resourceName, r.getInputStream()).deploy();
- logger.warn("文件部署成功 : " + r.getFilename());
- }
- }
- }
- }
- public Resource[] getDeploymentResources() {
- return deploymentResources;
- }
- public void setDeploymentResources(Resource[] deploymentResources) {
- this.deploymentResources = deploymentResources;
- }
- public String getCategory() {
- return category;
- }
- public void setCategory(String category) {
- this.category = category;
- }
- public ApplicationContext getApplicationContext() {
- return applicationContext;
- }
- @Override
- public String toString() {
- return "WorkflowDeployer [deploymentResources=" + Arrays.toString(deploymentResources) + ", category=" + category + ", applicationContext=" + applicationContext + "]";
- }
- }
配置文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 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
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
- <!--定义Activiti配置 -->
- <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
- <!-- 数据源 -->
- <property name="dataSource" ref="dataSource" />
- <property name="transactionManager" ref="transactionManager" />
- <!-- 设置流程引擎启动关闭时如何处理数据库,true 构建流程引擎引擎时,执行检查,如果需要就执行更新,不存在就创建 默认为false -->
- <property name="databaseSchemaUpdate" value="false" />
- </bean>
- <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
- <property name="processEngineConfiguration" ref="processEngineConfiguration" />
- </bean>
- <!-- 定义流程使用对象 -->
- <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
- <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
- <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
- <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
- <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
- <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
- <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
- <!-- 自动部署流程图 -->
- <bean id="workflowDeployer" class="com.newtouch.ittask.service.visitor.util.WorkflowDeployer">
- <property name="category" value="TEST" />
- <property name="deploymentResources" value="classpath*:activiti/visitor/visitor.bpmn20.xml" />
- </bean>
- </beans>
0 0
- activiti 自动部署配置
- activiti工作流引擎自动部署autodeploy心得
- activiti(3):引擎配置与流程部署
- maven自动部署插件配置
- Maven 自动部署功能配置
- Jenkins 配置svn自动部署
- Activiti 配置Oracle不能自动创建表解决方法
- 四、接管SpringBoot对Activiti的数据源自动配置
- activiti配置
- Activiti 5.19部署
- Activiti部署的方式
- Activiti部署模型乱码
- Activiti工作流部署异常
- Activiti流程定义部署
- activiti流程定义部署。
- Activiti部署报错
- activiti超时自动审批
- 配置eclipse下的tomcat自动部署
- android 验证码
- Dijkstra算法的C语言程序
- 编译原理中的first集,follow集和selec集的小解
- Android学习笔记:Bluetooth
- 关于Android开发中有关权限的问题
- activiti 自动部署配置
- sql转psql
- Linux 内核虚拟地址到物理地址转换讨论
- copy
- Web应用从服务器主动推送数据到客户端有哪些方式?
- linux 堆溢出学习之house of spirit(1) malloc maleficarum hos翻译
- servlet实现文件上传
- 日语动词变形
- 函数模板