Spring boot 尝试从部署的任何进程启动实例时出错
我在将Camunda BPMN与springboot集成时遇到问题,我创建了包含Camunda引擎配置的文件Spring boot 尝试从部署的任何进程启动实例时出错,spring-boot,bpmn,camunda,bpmn.io,Spring Boot,Bpmn,Camunda,Bpmn.io,我在将Camunda BPMN与springboot集成时遇到问题,我创建了包含Camunda引擎配置的文件 @Bean 公共SpringProcessEngineConfiguration进程EngineConfiguration(){ SpringProcessEngineConfiguration config=新的SpringProcessEngineConfiguration(); log.info(“--------------SpringProcessEngineConfigura
@Bean
公共SpringProcessEngineConfiguration进程EngineConfiguration(){
SpringProcessEngineConfiguration config=新的SpringProcessEngineConfiguration();
log.info(“--------------SpringProcessEngineConfiguration”);
config.setDataSource(数据源);
PlatformTransactionManager PlatformTransactionManager=新的JpaTransactionManager(entityManagerFactory);
config.setTransactionManager(platformTransactionManager);
config.setDatabaseSchemaUpdate(“true”);
config.setHistory(“审计”);
config.setJobExecutorActivate(true);
config.setApplicationContext(applicationContext);
返回配置;
}
@豆子
公共ProcessEngineFactoryBean processEngine(){
log.info(“-------------------processEngine”);
ProcessEngineFactoryBean factoryBean=新的ProcessEngineFactoryBean();
setProcessEngineConfiguration(processEngineConfiguration());
setApplicationContext(applicationContext);
返回factoryBean;
}
@豆子
公共存储服务存储服务(ProcessEngine ProcessEngine){
log.info(“-------------------repositoryService”);
返回processEngine.getRepositoryService();
}
@豆子
公共运行时服务运行时服务(ProcessEngine ProcessEngine){
log.info(“--------------运行时服务”);
返回processEngine.getRuntimeService();
}
@豆子
公共任务服务任务服务(ProcessEngine ProcessEngine){
log.info(“--------------任务服务”);
返回processEngine.getTaskService();
}
我想,我确实成功地部署了这个过程:我找到了两个只包含数据的表,ACT\u RE\u DEPLOYMENT
和ACT\u GE\u BYTEARRAY
然而,在尝试从任何部署的进程启动实例时,我总是会出错
ProcessEngine processEngine = restProcessEngineProvider.getDefaultProcessEngine();
log.info("processEngine {} ",processEngine.getName());
RuntimeService runtimeService = processEngine.getRuntimeService();
log.info("runtimeService");
RepositoryService repositoryService = processEngine.getRepositoryService();
log.info("repositoryService");
InputStream stream = new ByteArrayInputStream(process.getLastXmlDefinition().getBytes(Charset.defaultCharset()));
DeploymentEntity deploymentResult;
try {
deploymentResult = (DeploymentEntity) repositoryService.createDeployment()
.name(name)
.addInputStream(name, stream).deploy();
List<ProcessDefinition> processes= deploymentResult.getDeployedProcessDefinitions();
if (processes!=null)
{
log.info("process not null {} ",processes.size());
}
else
{
log.info("process null");
}
} finally {
stream.close();
}
//read the result
String deploymentId = deploymentResult.getId();
log.info("deployement id {} ",deploymentId);
ProcessDefinition processDef = repositoryService.createProcessDefinitionQuery()
.processDefinitionName(name)
.singleResult();
log.info("process def ...");
//return the process definition id for later query
String processDefinitionId="";
if (processDef!=null)
{
if (processDef.getId()!=null)
processDefinitionId = processDef.getId();
else
log.info("process def id is null");
}
else
{
log.info("process def null ");
}
log.info("deployed success {} ",processDefinitionId);
runtimeService.startProcessInstanceByKey(name);
ProcessEngine=restProcessEngineProvider.getDefaultProcessEngine();
log.info(“processEngine{}”,processEngine.getName());
RuntimeService RuntimeService=processEngine.getRuntimeService();
log.info(“运行时服务”);
RepositoryService RepositoryService=processEngine.getRepositoryService();
log.info(“repositoryService”);
InputStream=new ByteArrayInputStream(process.getLastXmlDefinition().getBytes(Charset.defaultCharset());
部署实体部署结果;
试一试{
deploymentResult=(DeploymentEntity)repositoryService.createDeployment()
.姓名(姓名)
.addInputStream(名称、流).deploy();
List processs=deploymentResult.getDeployedProcessDefinitions();
if(进程!=null)
{
info(“processnotnull{}”,processs.size());
}
其他的
{
log.info(“进程空”);
}
}最后{
stream.close();
}
//阅读结果
字符串deploymentId=deploymentResult.getId();
log.info(“Deployment id{}”,deploymentId);
ProcessDefinition processDef=repositoryService.createProcessDefinitionQuery()
.processDefinitionName(名称)
.singleResult();
log.info(“过程定义…”);
//返回进程定义id以供以后查询
字符串processDefinitionId=“”;
if(processDef!=null)
{
if(processDef.getId()!=null)
processDefinitionId=processDef.getId();
其他的
log.info(“进程定义id为空”);
}
其他的
{
log.info(“进程定义空”);
}
log.info(“部署成功{}”,processDefinitionId);
runtimeService.startProcessInstanceByKey(名称);
始终获取空进程def org.camunda.bpm.engine.exception.NullValueException:没有使用密钥部署的进程…我找到了一种方法来回答我自己的问题,我想我应该在这里发布它
String fileXML=”“;//在此处设置进程xml
ProcessEngine=restProcessEngineProvider.getDefaultProcessEngine();
RuntimeService RuntimeService=processEngine.getRuntimeService();
RepositoryService RepositoryService=processEngine.getRepositoryService();
InputStream=新的ByteArrayInputStream(fileXML);
部署实体部署结果;
字符串deploiementBuild=name+“deploiement”;
DeploymentBuilder DeploymentBuilder=repositoryService.createDeployment().name(deploiementBuild);
字符串定义名称=名称+“.bpmn”;
addInputStream(定义名称,流);
字符串deploymentId=deploymentBuilder.deploy().getId();
log.info(“Deployment----------------->{}”,deploymentId);
列表定义=repositoryService.createProcessDefinitionQuery().List();
log.info(“存储大小------->{}”,definitions.size());
如何获取变量名称
?我看不到您发布的代码中定义了它。