我负责为我的公司建立一个复杂的系统,经过一些研究后认为Camunda符合我的大部分要求。但是我的一些要求并不常见,在阅读了用户指南后,我意识到有很多方法可以做同样的事情,所以我希望这个问题能够澄清我的想法,并且也会成为所有寻求建筑的其他人的基本问题。相似的东西。
首先,我计划在Camunda BPM之上构建一个特定的应用程序。它将使用工作流和BPM,但不一定是BPM / Camunda提供的所有内容。这意味着我的计划不是主要使用与Camunda捆绑的网络应用程序(任务,建模者......),至少不是最终用户。为了使事情变得更复杂,它必须动态地支持多个租户。
所以,我将尝试指定我的所有要求,然后希望有比我更多经验的人可以解释哪个是最好的架构/解决方案来使这项工作。
我们走了:
经过一番研究,这是我的想法
质疑
我不排除只使用一个租户,一个流程引擎,并在我的应用程序中逻辑地处理与租户相关的所有内容,但我知道这可能非常(非常!)繁琐。
欢迎所有答案,希望我们能够很好地解决这个问题。
答案 0 :(得分:2)
1。我应该让camunda管理我的用户/群组,还是在我的应用上更好地管理它?在这种情况下,我可以对Camunda说“用户X完成任务Y”,即使camunda不知道用户X的存在吗?
是的,您可以选择您的应用来管理用户,并告诉Camunda任务由Camunda不知道的用户完成。同样,您可以让Camunda将任务分配给它根本不知道的用户。这是通过实现 org.camunda.bpm.engine.impl.identity.ReadOnlyIdentityProvider 接口完成的,并让配置了解您的实现。
PS:如果您不需要Camunda附带的所有应用程序,我甚至建议您在您的应用程序中嵌入Camunda引擎。它可以很容易地完成,并且有很好的java API文档。它很容易实现。2。动态多租户怎么样?即使重新启动应用程序服务器,是否有可能动态创建租户并使这些租户持续存在?重启后重新部署流程怎么样?
是。可以动态添加租户。在重新启动引擎或应用程序时,您可以选择重新部署/或仅使用现有的已部署进程。即使您重新部署流程,如果您希望Camunda仅在流程发生变化时才创建流程的新版本,那也是可能的。查看 DeploymentDilder 的 enableDuplicateFiltering 属性。
3。在那之后我应该考虑在节点上划分引擎?通过动态多租户很难弄清楚我将如何做到这一点,而且......这是处理高工作量和不断增加的租户数量的正确方法吗?
根据我的经验,这是可能的。您需要在此处跟踪各种参数,例如内存,正在提供的请求数,可用的打开连接数等,然后相应地添加更多或删除节点。使用AWS,这将更容易,因为他们已经有一些工具可用于动态扩展输入/输出节点。但话虽如此,我只是将Camunda用作嵌入式引擎应用程序。