IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

业务流程编排中的授权和人员解析,第 1 部分: 了解人员解析的概念和组件

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 中级

Kurt Lind (klind@de.ibm.com), 顾问软件工程师, IBM 

2008 年 1 月 28 日

Journal icon 本文介绍 IBM® WebSphere® Process Server 中业务流程编排的概念和体系结构,特别是在人员解析方面所涉及的组件。讨论 Business Flow Manager、Human Task Manager、授权管理、人员支持服务、人员解析插件和人员存储库之间的交互,以及它们在人员解析中的角色。

来自 IBM WebSphere Developer Technical Journal.

引言

Human Task Manager 是一个 IBM WebSphere Process Server 组件,它支持人与 Web 服务和业务流程之间的交互。一个人可以使用发起任务来调用 Web 服务,使用参与任务充当 Web 服务本身,并通过调用或使用纯人工任务与他人协作。通过与 Business Flow Manager 结合,Human Task Manager 为执行涉及人工的业务流程提供了强有力的支持。这两个组件共同构成了业务流程编排。

业务流程编排的主要功能之一是能够为业务流程和人工任务提供基于实例的授权,从而使您能够对一些复杂的授权规则建模,如在审核或审批流程中的四眼原则。基于实例的授权依赖于将要执行的人员解析,执行该解析可以将人员分配到各种角色中,以便用于以后的授权检查。

本文介绍了有关业务流程编排授权和人员解析的概念,描述了人员解析中所涉及的 Human Task Manager 组件的体系结构。同时还解释了诸如业务流程引擎、人工任务引擎、授权管理,以及人员支持服务等组件之间的交互。

本文假定您熟悉以下白皮书中所述的业务流程编排概念和体系结构:WebSphere Process Server V6 -- Business Process Choreographer:Concepts and Architecture





回页首


体系结构概述

图 1 显示了对业务流程编排体系结构的概述,该体系结构包括两大组件:

  1. Business Flow Manager,用于导航业务流程。
  2. Human Task Manager 用于协调人工交互。

这两个组件共享一套通用的基础设施子组件,并且都嵌入到 WebSphere Process Server 中,后者基于由 IBM WebSphere Application Server 提供的 J2EE™ 运行时。


图 1. 业务流程编排体系结构
图 1. 业务流程编排体系结构

Business Flow Manager 使您能够执行使用 WS-BPEL 行业标准建模的业务流程(请参阅参考资料)。Human Task Manager 可让您通过以下方式参与业务流程,即通过使用参与任务“实现”Web 服务或使用发起任务调用 Web 服务。对于纯人工任务、子任务和后续任务,还可以利用人工之间的特别协作。

若要使用业务流程和人工任务,您可以使用 IBM WebSphere Integration Developer 将它们建模为服务组件体系结构(Service Component Architecture,SCA)模块。然后将这些 SCA 模块部署到运行时,在运行时可以将它们作为流程或任务,并使用相应的流程或任务模板访问。您可以从模板创建并启动一个流程或任务实例并对其加以利用。对于参与任务和纯人工任务,您可以通过仅使用运行时 API 另外定义特别模型。

业务流程编排为业务流程和任务提供了基于实例和规则的授权,使您能够基于流程上下文或四眼原则建模复杂的授权情况:先通过 WebSphere Application Server 对员工进行身份验证,然后再由 Human Task Manager 基于其用户 ID 授予权限。请注意,身份验证和授权依赖于 WebSphere Application Server 全局安全性。业务流程编排,特别是 Human Task Manager 需要启用安全性;仅在进行测试时支持禁用全局安全性的情况。

本文重点介绍人员解析,人员解析主要用来确定用户 ID,以便能够授权用户对流程或任务执行特定的操作。当 Human Task Manager 电子邮件服务发送升级通知时,人员解析还用来解析电子邮件地址。





回页首


授权和人员解析概念

由于不同的业务案例数据可由同一流程来处理,所以涉及人工干预的业务流程往往需要非常复杂的授权来支持多个用户角色,以便让该流程能够对同一业务流程模板的每个实例使用不同的行为。仅使用 J2EE 授权功能并不足以处理像四眼原则(用于关键业务审批或审查流程)这样复杂的授权规则。

业务流程编排不但支持 J2EE 授权,还利用基于规则的授权进行了扩展,基于规则的授权考虑业务上下文数据,因此能够确保进行实例级别的授权。该授权规则使用所谓的人员谓词(也称为员工分配条件)来定义,它们就是授权规则模板。人员谓词是一些针对人工任务角色的抽象授权规则,可以在业务流程和人工任务建模期间对其参数化并将其绑定到特定的人员存储库。

