package org.jeecg.common.config; import com.google.common.collect.Lists; import org.activiti.engine.*; import org.activiti.spring.ProcessEngineFactoryBean; import org.activiti.spring.SpringProcessEngineConfiguration; import org.jeecg.modules.activiti.manage.CustomGroupEntityManager; import org.jeecg.modules.activiti.manage.CustomUserEntityManager; import org.jeecg.modules.apply.lisener.CustomEventListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; import java.io.IOException; /** * 工作流配置 * * @author len * @date 2019/06/13 */ @Configuration public class ActivitiConfig { @Autowired private CustomUserEntityManager customUserEntityManager; @Autowired private CustomGroupEntityManager customGroupEntityManager; @Autowired private CustomEventListener customEventListener; /** * 核心流程引擎类 * * @param transactionManager transactionManager * @param dataSource dataSource * @return ProcessEngine */ @Bean public ProcessEngine processEngine(PlatformTransactionManager transactionManager, DataSource dataSource) throws IOException { SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration(); // 自动部署已有的流程文件 // Resource[] resources = new PathMatchingResourcePatternResolver() // .getResources(ResourceLoader.CLASSPATH_URL_PREFIX + "processes/*.bpmn"); // Resource[] resources2 = new PathMatchingResourcePatternResolver() // .getResources(ResourceLoader.CLASSPATH_URL_PREFIX + "processes/*.bpmn20.xml"); // ArrayList arrayList = new ArrayList(Arrays.asList(resources)); // arrayList.addAll(Arrays.asList(resources2)); // Resource[] arr =new Resource[arrayList.size()]; // Resource[] resources1 = arrayList.toArray(arr); // processEngineConfiguration.setDeploymentResources(resources1); // processEngineConfiguration.setDeploymentName("系统自动部署流程"); processEngineConfiguration.setTransactionManager(transactionManager); processEngineConfiguration.setDataSource(dataSource); processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE); // processEngineConfiguration.setDatabaseSchema("tcore_dev"); // processEngineConfiguration.setDatabaseTablePrefix("ACT"); // 自定义用户和组 // processEngineConfiguration.setUserEntityManager(customUserEntityManager); // processEngineConfiguration.setGroupEntityManager(customGroupEntityManager); processEngineConfiguration.setActivityFontName("SimHei"); processEngineConfiguration.setAnnotationFontName("SimHei"); processEngineConfiguration.setLabelFontName("SimHei"); //自定义事件监听配置 processEngineConfiguration.setEventListeners(Lists.newArrayList(customEventListener)); return processEngineConfiguration.buildProcessEngine(); } /** * 流程仓库Service,用于管理流程仓库,例如部署、删除、读取流程资源 * * @param processEngine processEngine * @return RepositoryService */ @Bean public RepositoryService repositoryService(ProcessEngine processEngine) { return processEngine.getRepositoryService(); } /** * 运行时Service,可以也拿过来处理所有正在运行状态的流程实例、任务等 * * @param processEngine processEngine * @return RuntimeService */ @Bean public RuntimeService runtimeService(ProcessEngine processEngine) { return processEngine.getRuntimeService(); } /** * 任务Service,用于管理和查询任务,例如签收、办理、指派等 * * @param processEngine processEngine * @return ApprovalTaskService */ @Bean public TaskService taskService(ProcessEngine processEngine) { return processEngine.getTaskService(); } /** * 历史Service,用于查询所有历史数据,例如流程实例、任务、活动、变量、附件 * * @param processEngine processEngine * @return HistoryService */ @Bean public HistoryService historyService(ProcessEngine processEngine) { return processEngine.getHistoryService(); } /** * 引擎管理Service,和具体业务无关,主要可以查询引擎配置、数据库、作业等 * * @param processEngine processEngine * @return ManagementService */ @Bean public ManagementService managementService(ProcessEngine processEngine) { return processEngine.getManagementService(); } /** * 身份Service,用于管理和查询用户、组之间的关系 * * @param processEngine processEngine * @return IdentityService */ @Bean public IdentityService identityService(ProcessEngine processEngine) { return processEngine.getIdentityService(); } /** * 表单Service,用于读取流程、任务相关的表单数据 * * @param processEngine processEngine * @return FormService */ @Bean public FormService formService(ProcessEngine processEngine) { return processEngine.getFormService(); } /** * 一个新增的服务,用于动态修改流程中的一些参数信息等,是引擎中的一个辅助的服务 * * @param processEngine processEngine * @return DynamicBpmnService */ @Bean public DynamicBpmnService dynamicBpmnService(ProcessEngine processEngine) { return processEngine.getDynamicBpmnService(); } }