返回介绍

8.8. 流程启动认证

发布于 2023-09-17 23:40:35 字数 1828 浏览 0 评论 0 收藏 0

默认情况下,任何人都可以启动已部署流程定义的新流程实例。可以使用流程启动认证功能定义用户与组,让Web客户端可以选择性的限制能够启动新流程实例的用户。请注意Flowable引擎不会用任何方式验证认证定义。这个功能只是为了开发人员可以简化Web客户端认证规则的实现。语法与为用户任务指派用户的语法类似:可以使用<flowable:potentialStarter>标签,将用户或组指派为流程的潜在启动者。这里有一个例子:

<process>
  <extensionElements>
  <flowable:potentialStarter>
     <resourceAssignmentExpression>
     <formalExpression>group2, group(group3), user(user3)</formalExpression>
     </resourceAssignmentExpression>
  </flowable:potentialStarter>
  </extensionElements>

  <startEvent/>
  ...

在上面的XML中,user(user3)直接引用用户user3,而group(group3)引用组group3。不显式标明的话,默认为组。也可以使用<process>标签提供的<flowable:candidateStarterUsers>与<flowable:candidateStarterGroups>的属性。这里有一个例子:

<process flowable:candidateStarterUsers="user1, user2"
  flowable:candidateStarterGroups="group1">
  ...

这些属性可以同时使用。

在流程启动认证定义后,开发者可以使用下列方法获取该认证定义。 这段代码获取可以由给定用户启动的流程定义列表:

processDefinitions = repositoryService.createProcessDefinitionQuery().startableByUser("userxxx").list();

也可以获取给定流程定义中,所有定义为潜在启动者的身份关联

identityLinks = repositoryService.getIdentityLinksForProcessDefinition("processDefinitionId");

下面的例子展示了如何获取能够启动给定流程的用户列表:

List<User> authorizedUsers = identityService().createUserQuery()
  .potentialStarter("processDefinitionId")
  .list();

用完全相同的方法,可以获取配置为给定流程定义的潜在启动者的组列表:

List<Group> authorizedGroups = identityService().createGroupQuery()
  .potentialStarter("processDefinitionId")
  .list();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文