业务流程编排提供了一组缺省的人员谓词,可以将其用于标准的授权规则。您可以扩展该人员谓词集,以便根据需要定义更加复杂或与您的需要更加匹配的规则。

在部署期间,将把参数化的人员谓词转换为具体的人员查询(也称为员工查询),这些人员查询特定于用来执行查询的人员存储库。而且这些人员查询用于查询那些有权在运行时执行特定操作的员工。在运行时查询人员存储库中的员工、组及其属性来评估授权规则被称为人员解析(也称为员工解析)。人员查询的结果可以是“每个人”标志、一组用户 ID 或电子邮件地址,也可以是一组人员的姓名。

人员存储库(也称为企业、人员或员工目录)是实际包含用户和组信息的数据存储。最常用的人员存储库是 LDAP 目录,该目录基于标准的轻量级目录访问协议。

当人员查询参数包含运行时所解析的上下文变量时,授权将基于流程和任务实例数据;因此,即使授权基于同一规则,确定授权的数据也会因业务流程或人工任务的每个实例而不同。上下文变量位于百分号之间,并且可以指示以下含意:

上下文变量类型示例
预定义的变量 %wf:process.starter%
流程和任务自定义属性 %htm:property.myProperty%
流程变量 %wf:variable.myVariable\myPart\myField%
流程和任务输入消息 %htm:input.\myInputField%

必须了解,只有内联人工任务有权访问该流程上下文。


图 2. 工作项
图 2. 工作项

人员查询的结果用来创建所谓的工作项(有时用来发送电子通知)。通过将用户与某个业务对象(如任务或流程实例)相关联,同时与任务(或流程)的预定义授权角色之一相关联(如读者或管理员),可以使用工作项来提供基于实例和规则的授权。每个预定义的角色都为用户对此业务实体执行一组固定操作授予权限,如声明任务或获取流程实例数据。因此,权限是通过将人员与业务对象上的角色相关联来授予的。

有三种类型的工作项用来存储三种类型的人员查询结果:

  • 每个人工作项为每个与工作项角色(也称为分配原因)关联的(经过身份验证)用户授予权限。
  • 用户工作项为用户 ID 与该工作项一起存储的每个用户授予角色权限。
  • 工作项为整组人员授予角色权限。授权不使用用户 ID 执行,而是通过验证与用户登录上下文信息相关的组成员关系列表来执行。
业务流程编排授权与平台无关,因此,始终区分大小写。虽然可以在 Windows® 中以任何格式输入您的用户 ID,但在登录期间,如果用户 ID 未转换为存储在人员存储库中区分大小写的同一拼写,则错误键入用户 ID 会导致丢失授权。

工作项将缓存人员查询结果;由于人员查询不需要针对每个授权检查(这会给正在使用的人员存储库带来非常大的负载)执行,所以工作项可以提供巨大的性能优势。但是,缓存的信息有可能会过期。业务流程编排支持从管理控制台手动刷新工作项缓存,但也可以通过使用可刷新过期结果的人员查询结果刷新守护进程来自动刷新。如果最初的结果已经通过手动使用工作项传输功能进行了修改,则对最初结果的刷新会考虑该传输历史记录,并且不会覆盖这些手动更改。(只有用户工作项使用此方式进行刷新。基于组工作项的授权将在每次用户登录到 WebSphere Process Server 时自动刷新。)





回页首


人员解析体系结构

图 3 显示了授权和人员解析中所涉及的业务流程编排组件。


图 3. 人员解析体系结构
图 3. 人员解析体系结构

用户要么与 Business Process Choreographer Explorer 交互,要么基于 Business Process Choreographer API 与其他客户机交互。这些客户机应用程序将其请求发送给 Business Flow Manager 流程 API人工任务 API。WebSphere Application Server 安全性组件提供身份验证,Human Task Manager 使用工作项来提供基于实例和规则的授权。

