package com.artfess.bpm.conf; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; import com.fasterxml.jackson.databind.ObjectMapper; import com.artfess.bpm.api.engine.BpmxEngine; import com.artfess.bpm.api.engine.BpmxEngineFactory; import com.artfess.bpm.api.inst.ISkipCondition; import com.artfess.bpm.api.plugin.core.cmd.ExecutionCommand; import com.artfess.bpm.api.plugin.core.cmd.TaskCommand; import com.artfess.bpm.api.plugin.core.context.PluginContext; import com.artfess.bpm.api.plugin.core.context.TaskActionHandlerContext; import com.artfess.bpm.api.plugin.core.execution.sign.SignActionHandler; import com.artfess.bpm.api.plugin.core.factory.BpmPluginFactory; import com.artfess.bpm.api.plugin.core.factory.BpmPluginSessionFactory; import com.artfess.bpm.api.plugin.core.task.TaskActionHandlerConfig; import com.artfess.bpm.engine.DefaultBpmxEngine; import com.artfess.bpm.engine.def.DefXmlTransForm; import com.artfess.bpm.engine.def.DefXmlUpdate; import com.artfess.bpm.engine.def.impl.handler.PluginContextContainer; import com.artfess.bpm.engine.def.impl.update.BoDefXmlUpdate; import com.artfess.bpm.engine.def.impl.update.GlobalFormDefXmlUpdate; import com.artfess.bpm.engine.def.impl.update.InstFormDefXmlUpdate; import com.artfess.bpm.engine.def.impl.update.MobileInstXmlUpdate; import com.artfess.bpm.engine.def.impl.update.NodeDefXmlUpdate; import com.artfess.bpm.engine.def.impl.update.PluginsDefXmlUpdate; import com.artfess.bpm.engine.def.impl.update.PropertiesDefXmlUpdate; import com.artfess.bpm.engine.def.impl.update.VarDefXmlUpdate; import com.artfess.bpm.engine.execution.sign.handler.ApproveSignActionHandler; import com.artfess.bpm.engine.execution.sign.handler.BackSignActionHandler; import com.artfess.bpm.engine.execution.sign.handler.SignActionHandlerContainer; import com.artfess.bpm.engine.graph.DefaultFlowStatusService; import com.artfess.bpm.engine.task.handler.TaskActionApproveHandler; import com.artfess.bpm.engine.task.skip.AllSkipCondition; import com.artfess.bpm.engine.task.skip.ApproverSkipCondition; import com.artfess.bpm.engine.task.skip.EmptyUserSkipCondition; import com.artfess.bpm.engine.task.skip.SameUserSkipCondition; import com.artfess.bpm.factory.DefaultBpmxEngineFactory; import com.artfess.bpm.helper.identity.DefaultBpmIdentityConverter; import com.artfess.bpm.persistence.manager.impl.BpmProStatusManagerImpl; import com.artfess.bpm.plugin.core.cmd.PluginExecutionCommand; import com.artfess.bpm.plugin.core.cmd.PluginTaskCommand; import com.artfess.bpm.plugin.core.factory.DefaultBpmPluginFactory; import com.artfess.bpm.plugin.core.factory.DefaultBpmPluginSessionFactory; import com.artfess.bpm.plugin.core.task.config.DefaultTaskActionHandlerConfig; import com.artfess.bpm.plugin.core.task.context.DefaultTaskActionHandlerContext; import com.artfess.bpm.plugin.execution.globalRestful.context.GlobalRestFulsPluginContext; import com.artfess.bpm.plugin.execution.globalRestful.def.GlobalRestfulInvokePluginDef; import com.artfess.bpm.plugin.execution.globalRestful.plugin.GlobalRestfulInvokePlugin; import com.artfess.bpm.plugin.execution.message.context.MessagePluginContext; import com.artfess.bpm.plugin.execution.message.def.MessagePluginDef; import com.artfess.bpm.plugin.execution.message.plugin.MessagePlugin; import com.artfess.bpm.plugin.execution.procnotify.context.ProcNotifyPluginContext; import com.artfess.bpm.plugin.execution.procnotify.def.ProcNotifyPluginDef; import com.artfess.bpm.plugin.execution.procnotify.plugin.ProcNotifyPlugin; import com.artfess.bpm.plugin.execution.script.context.ScriptNodePluginContext; import com.artfess.bpm.plugin.execution.script.def.ScriptNodePluginDef; import com.artfess.bpm.plugin.execution.script.plugin.ScriptNodePlugin; import com.artfess.bpm.plugin.execution.webservice.context.WebServicePluginContext; import com.artfess.bpm.plugin.execution.webservice.def.WebServiceNodePluginDef; import com.artfess.bpm.plugin.execution.webservice.plugin.WebServiceTaskPlugin; import com.artfess.bpm.plugin.task.reminders.context.RemindersPluginContext; import com.artfess.bpm.plugin.task.reminders.plugin.RemindersPlugin; import com.artfess.bpm.plugin.task.restful.context.RestFulsPluginContext; import com.artfess.bpm.plugin.task.restful.plugin.RestfulInvokePlugin; import com.artfess.bpm.plugin.task.startnewflow.context.StartNewFlowPluginContext; import com.artfess.bpm.plugin.task.startnewflow.plugin.StartNewFlowPlugin; import com.artfess.bpm.plugin.task.tasknotify.context.TaskNotifyPluginContext; import com.artfess.bpm.plugin.task.tasknotify.def.TaskNotifyPluginDef; import com.artfess.bpm.plugin.task.tasknotify.plugin.TaskNotifyPlugin; import com.artfess.bpm.plugin.task.test.context.TestPluginContext; import com.artfess.bpm.plugin.task.test.plugin.TestPlugin; import com.artfess.bpm.plugin.task.userassign.context.UserAssignPluginContext; import com.artfess.bpm.plugin.task.userassign.context.UserCopyToPluginContext; import com.artfess.bpm.plugin.task.userassign.def.UserAssignPluginDef; import com.artfess.bpm.plugin.task.userassign.plugin.UserAssignPlugin; import com.artfess.bpm.plugin.task.userassign.plugin.UserQueryPlugin; import com.artfess.bpm.plugin.usercalc.approver.context.ApproverPluginContext; import com.artfess.bpm.plugin.usercalc.approver.def.ApproverPluginDef; import com.artfess.bpm.plugin.usercalc.approver.runtime.ApproverPlugin; import com.artfess.bpm.plugin.usercalc.cusers.context.CusersPluginContext; import com.artfess.bpm.plugin.usercalc.cusers.def.CusersPluginDef; import com.artfess.bpm.plugin.usercalc.cusers.runtime.CusersPlugin; import com.artfess.bpm.plugin.usercalc.customQuery.content.CustomQueryPluginContext; import com.artfess.bpm.plugin.usercalc.customQuery.def.CustomQueryPluginDef; import com.artfess.bpm.plugin.usercalc.customQuery.runtime.CustomQueryPlugin; import com.artfess.bpm.plugin.usercalc.depHead.context.DepHeadPluginContext; import com.artfess.bpm.plugin.usercalc.depHead.def.DepHeadPluginDef; import com.artfess.bpm.plugin.usercalc.depHead.runtime.DepHeadPlugin; import com.artfess.bpm.plugin.usercalc.hrScript.context.HrScriptPluginContext; import com.artfess.bpm.plugin.usercalc.hrScript.def.HrScriptPluginDef; import com.artfess.bpm.plugin.usercalc.hrScript.runtime.HrScriptPlugin; import com.artfess.bpm.plugin.usercalc.job.context.JobPluginContext; import com.artfess.bpm.plugin.usercalc.job.def.JobPluginDef; import com.artfess.bpm.plugin.usercalc.job.runtime.JobPlugin; import com.artfess.bpm.plugin.usercalc.matrix.content.MatrixPluginContext; import com.artfess.bpm.plugin.usercalc.matrix.def.MatrixPluginDef; import com.artfess.bpm.plugin.usercalc.matrix.runtime.MatrixPlugin; import com.artfess.bpm.plugin.usercalc.org.context.OrgPluginContext; import com.artfess.bpm.plugin.usercalc.org.def.OrgPluginDef; import com.artfess.bpm.plugin.usercalc.org.runtime.OrgPlugin; import com.artfess.bpm.plugin.usercalc.position.context.PositionPluginContext; import com.artfess.bpm.plugin.usercalc.position.def.PositionPluginDef; import com.artfess.bpm.plugin.usercalc.position.runtime.PositionPlugin; import com.artfess.bpm.plugin.usercalc.role.content.RolePluginContext; import com.artfess.bpm.plugin.usercalc.role.def.RolePluginDef; import com.artfess.bpm.plugin.usercalc.role.runtime.RolePlugin; import com.artfess.bpm.plugin.usercalc.samenode.context.SameNodePluginContext; import com.artfess.bpm.plugin.usercalc.samenode.def.SameNodePluginDef; import com.artfess.bpm.plugin.usercalc.samenode.runtime.SameNodePlugin; import com.artfess.bpm.plugin.usercalc.script.context.ScriptPluginContext; import com.artfess.bpm.plugin.usercalc.script.def.ScriptPluginDef; import com.artfess.bpm.plugin.usercalc.script.runtime.ScriptPlugin; @Configuration public class BpmPluginConfig { @Value("${system.bpm.engineName:eip7}") private String engineName; @Resource AllSkipCondition allSkipCondition; @Resource SameUserSkipCondition sameUserSkipCondition; @Resource ApproverSkipCondition approverSkipCondition; @Resource EmptyUserSkipCondition emptyUserSkipCondition; @Resource ObjectMapper objectMapper; //消息节点插件 @Bean("messagePluginContext") public MessagePluginContext messagePluginContext(){ MessagePluginContext messagePluginContext = new MessagePluginContext(); messagePluginContext.setBpmPluginDef(new MessagePluginDef()); return messagePluginContext; } @Bean("messagePlugin") public MessagePlugin messagePlugin(){ return new MessagePlugin(); } //脚本节点插件 @Bean("scriptNodePluginContext") public ScriptNodePluginContext scriptNodePluginContext(){ ScriptNodePluginContext scriptNodePluginContext = new ScriptNodePluginContext(); scriptNodePluginContext.setBpmPluginDef(new ScriptNodePluginDef()); return scriptNodePluginContext; } @Bean("scriptNodePlugin") public ScriptNodePlugin scriptNodePlugin(){ return new ScriptNodePlugin(); } @Bean("webServicePluginContext") public WebServicePluginContext webServicePluginContext(){ WebServicePluginContext webServicePluginContext = new WebServicePluginContext(); webServicePluginContext.setBpmPluginDef(new WebServiceNodePluginDef()); return webServicePluginContext; } @Bean("webServicePlugin") public WebServiceTaskPlugin webServicePlugin(){ return new WebServiceTaskPlugin(); } @Bean("autoTaskPluginList") public List autoTaskPluginList( @Qualifier("scriptNodePluginContext") ScriptNodePluginContext scriptNodePluginContext, @Qualifier("webServicePluginContext") WebServicePluginContext webServicePluginContext, @Qualifier("messagePluginContext") MessagePluginContext messagePluginContext){ List pluginList =new ArrayList<>(); pluginList.add(messagePluginContext); pluginList.add(webServicePluginContext); pluginList.add(scriptNodePluginContext); return pluginList; } @Bean("pluginContextContainer") public PluginContextContainer pluginContextContainer( @Qualifier("autoTaskPluginList") List autoTaskPluginList ){ PluginContextContainer contextContainer=new PluginContextContainer(); contextContainer.setPluginList(autoTaskPluginList); return contextContainer; } //用户插件 @Bean("cusersPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public CusersPluginContext cusersPluginContext(){ CusersPluginContext cusersPluginContext = new CusersPluginContext(); cusersPluginContext.setBpmPluginDef(new CusersPluginDef()); return cusersPluginContext; } @Bean("cusersPlugin") public CusersPlugin cusersPlugin(){ return new CusersPlugin(); } @Bean("hrScriptPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public HrScriptPluginContext hrScriptPluginContext(){ HrScriptPluginContext hrScriptPluginContext = new HrScriptPluginContext(); hrScriptPluginContext.setBpmPluginDef(new HrScriptPluginDef()); return hrScriptPluginContext; } @Bean("hrScriptPlugin") public HrScriptPlugin hrScriptPlugin(){ return new HrScriptPlugin(); } @Bean("scriptPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public ScriptPluginContext scriptPluginContext(){ ScriptPluginContext scriptPluginContext = new ScriptPluginContext(); scriptPluginContext.setBpmPluginDef(new ScriptPluginDef()); return scriptPluginContext; } @Bean("scriptPlugin") public ScriptPlugin scriptPlugin(){ return new ScriptPlugin(); } @Bean("sameNodePluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public SameNodePluginContext sameNodePluginContext(){ SameNodePluginContext sameNodePluginContext = new SameNodePluginContext(); sameNodePluginContext.setBpmPluginDef(new SameNodePluginDef()); return sameNodePluginContext; } @Bean("sameNodePlugin") public SameNodePlugin sameNodePlugin(){ return new SameNodePlugin(); } @Bean("approverPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public ApproverPluginContext approverPluginContext(){ ApproverPluginContext approverPluginContext = new ApproverPluginContext(); approverPluginContext.setBpmPluginDef(new ApproverPluginDef()); return approverPluginContext; } @Bean("approverPlugin") public ApproverPlugin approverPlugin(){ return new ApproverPlugin(); } // 岗位作为审批人配置器 @Bean("positionPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public PositionPluginContext positionPluginContext(){ PositionPluginContext positionPluginContext = new PositionPluginContext(); positionPluginContext.setBpmPluginDef(new PositionPluginDef()); return positionPluginContext; } // 岗位作为审批人执行器 @Bean("positionPlugin") public PositionPlugin positionPlugin(){ return new PositionPlugin(); } // 部门作为审批人配置器 @Bean("orgPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public OrgPluginContext orgPluginContext(){ OrgPluginContext orgPluginContext = new OrgPluginContext(); orgPluginContext.setBpmPluginDef(new OrgPluginDef()); return orgPluginContext; } // 部门作为审批人执行器 @Bean("orgPlugin") public OrgPlugin orgPlugin(){ return new OrgPlugin(); } // 岗位组作为审批人配置器 @Bean("jobPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public JobPluginContext jobPluginContext(){ JobPluginContext jobPluJobContext = new JobPluginContext(); jobPluJobContext.setBpmPluginDef(new JobPluginDef()); return jobPluJobContext; } // 岗位组作为审批人执行器 @Bean("jobPlugin") public JobPlugin JobPlugin(){ return new JobPlugin(); } // 部门负责人作为审批人配置器 @Bean("depHeadPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public DepHeadPluginContext depHeadPluginContext(){ DepHeadPluginContext depHeadPluginContext = new DepHeadPluginContext(); depHeadPluginContext.setBpmPluginDef(new DepHeadPluginDef()); return depHeadPluginContext; } // 部门负责人作为审批人执行器 @Bean("depHeadPlugin") public DepHeadPlugin depHeadPlugin(){ return new DepHeadPlugin(); } //关联数据作为审批人配置器 @Bean("customQueryPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public CustomQueryPluginContext customQueryPluginContext(){ CustomQueryPluginContext customQueryPluginContext = new CustomQueryPluginContext(); customQueryPluginContext.setBpmPluginDef(new CustomQueryPluginDef()); return customQueryPluginContext; } //关联数据作为审批人执行器 @Bean("customQueryPlugin") public CustomQueryPlugin customQueryPlugin(){ return new CustomQueryPlugin(); } //角色矩阵作为审批人配置器 @Bean("matrixPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public MatrixPluginContext matrixPluginContext(){ MatrixPluginContext matrixPluginContext = new MatrixPluginContext(); matrixPluginContext.setBpmPluginDef(new MatrixPluginDef()); return matrixPluginContext; } //角色矩阵作为审批人执行器 @Bean("matrixPlugin") public MatrixPlugin matrixPlugin(){ return new MatrixPlugin(); } //角色作为审批人配置器 @Bean("rolePluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RolePluginContext rolePluginContext(){ RolePluginContext rolePluginContext = new RolePluginContext(); rolePluginContext.setBpmPluginDef(new RolePluginDef()); return rolePluginContext; } //角色作为审批人执行器 @Bean("rolePlugin") public RolePlugin rolePlugin(){ return new RolePlugin(); } @Bean("nodeUserPluginList") public List nodeUserPluginList( @Qualifier("cusersPluginContext") CusersPluginContext cusersPluginContext, @Qualifier("positionPluginContext") PositionPluginContext positionPluginContext, @Qualifier("hrScriptPluginContext") HrScriptPluginContext hrScriptPluginContext, @Qualifier("scriptPluginContext") ScriptPluginContext scriptPluginContext, @Qualifier("orgPluginContext") OrgPluginContext orgPluginContext, @Qualifier("jobPluginContext") JobPluginContext jobPluginContext, @Qualifier("depHeadPluginContext") DepHeadPluginContext depHeadPluginContext, @Qualifier("customQueryPluginContext") CustomQueryPluginContext customQueryPluginContext, @Qualifier("matrixPluginContext") MatrixPluginContext matrixPluginContext, @Qualifier("rolePluginContext") RolePluginContext rolePluginContext, @Qualifier("sameNodePluginContext") SameNodePluginContext sameNodePluginContext){ List list=new ArrayList<>(); list.add(cusersPluginContext); list.add(positionPluginContext); list.add(jobPluginContext); list.add(orgPluginContext); list.add(rolePluginContext); list.add(depHeadPluginContext); list.add(sameNodePluginContext); list.add(hrScriptPluginContext); list.add(scriptPluginContext); list.add(customQueryPluginContext); list.add(matrixPluginContext); return list; } @Bean("userCopyToPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public UserCopyToPluginContext userCopyToPluginContext(){ UserCopyToPluginContext userCopyToPluginContext = new UserCopyToPluginContext(); userCopyToPluginContext.setBpmPluginDef(new UserAssignPluginDef()); return userCopyToPluginContext; } @Bean("userAssignPluginContext") @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) public UserAssignPluginContext userAssignPluginContext(){ UserAssignPluginContext userAssignPluginContext = new UserAssignPluginContext(); userAssignPluginContext.setBpmPluginDef(new UserAssignPluginDef()); return userAssignPluginContext; } @Bean("userAssignPlugin") public UserAssignPlugin userAssignPlugin(){ return new UserAssignPlugin(); } @Bean("userQueryPlugin") public UserQueryPlugin userQueryPlugin(){ return new UserQueryPlugin(); } //通知插件 @Bean("taskNotifyPluginContext") public TaskNotifyPluginContext taskNotifyPluginContext(){ TaskNotifyPluginContext taskNotifyPluginContext = new TaskNotifyPluginContext(); taskNotifyPluginContext.setBpmPluginDef(new TaskNotifyPluginDef()); return taskNotifyPluginContext; } @Bean("taskNotifyPlugin") public TaskNotifyPlugin taskNotifyPlugin(){ return new TaskNotifyPlugin(); } @Bean("procNotifyPluginContext") public ProcNotifyPluginContext procNotifyPluginContext(){ ProcNotifyPluginContext procNotifyPluginContext = new ProcNotifyPluginContext(); procNotifyPluginContext.setBpmPluginDef(new ProcNotifyPluginDef()); return procNotifyPluginContext; } @Bean("procNotifyPlugin") public ProcNotifyPlugin procNotifyPlugin(){ return new ProcNotifyPlugin(); } //全局restful 插件 @Bean("globalRestFulsPluginContext") public GlobalRestFulsPluginContext globalRestFulsPluginContext(){ GlobalRestFulsPluginContext globalRestFulsPluginContext = new GlobalRestFulsPluginContext(); globalRestFulsPluginContext.setBpmPluginDef(new GlobalRestfulInvokePluginDef()); return globalRestFulsPluginContext; } @Bean("globalRestfulPlugin") public GlobalRestfulInvokePlugin globalRestfulPlugin(){ return new GlobalRestfulInvokePlugin(); } //节点restful 插件 @Bean("restFulsPluginContext") public RestFulsPluginContext restFulsPluginContext(){ RestFulsPluginContext restFulsPluginContext = new RestFulsPluginContext(); restFulsPluginContext.setBpmPluginDef(new GlobalRestfulInvokePluginDef()); return restFulsPluginContext; } @Bean("restFulsPlugin") public RestfulInvokePlugin restFulsPlugin(){ return new RestfulInvokePlugin(); } // 催办插件注册 @Bean("remindersPluginContext") public RemindersPluginContext remindersPluginContext(){ return new RemindersPluginContext(); } @Bean("remindersPlugin") public RemindersPlugin remindersPlugin(){ return new RemindersPlugin(); } // 催办插件注册 @Bean("startNewFlowPluginContext") public StartNewFlowPluginContext startNewFlowPluginContext(){ return new StartNewFlowPluginContext(); } @Bean("startNewFlowPlugin") public StartNewFlowPlugin startNewFlowPlugin(){ return new StartNewFlowPlugin(); } @Bean(name="taskActionHandlerContext") public TaskActionHandlerContext getTaskActionHandlerContext(){ return new DefaultTaskActionHandlerContext(); } @Bean(initMethod="init") public TaskActionHandlerConfig getTaskActionHandlerConfig(@Qualifier("taskActionHandlerContext") TaskActionHandlerContext taskActionHandlerContext){ DefaultTaskActionHandlerConfig taskActionHandlerConfig = new DefaultTaskActionHandlerConfig(); taskActionHandlerConfig.setActionConfigXml("/conf/taskActionPlugins.xml"); taskActionHandlerConfig.setTaskActionHandleContext(taskActionHandlerContext); return taskActionHandlerConfig; } @Bean public BpmPluginSessionFactory getBpmPluginSessionFactory(){ return new DefaultBpmPluginSessionFactory(); } @Bean public BpmPluginFactory getBpmPluginFactory(){ return new DefaultBpmPluginFactory(); } @Bean public ExecutionCommand getExecutionCommand(){ return new PluginExecutionCommand(); } @Bean public TaskCommand getTaskCommand(){ return new PluginTaskCommand(); } //流程定义更新 @Bean public DefXmlTransForm getDefXmlTransForm(){ DefXmlTransForm defXmlTransForm = new DefXmlTransForm(); List xmlUpdateList=new ArrayList(); xmlUpdateList.add(new BoDefXmlUpdate()); xmlUpdateList.add(new GlobalFormDefXmlUpdate()); xmlUpdateList.add(new InstFormDefXmlUpdate()); xmlUpdateList.add(new NodeDefXmlUpdate()); xmlUpdateList.add(new PluginsDefXmlUpdate()); xmlUpdateList.add(new PropertiesDefXmlUpdate()); xmlUpdateList.add(new VarDefXmlUpdate()); xmlUpdateList.add(new MobileInstXmlUpdate()); defXmlTransForm.setXmlUpdateList(xmlUpdateList); return defXmlTransForm; } @Bean public BpmxEngineFactory getDefaultBpmxEngineFactory(){ DefaultBpmxEngineFactory bpmxEngineFactory=new DefaultBpmxEngineFactory(); List bpmxEngines =new ArrayList<>(); bpmxEngines.add(new DefaultBpmxEngine()); bpmxEngineFactory.setDefaultEngineName(engineName); return bpmxEngineFactory; } @Bean("skipRules") public List skipRules(){ List list = new ArrayList<>(); list.add(allSkipCondition); list.add(sameUserSkipCondition); list.add(approverSkipCondition); list.add(emptyUserSkipCondition); return list; } @Bean(name="buttonsMap") public Map getButtonsMapFactory(){ Map buttonsMap = new HashMap(); buttonsMap.put("NORMAL", "inqu,agree,abandon,oppose,reject,backToStart,rejectToAnyNode,flowImage,approvalHistory,print,saveDraft,endProcess,lockUnlock,delegate,startCommu,startTrans,addSign,instanceTrans,taskDelay,hangUp,cancelHangUp"); buttonsMap.put("AGENT", "inqu,agree,abandon,oppose,reject,backToStart,rejectToAnyNode,flowImage,approvalHistory,print,saveDraft,endProcess,lockUnlock,delegate,startCommu,startTrans,addSign"); buttonsMap.put("DELIVERTO", "inqu,agree,abandon,oppose,reject,backToStart,rejectToAnyNode,flowImage,approvalHistory,print,saveDraft,endProcess,lockUnlock,delegate,startCommu,startTrans,addSign"); buttonsMap.put("TRANSFORMED", "agreeTrans,opposeTrans,flowImage,approvalHistory,print"); buttonsMap.put("TRANSFORMING", "flowImage,approvalHistory,print"); buttonsMap.put("COMMU", "commu,flowImage,approvalHistory,print"); buttonsMap.put("APPROVELINEED", "agree,reject,flowImage,approvalHistory,print"); buttonsMap.put("SIGNSEQUENCEED", "agree,signSequence,flowImage,approvalHistory,print"); buttonsMap.put("SIGNLINEED", "agree,signLine,flowImage,approvalHistory,print"); buttonsMap.put("BACK", "inqu,agree,abandon,oppose,reject,backToStart,rejectToAnyNode,flowImage,approvalHistory,print,saveDraft,endProcess,lockUnlock,delegate,startCommu,startTrans,addSign,instanceTrans,taskDelay"); buttonsMap.put("ADDSIGN", "inqu,agree,abandon,oppose,reject,backToStart,rejectToAnyNode,flowImage,approvalHistory,print,saveDraft,endProcess,lockUnlock,delegate,startCommu,startTrans,addSign,instanceTrans,taskDelay"); return buttonsMap; } @Bean("statusColorMap") public Map statusColorMap(){ Map map = new HashMap(); map.put("agree","#00FF00"); map.put("complete","#4A4A4A"); map.put("pending","#FF0000"); map.put("oppose","#0000FF"); map.put("back","#8A0902"); map.put("backToStart","#FFA500"); map.put("recover","#023B62"); map.put("recoverToStart","#F23B62"); map.put("sign_pass","#338848"); map.put("sign_no_pass","#82B7D7"); map.put("manual_end","#EEAF97"); map.put("submit","#F89800"); map.put("resubmit","#FFE76E"); map.put("suspend","#C33A1F"); map.put("signBackCancel","#CCCCCC" ); return map; } @Bean("flowStatusService") public DefaultFlowStatusService flowStatusService(@Qualifier("statusColorMap") Map statusColorMap){ DefaultFlowStatusService flowStatusService = new DefaultFlowStatusService(); flowStatusService.setStatusColor(statusColorMap); return flowStatusService; } @Bean("bpmProStatusManager") public BpmProStatusManagerImpl bpmProStatusManager(@Qualifier("statusColorMap") Map statusColorMap){ BpmProStatusManagerImpl bpmProStatusManager = new BpmProStatusManagerImpl(); bpmProStatusManager.setStatusColor(statusColorMap); return bpmProStatusManager; } @Bean("taskActionAgreeHandler") public TaskActionApproveHandler taskActionAgreeHandler(@Qualifier("statusColorMap") Map statusColorMap){ TaskActionApproveHandler taskActionAgreeHandler = new TaskActionApproveHandler(); return taskActionAgreeHandler; } @Bean("approveSignActionHandler") public ApproveSignActionHandler approveSignActionHandler(){ ApproveSignActionHandler approveSignActionHandler = new ApproveSignActionHandler(); return approveSignActionHandler; } @Bean("backSignActionHandler") public BackSignActionHandler backSignActionHandler(){ BackSignActionHandler backSignActionHandler = new BackSignActionHandler(); return backSignActionHandler; } @Bean("signActionHandlerContainer") public SignActionHandlerContainer signActionHandlerContainer( @Qualifier("approveSignActionHandler") ApproveSignActionHandler approveSignActionHandler, @Qualifier("backSignActionHandler") BackSignActionHandler backSignActionHandler ){ SignActionHandlerContainer actionHandlerContainer = new SignActionHandlerContainer(); Map actionHandlers = new HashMap(); actionHandlers.put("approve", approveSignActionHandler); actionHandlers.put("back", backSignActionHandler); actionHandlers.put("backToStart", backSignActionHandler); actionHandlers.put("backTo", backSignActionHandler); actionHandlerContainer.setActionHandlers(actionHandlers); return actionHandlerContainer; } @Bean("bpmIdentityConverter") public DefaultBpmIdentityConverter bpmIdentityConverter(){ DefaultBpmIdentityConverter bpmIdentityConverter = new DefaultBpmIdentityConverter(); return bpmIdentityConverter; } // 测试插件 @Bean("testPluginContext") public TestPluginContext testPluginContext(){ return new TestPluginContext(); } @Bean("testPlugin") public TestPlugin testPlugin(){ return new TestPlugin(); } }