使用团队服务来定义动态团队

可以使用团队检索服务和团队过滤服务来动态确定谁有资格执行活动。团队检索服务或团队过滤服务可以是服务流或传统集成服务。 可以使用返回团队成员列表和管理者团队名称的团队检索服务,以代替使用静态定义的团队。可以使用团队过滤服务,以使特定成员不执行关联活动。例如,可以实现职责分离策略或除去不可用的成员。为了提高性能,这些服务或服务流可以使用结果高速缓存。

团队结构

每个团队都有一个名称、成员(用户或组)列表和(可选)管理者团队名称。 只有经理可执行管理操作,但经理也可以是可执行活动的团队成员。团队可直接与活动关联,或作为缺省团队分配给通道。 由于任何团队都可分配为另一个团队的经理,因此可以定义团队以反映贵组织的管理结构。

当团队由团队检索服务动态解析或由团队过滤服务过滤时,服务或服务流必须返回 Team 对象。返回的 Team 对象包含成员字段和可选字段中团队成员的列表;name 用于团队的名称(被忽略),而 managerTeam 用于管理者团队的名称。

团队检索服务

您可以使用固定成员和固定经理来创建其成员和经理由团队检索服务动态解析的团队,以代替定义静态团队。 团队检索服务将团队名称接收为字符串参数,并将解析的团队返回为 Team 对象。如果需要,可以添加解析团队所需的额外输入参数。

当将活动分配给由使用额外参数的团队检索服务定义的团队时,必须定义映射到每个额外输入参数的环境变量或字面值。如果希望团队用作另一个团队的管理者,那么只能使用已为其定义了缺省值的其他输入参数。

团队过滤服务

有时您不希望将整个团队分配给某个任务,而是分配团队的一部分。 可以创建团队过滤服务以实施分配策略。团队过滤服务将最初解析的团队作为参数,并且必须将过滤的团队返回为 Team 对象。如果需要,可以添加过滤团队所需的额外输入参数。

例如,要实施职责分离策略,可能需要从可执行下一个活动的用户列表中除去执行了前一个活动的用户。 在这种情况下,过滤服务需要将从输入团队中除去的用户标识的输入参数。

例如,如果超过特定阈值的保险索赔只能由特定团队成员处理,那么可创建名为高额索赔价值团队过滤器的过滤器,它使用输入参数索赔价值来过滤掉没有资格处理高价值索赔的任何用户。

有关更多示例,请参阅 developerWorks 文章 Teams in Business Process Manager V8.5, Part 2: Developing services for dynamic team resolution

高速缓存团队服务结果

如果合适的话,可为任何团队检索服务或团队过滤服务启用结果高速缓存。在启用之后,将为输入参数值的唯一组合高速缓存顶级服务或服务流的结果,以提高性能。缺省情况下,结果会在 12 小时后刷新,但该值可以更改。缺省情况下,高速缓存最多存储 4096 个结果。通过包含 100Custom.xml 文件中 <server merge="mergeChildren"> 节的 <service-result-cache-size> 的值,可以更改高速缓存的大小。 如果调用服务或服务流并且高速缓存的结果数超出了定义的高速缓存大小,将除去最近使用最少的结果,以便为新结果腾出空间。

限制: 结果高速缓存设置仅对顶级服务或服务流有效。当服务被另一个服务调用时,会忽略嵌套服务的结果高速缓存设置,并且不会高速缓存嵌套服务或链接服务流的结果。