关键的业务流程编排组件包括:

  • 授权管理

    授权管理是评估人员谓词(授权规则)和基于这些人员谓词执行授权的中心实例。授权管理将调用其他组件来执行人员解析查询,并基于该查询结果创建工作项。这些工作项存储在业务流程编排数据库中,因此将缓存人员解析结果。当客户机调用 Business Flow Manager 或 Human Task Manager API 时,授权管理将检查所存储的工作项,以查找与该调用用户匹配的授权。

    每当人员解析需要解析用户 ID 或电子邮件地址时,授权管理都将协调其他组件,如人员支持服务和人员查询结果后处理器插件。

  • 电子邮件服务

    每当发生升级时,将对升级建模并通过电子邮件发送给所有升级接收方,这时电子邮件服务将负责创建和发送电子邮件。在此情况下,将调用授权管理来解析升级接收方的电子邮件地址及其用户 ID,以便针对升级和任务授予他们权限。

  • 刷新守护进程

    每个组织都在不断地变化,所以人员解析结果可能会过期,需要在工作项缓存中进行刷新。人员查询结果刷新守护进程(也称为员工分配刷新守护进程)负责刷新那些已过期的人员查询结果。

    当刷新守护进程发现有过期的人员查询结果时,它将根据与对应工作项关联的人员谓词来调用授权管理,然后与现有的工作项一起存储刚检索过的人员查询结果。因此,一旦组织发生更改,刷新守护进程可让工作项缓存保持最新。

    请记住,当刷新工作项缓存时,将不考虑上下文变量的更改;当第一次对此人员查询执行人员解析时,刷新将基于所提供的上下文数据。另外,此刷新不取消工作项传输,这是因为传输历史记录会再次应用于刷新过的结果。

    人员查询结果刷新是通过以下两个参数控制的:

    • Timeout for staff query result 确定最后一次更新后人员查询结果保持有效的时间。当此时段过后,该查询结果可进行更新。
    • Staff query refresh schedule 控制何时运行刷新守护进程,以刷新过期的查询结果。

    请记住,您还可以使用管理控制台或 JACL 脚本 refreshStaffQuery.jacl 手动强制执行人员查询结果刷新。当用这种方法进行刷新时,将刷新您所指定的所有人员查询结果,而不仅仅是那些过期的结果。

    (刷新守护进程仅适用于 WebSphere Process Server V6.0.2 及更高版本。)

  • 人员支持服务

    人员支持服务(也称为员工分配服务)用于管理、配置和选择人员解析插件,将参数化的人员谓词转换为特定于人员解析插件的查询,并向所选定的插件委派部署和人员解析请求。

    正如前面所提到的那样,当建模业务流程或人工任务时,您可以使用抽象的人员谓词并将其参数化,以创建授权规则。人员支持服务可以将 WebSphere Integration Developer 在建模时生成的参数化人员谓词转换为特定于人员解析插件的查询,并与特定的人员存储库绑定。此转换将在部署业务流程或人工任务时使用映射 XSLT(可扩展样式表语言转换)文件来完成。

    为每个受业务流程编排支持的人员解析插件提供人员插件提供程序。人员插件提供程序(也称为员工目录提供程序)可具有多种配置。每个人员插件配置(也称为员工目录配置)都有自己的一组配置属性,这些属性可以在管理控制台中设置。可能需要自定义其中某些属性(如 LDAP 服务器设置)才能使用该插件。每个配置还有自己的 JNDI(Java™ 命名和目录接口)名和对 XSLT 转换文件的引用。

    人员支持服务使用配置 JNDI 名称来查找该配置。WebSphere Integration Developer Human Task Editor 中的人工任务建模器使用配置 JNDI 名称来选择与人工任务一起使用的人员插件配置。XSLT 转换文件用于将参数化的人员谓词转换为所选人员插件配置的插件语言和人员目录方案。

  • LDAP 和用户注册插件

    人员解析插件(也称为员工目录插件)用于查询人员存储库以解析授权规则,并检索授予特定人工任务角色的人员的用户 ID 或电子邮件地址。

    人员解析插件绑定到特定的人员存储库,如 WebSphere Application Server 用户注册表或 LDAP 目录。该插件负责部署和执行人员查询,并通过对其关联的人员存储库调用一组 API 来执行这些查询。(稍后将介绍有关人员解析插件的详细信息。)

    人员存储库并不是业务流程编排的一部分。它们由人员解析插件以只读模式访问。

  • 后处理器插件

    人员查询结果后处理器插件(也称为员工分配后处理器插件)是一个可实现的可选服务提供程序接口 (SPI),使用它可以改变由人员解析插件返回的结果。例如,如果潜在任务所有者需要负载平衡,则可以使用它从已经具有高工作负载的列表中删除用户、或者添加更多用户等等,以确保特定级别的性能与服务级别协议匹配。

    该插件可将现有的人员查询结果和上下文信息作为输入来接收,并返回更改的人员查询结果,然后用于授权。该插件甚至可以通过返回组名称(而不是原始用户集)来更改查询结果类型。

    此插件还能够将自定义的人员存储库插入 Human Task Manager 人员解析中。如果该插件忽略由该人员解析插件提供的输入,并且对自定义人员存储库执行完整的人员查询,则其本身可作为人员解析插件,因此,相对于用户注册表人员解析插件的查询功能而言,它可以为更加复杂的自定义存储库提供人员查询功能。





