Java 使用自定义后期部署器将Drools与Activiti和SpringBoot集成的问题
我从这个论坛得到了帮助:我能够自动连接ProcessEngine,获得ProcessEngine配置,然后在添加deployer时,我被击中了。代码片段是:Java 使用自定义后期部署器将Drools与Activiti和SpringBoot集成的问题,java,spring-boot,drools,activiti,Java,Spring Boot,Drools,Activiti,我从这个论坛得到了帮助:我能够自动连接ProcessEngine,获得ProcessEngine配置,然后在添加deployer时,我被击中了。代码片段是: SpringProcessEngineConfiguration sp = (SpringProcessEngineConfiguration) processEngine.getProcessEngineConfiguration(); List<Deployer> listDeployer = new ArrayL
SpringProcessEngineConfiguration sp = (SpringProcessEngineConfiguration)
processEngine.getProcessEngineConfiguration();
List<Deployer> listDeployer = new ArrayList<Deployer>();
listDeployer.add(new RulesDeployer());
sp.setCustomPostDeployers(listDeployer); // <--setCustomPostDeployers function is not called
SpringProcessEngineConfiguration sp=(SpringProcessEngineConfiguration)
processEngine.getProcessEngineConfiguration();
List listDeployer=new ArrayList();
add(新规则部署程序());
sp.setCustomPostDeployers(listDeployer);// 我花了很多时间才弄明白,但在阅读了一些有趣的帖子和文档之后,我终于用Activiti、Spring Boot和Drools创建了一个示例
在您的情况下,在使用processEngine
之前,您正在修改现有的SpringBoot配置,但是根据我的测试,由于已经读取了资源,因此在那里添加自定义部署器为时已晚。然后您必须更早地设置配置
文档一般都指出要更改“activiti.cfg.xml”,但这是针对spring
的,对spring引导
没有用处。然后,我们的想法是生成一个配置类,就像SpringBoot使用的那样
@Configuration
public class ProcessEngineConfigDrlEnabled {
@Autowired
private DataSource dataSource;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public SpringProcessEngineConfiguration processEngineConfiguration() {
SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
try {
config.setDeploymentResources(getBpmnFiles());
} catch (IOException e) {
e.printStackTrace();
}
config.setDataSource(dataSource);
config.setTransactionManager(transactionManager);
//Here the rulesdeployer is added.
config.setCustomPostDeployers(Arrays.asList(new RulesDeployer()));
return config;
}
/*Read folder with BPMN files and folder with DLR files */
private Resource[] getBpmnFiles() throws IOException {
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] bpmnResources = resourcePatternResolver.getResources("classpath*:" + BPMN_PATH + "**/*.bpmn20.xml");
Resource[] drlResources = resourcePatternResolver.getResources("classpath*:" + DRL_PATH + "**/*.drl");
return (Resource[]) ArrayUtils.addAll(bpmnResources, drlResources);
}
@Bean
public ProcessEngineFactoryBean processEngine() {
ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
factoryBean.setProcessEngineConfiguration(processEngineConfiguration());
return factoryBean;
}
...
}
通常,此类必须位于Spring boot可以读取的数据包中(在主类的数据包层次结构中)
在本例中,我使用了默认配置中的原始数据源和transactionManager。如果没有,则必须实现您的配置并将其添加到配置中