skylm1234 / activitiMultiTenant

activiti MultiSchemaMultiTenant with version5.22
6 stars 4 forks source link

关于分租户部署 #1

Open yizhongwei opened 5 years ago

yizhongwei commented 5 years ago

你好,请问 我当前的需求并不需要分库,只需要开启流程时传入tenantId,做逻辑的区分,但是用springboot启动时会自动部署流程,当我启动流程runtimeService.startProcessInstanceByKeyAndTenantId()时就会报异常 org.activiti.engine.ActivitiObjectNotFoundException: no processes deployed with key 'demo' for tenant identifier '17'。有什么好办法解决吗?感谢

skylm1234 commented 5 years ago

hello,不好意思,近段时间都没关注这块了。看了下你的描述,或许是你没有在部署流程的时候传入tenantid。这个异常是由于在查下流程定义的时候没有查询到,sql如下: <select id="selectLatestProcessDefinitionByKeyAndTenantId" parameterType="map" resultMap="processDefinitionResultMap"> select * from ${prefix}ACT_RE_PROCDEF where KEY_ = #{processDefinitionKey} and TENANT_ID_ = #{tenantId} and VERSION_ = (select max(VERSION_) from ${prefix}ACT_RE_PROCDEF where KEY_ = #{processDefinitionKey} and TENANT_ID_ = #{tenantId}) </select> 所以在部署流程的时候需要手动传入tennatid。代码如下: 类:org.activiti.engine.repository.DeploymentBuilder public DeploymentBuilder tenantId(String tenantId) { deployment.setTenantId(tenantId); return this; }

yizhongwei commented 5 years ago

是的 非常感谢 是这个原因 。我现在用springboot启动 ,会自动部署包下所有bpmn文件。这样的情况,是应该覆盖那个配置bean吗?

在 2018-11-20 14:50:29,"skylm1234" notifications@github.com 写道:

hello,不好意思,近段时间都没关注这块了。看了下你的描述,或许是你没有在部署流程的时候传入tenantid。这个异常是由于在查下流程定义的时候没有查询到,sql如下:

所以在部署流程的时候需要手动传入tennatid。代码如下: 类:org.activiti.engine.repository.DeploymentBuilder public DeploymentBuilder tenantId(String tenantId) { deployment.setTenantId(tenantId); return this; }

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

skylm1234 commented 5 years ago

是的 非常感谢 是这个原因 。我现在用springboot启动 ,会自动部署包下所有bpmn文件。这样的情况,是应该覆盖那个配置bean吗? 在 2018-11-20 14:50:29,"skylm1234" notifications@github.com 写道: hello,不好意思,近段时间都没关注这块了。看了下你的描述,或许是你没有在部署流程的时候传入tenantid。这个异常是由于在查下流程定义的时候没有查询到,sql如下: 所以在部署流程的时候需要手动传入tennatid。代码如下: 类:org.activiti.engine.repository.DeploymentBuilder public DeploymentBuilder tenantId(String tenantId) { deployment.setTenantId(tenantId); return this; } — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

如果是用spring boot activiti-starter的话,需要修改一个配置spring.activiti.check-process-definitions=false 写在spring全局配置中。 这个问题google应该很容易找到答案

yizhongwei commented 5 years ago

sorry 百度了好久没找到答案。非常感谢,如果这样的话我的每个进程是不是都要手动部署了。能不能去重写springboot的自动部署 加上tenantid

skylm1234 commented 5 years ago

能不能重写需要去研究源码,starter方式我没研究过能不能。如果不使用starter,用原本的spring集成的话,是可以继承配置并重写的

yizhongwei commented 5 years ago

谢谢