Flowable入门系列文章65 - 流程启动授权

Posted 分享牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章65 - 流程启动授权相关的知识,希望对你有一定的参考价值。

默认情况下,允许所有人启动已部署流程定义的新流程实例。流程启动授权功能允许您定义用户和组,以便Web客户端可以选择限制可以启动新流程实例的用户。注意授权定义不以任何方式由Flowable引擎验证。此功能仅适用于开发人员在Web客户端中简化授权规则的实施。语法与用户任务的用户分配语法相似。可以使用<flowable:potentialStarter>标签将用户或组指定为流程的潜在发起人。这里是一个例子:

<process id="potentialStarter">
<extensionElements>
<flowable:potentialStarter>
<resourceAssignmentExpression>
<formalExpression>group2, group(group3), user(user3)</formalExpression>
</resourceAssignmentExpression>
</flowable:potentialStarter>
</extensionElements>
<startEvent id="theStart"/>
...

在上面的XML摘录中,用户(user3)直接指用户user3,而group(group3)指group3。没有指示器将默认为组类型。也可以使用标签的属性,即<flowable:candidateStarterUsers>和<flowable:candidateStarterGroups>。这里是一个例子:

<process id="potentialStarter" 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()

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:

以上是关于Flowable入门系列文章65 - 流程启动授权的主要内容,如果未能解决你的问题,请参考以下文章

Flowable入门系列文章59 - 事件子流程

Flowable入门系列文章21 - 基本的Flowable概念二

Flowable入门系列文章29 - Activity解读 05

Flowable入门系列文章3-部署流程定义

Flowable入门系列文章68 - 表单属性

Flowable入门系列文章30 - Activity解读 06