Spring boot 尝试从部署的任何进程启动实例时出错

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

我在将Camunda BPMN与springboot集成时遇到问题,我创建了包含Camunda引擎配置的文件

@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());

如何获取变量
名称
?我看不到您发布的代码中定义了它。