Activiti:没有使用密钥部署的进程
Activiti : no processes deployed with key
我在执行时遇到异常 no processes deployed with key 'Process_MohitWorkflow'
:
ProcessInstance instance =
runtimeService.startProcessInstanceByKey(workflowName, businessKey, variables);
我的 act_re_procdef
table 中确实有此工作流程的条目
"Process_MohitWorkflow:1:14";1;"http://www.activiti.org/processdef";"Mohit
Trust";"Process_MohitWorkflow";1;"11";"MyBPMN.bpmn20.xml";"MyBPMN.Process_MohitWorkflow.png";"";FALSE;TRUE;1;"603"
我使用以下代码部署了我的 MyBPMN.bpmn20.xml
文件:
public void deployProcessFile(String name, InputStream io, long tenantId) {
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment()
.addInputStream(name, io)
.name(name.substring(0, name.indexOf(".")))
.enableDuplicateFiltering()
.tenantId(String.valueOf(tenantId))
.deploy();
}
堆栈跟踪:
Caused by: org.activiti.engine.ActivitiObjectNotFoundException: no processes deployed with key 'Process_MohitWorkflow'
at org.activiti.engine.impl.persistence.deploy.DeploymentManager.findDeployedLatestProcessDefinitionByKey(DeploymentManager.java:125)
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:79)
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:37)
at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:81)
at com.vernuso.trust.server.service.ProcessService.startWorkFlowInstanceForEntity(ProcessService.java:265)
at com.vernuso.trust.server.service.ProcessService.startOnboardingForOrganisation(ProcessService.java:221)
at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:70)
at com.vernuso.trust.server.governance.client.OnboardOrganisationActionHandler.executeTransaction(OnboardOrganisationActionHandler.java:44)
at com.vernuso.trust.server.governance.client.OnboardOrganisationActionHandler.executeTransaction(OnboardOrganisationActionHandler.java:25)
at com.vernuso.trust.server.SecuredActionHandler.execute(SecuredActionHandler.java:31)
at com.gwtplatform.dispatch.rpc.server.AbstractDispatchImpl.doExecute(AbstractDispatchImpl.java:154)
... 48 more
对我可能遗漏的东西有什么想法吗?
此致。
我设法通过使用解决了这个问题:
ProcessInstance instance = runtimeService.startProcessInstanceByKey(
workflowName, businessKey, variables, tenantId);
而不是:
ProcessInstance instance = runtimeService.startProcessInstanceByKey(
workflowName, businessKey, variables);
最初,我只依赖:
processEngine.getRepositoryService().createProcessDefinitionQuery()
.processDefinitionTenantId(tenantId)
.singleResult()
根据 tenantId 过滤掉进程,但我想这还不够。
不确定这是如何工作的(为什么我们必须提供额外的参数,即 tenantId 到 startProcessInstance)或者我应该做些什么才能在此处发布之前看到它。
尝试将子流程与原始流程一起部署:
repositoryService.createDeployment()
.addClasspathResource("diagrams/Process.bpmn")
.deploy();
repositoryService.createDeployment()
.addClasspathResource("diagrams/Process_Subprocess.bpmn")
.deploy();
我正在 junit 中执行此操作并且它现在正在工作。
您可能无法使用 RuntimeService::startProcessInstanceById()
启动进程的另一个原因是,作为该方法输入所需的 ID 与 [=18= 中的 id
属性不同] 文件。 Activiti 将后者称为密钥。
RuntimeService::startProcessInstanceById()
需要 Activiti 引擎在部署时生成的字符串 ID。生成的id格式为key:version
.
我在执行时遇到异常 no processes deployed with key 'Process_MohitWorkflow'
:
ProcessInstance instance =
runtimeService.startProcessInstanceByKey(workflowName, businessKey, variables);
我的 act_re_procdef
table 中确实有此工作流程的条目
"Process_MohitWorkflow:1:14";1;"http://www.activiti.org/processdef";"Mohit Trust";"Process_MohitWorkflow";1;"11";"MyBPMN.bpmn20.xml";"MyBPMN.Process_MohitWorkflow.png";"";FALSE;TRUE;1;"603"
我使用以下代码部署了我的 MyBPMN.bpmn20.xml
文件:
public void deployProcessFile(String name, InputStream io, long tenantId) {
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment()
.addInputStream(name, io)
.name(name.substring(0, name.indexOf(".")))
.enableDuplicateFiltering()
.tenantId(String.valueOf(tenantId))
.deploy();
}
堆栈跟踪:
Caused by: org.activiti.engine.ActivitiObjectNotFoundException: no processes deployed with key 'Process_MohitWorkflow'
at org.activiti.engine.impl.persistence.deploy.DeploymentManager.findDeployedLatestProcessDefinitionByKey(DeploymentManager.java:125)
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:79)
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:37)
at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:81)
at com.vernuso.trust.server.service.ProcessService.startWorkFlowInstanceForEntity(ProcessService.java:265)
at com.vernuso.trust.server.service.ProcessService.startOnboardingForOrganisation(ProcessService.java:221)
at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:70)
at com.vernuso.trust.server.governance.client.OnboardOrganisationActionHandler.executeTransaction(OnboardOrganisationActionHandler.java:44)
at com.vernuso.trust.server.governance.client.OnboardOrganisationActionHandler.executeTransaction(OnboardOrganisationActionHandler.java:25)
at com.vernuso.trust.server.SecuredActionHandler.execute(SecuredActionHandler.java:31)
at com.gwtplatform.dispatch.rpc.server.AbstractDispatchImpl.doExecute(AbstractDispatchImpl.java:154)
... 48 more
对我可能遗漏的东西有什么想法吗?
此致。
我设法通过使用解决了这个问题:
ProcessInstance instance = runtimeService.startProcessInstanceByKey(
workflowName, businessKey, variables, tenantId);
而不是:
ProcessInstance instance = runtimeService.startProcessInstanceByKey(
workflowName, businessKey, variables);
最初,我只依赖:
processEngine.getRepositoryService().createProcessDefinitionQuery()
.processDefinitionTenantId(tenantId)
.singleResult()
根据 tenantId 过滤掉进程,但我想这还不够。
不确定这是如何工作的(为什么我们必须提供额外的参数,即 tenantId 到 startProcessInstance)或者我应该做些什么才能在此处发布之前看到它。
尝试将子流程与原始流程一起部署:
repositoryService.createDeployment()
.addClasspathResource("diagrams/Process.bpmn")
.deploy();
repositoryService.createDeployment()
.addClasspathResource("diagrams/Process_Subprocess.bpmn")
.deploy();
我正在 junit 中执行此操作并且它现在正在工作。
您可能无法使用 RuntimeService::startProcessInstanceById()
启动进程的另一个原因是,作为该方法输入所需的 ID 与 [=18= 中的 id
属性不同] 文件。 Activiti 将后者称为密钥。
RuntimeService::startProcessInstanceById()
需要 Activiti 引擎在部署时生成的字符串 ID。生成的id格式为key:version
.