回页首


授权管理

当评估建模的授权规则时,Human Task Manager 授权管理将与其他组件协调,并创建存储此评估结果的工作项。当客户端调用 Business Flow Manager 或 Human Task Manager API 时,授权管理员将检查所存储的工作项,以查找该调用用户的匹配授权。当用户使用 query() API 方法之一在业务流程编排数据库视图中查询项时,结果集项的情况也是如此(请参阅参考资料)。

以下情况与授权管理有关:

  • 部署人工任务。
  • 创建或启动人工任务。
  • 调用 Human Task Manager 和 Business Flow Manager EJB API 方法。
  • 使用 query() 方法查询 Business Process Manager 数据库视图。
  • 转换工作项。
  • 电子邮件服务发送电子邮件。
  • 刷新守护进程正在运行。

工作项由授权管理员基于由人员支持服务所提供的关联用户 ID 列表并使用各自的人员解析插件来管理。人员支持服务及其插件执行人员解析,当创建或刷新工作项需要使用用户 ID 列表或组名称时,或者当电子邮件服务需要用户电子邮件地址列表时也需要它们。人员支持服务本身不执行人员解析;而是将任务委派给其中的一个人员解析插件。所选的插件将调用关联人员存储库的 API,因此,将检索用户 ID 列表、组名称或电子邮件地址。

由于授权可以特定于某个任务或流程实例,而不是任务或流程模板,所以执行某一操作的授权可依赖于任务的上下文;例如,可以将流程启动程序的管理员作为潜在所有者分配给该特定业务流程中的审批任务。





回页首


人员解析插件

当授权管理调用人员支持服务来解析人员查询时,它将选择向其委派该人员解析任务的合适插件。然后人员解析插件负责从外部人员存储库中检索人员信息。这样,各种类型的人员存储库都可以获得支持。

当部署业务流程或人工任务模块时,还将调用人员解析插件;这意味着还需要部署包含在该模块中的参数化人员谓词。当人员支持服务将参数化的人员谓词转换为特定于插件的查询语言后,将调用该插件来验证最终的人员查询语法,并通过产生可在运行时快速执行的最佳格式的查询来部署该查询。最终部署的人员查询存储在业务流程编排数据库中,并可在运行时使用。

在运行时,将使用已部署查询和已解析的上下文变量列表作为参数来调用该插件。插件将根据存储在已部署的人员查询中的说明并通过查询后端人员存储库的 API 来执行人员解析,并返回一个用户 ID 列表(调用方主要名称)、电子邮件地址或组名称。授权管理将使用该结果来创建工作项。

可将人员解析插件视为无状态;只有它们的配置信息存储在内存中。由于将以单独的线程处理每个请求,所以可以获得更好的可扩展性。

可根据特定的人员存储库类型定制人员解析插件。图 4 显示了支持的人员解析插件和人员存储库。


图 4. 支持的人员解析插件和人员存储库
图 4. 支持的人员解析插件和人员存储库

即时可用的缺省配置是带有本地操作系统用户注册表的用户注册表插件。但是,此配置无法提供 LDAP 插件使用 LDAP 目录所提供的强大查询功能,而这是在生产环境中推荐的功能。

WebSphere Member Manager 人员解析插件并不是 WebSphere Process Server 的组成部分,但随 IBM WebSphere Portal 一起提供。因此,仅在将 WebSphere Process Server 和 WebSphere Portal 一起使用时,才支持 WebSphere Member Manager 作为业务流程编排人员存储库。(请参阅参考资料。)

您应使用与您用于 WebSphere Application Server 安全性和身份验证(为用户注册表配置)的人员存储库相同的存储库进行业务流程编排授权。否则,这两个人员存储库可能无法始终同步,因此,可能会导致无法授权经过身份验证的用户访问业务对象,反之亦然。

业务流程编排中包含的人员解析插件有:

  • 用户注册人员解析插件

    此插件可让您通过对用户注册 API 执行查询来引用 WebSphere Application Server 已知的用户和组。因为每当启用 WebSphere Application Server 安全性时该用户注册表就可用,并且该插件不需要任何配置参数,所以此插件即时可用。

    该插件支持静态人员分配和上下文变量,但不支持对电子邮件地址的检索。它支持用户 ID 验证、检索组和组成员、用户搜索和组搜索,并为组成员分配工作项。

    该插件支持从用户注册表支持的各种人员存储库中检索人员信息:

    • 在安装 WebSphere Application Server 的计算机上,操作系统的用户和组管理可用作人员存储库。如果将域控制器和本地计算机都用于安全性,并且在两个位置存在同一个组,则 Windows 上的本地操作系统用户注册表将同时从该域和本地计算机中返回用户。您可以通过完全限定组名称来避免此问题;例如 mymachine\mygroup。
    • 当为此 LDAP 服务器配置了 WebSphere Application Server 安全性时,可以使用由 WebSphere Application Server 支持的任何 LDAP 目录服务器。LDAP 插件提供的查询功能高于此配置提供的功能,这是因为 LDAP 插件可直接访问 LDAP 服务器,并可以执行更加复杂的查询。如果可能,在访问 LDAP 存储库时应尽可能直接使用 LDAP 插件。
    • 实现该用户注册 SPI 的任何自定义存储库都可以用作人员存储库。但是,必须实现 UserRegistry 接口中已废弃的 getUsersForGroup() 方法,用户注册人员解析插件才能支持自定义注册表。
  • LDAP 人员解析插件

    此插件提供对存储在 LDAP 目录中的组织信息的访问,并使用 JNDI API 来访问 LDAP 目录服务器。您可以配置多个 LDAP 插件,让每个插件访问一个不同的 LDAP 目录服务器。另外,许多配置连接到同一 LDAP 服务器可提高人员总体查询效率。

    您可以使用此插件查询用户属性、检索组、评估 LDAP 组的成员、基于 LDAP 筛选器语法执行搜索,或者使用中间结果执行查询;例如,检索用户管理员的用户 ID。该插件支持静态人员分配和上下文变量,同时还支持对电子邮件地址的检索。

    LDAP 人员解析插件需要多个通过人员支持服务管理用户接口进行管理的部署参数。其中大多数配置参数用于设置 JNDI 连接,其他参数用于设置查询缺省值。

  • 系统人员解析插件

    该插件支持用户 ID、组名称和上下文变量的静态人员分配,但不支持对电子邮件地址的检索。它没有分配人员存储库,没有配置参数,因此即时可用。它没有用来查询的后端存储库,并且不支持生产环境,但对于具有人员支持的简单测试场景非常有用。

  • “每个人”人员插件配置

    “每个人”人员插件配置基于系统人员解析插件并支持所有查询,但始终返回“每个人”作为人员查询结果。它主要用于功能测试,不用于生产。使用此插件提供程序,您可以针对任何插件建模您的人员查询,并且在打开和关闭测试期间,仅通过更改任务的人员插件提供程序 JNDI 名称就可切换授权。





回页首


结束语

Human Task Manager 为业务流程和面向服务的体系结构提供了功能强大的、基于实例和业务上下文的授权。它可以基于灵活的授权规则执行人员解析查询,并可以缓存查询结果,以获得更好的授权性能。Human Task Manager 是模块化的体系结构,可以支持各种员工目录授权。

本文介绍了基于 WebSphere Process Server 业务流程编排规则和实例的授权概念,以及支持开放和灵活的人员解析的业务流程编排组件的体系结构。还介绍了业务流程编排支持的员工目录和生产环境的配置建议。





回页首


致谢

作者衷心感谢同事 Eric Van Norman 和 Gerhard Pfau,他们在准备本文的过程中给予了不少帮助。



参考资料

学习

讨论


关于作者

Author photo

Kurt Lind 曾在德国曼海姆的应用科技大学就读通信工程专业。作为 WebSphere Process Server 团队的一名成员,他负责 Human Task Manager 和业务流程编排安全体系结构的工作。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM、IBM(徽标)和 WebSphere 是 IBM Corporation 在美国和/或其他国家/地区的商标。 Java 和所有基于 Java 的商标都是 Sun Microsystems, Inc. 在美国和/或其他国家/地区的商标。 Windows 是 Microsoft Corporation 在美国和/或其他国家/地区的商标。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款