用于实现 Web 服务的 SOA 编程模型,第 8 部分: 基于人工的 Web 服务

服务组合中人员的参与是面向服务的体系结构(Service-Oriented Architecture,SOA)的一个相对较新的方面,对软件建模业务中人员如何工作和交互的方式进行了扩展。本文描述了 IBM WebSphere® Process Server 的 Human Task Manager 提供的功能及其在门户中的使用。

Matthias Kloppmann (Matthias-Kloppmann@de.ibm.com), 高级技术人员, IBM

作者照片Matthias Kloppmann 是一名高级技术人员,在位于德国 Boeblingen 的 IBM Software Group 实验室工作。他是 Business Process Choreography 的首席架构师。自从 1986 年加入 IBM 以来,Matthias 一直在从事各种项目的研究,重点是工作流和 Web 服务的体系结构。Matthias 获得了斯图加特大学 (University of Stuttgart) 计算机科学与电子工程硕士学位。



Stefan Liesche (liesche@de.ibm.com), WebSphere Portal 和 Workplace Foundation 首席架构师, IBM

作者照片Stefan Liesche 是位于德国 Boeblingen 的 IBM Development Laboratory 的高级认证 IT 架构师。他在软件开发领域有 11 年的经验。他拥有德国希尔德斯海姆大学的计算机科学硕士学位。他于 1998 年以服务小组成员的身份加入 IBM,当时主要从事复杂环境中的大型端到端电子商务解决方案的设计。Stefan 从事 IBM WebSphere Portal 方面的研究已有数年时间。在加入 WebSphere Portal 开发架构团队之前,他首先从事大型门户解决方案的构建工作。目前他是 Workplace 和 Portal Foundation 的首席架构师。



Gerhard Pfau (gpfau@de.ibm.com), 高级技术人员, IBM

作者照片Gerhard Pfau 是一名高级技术人员,同时也是 IBM Academy of Technology 的成员。他在位于德国 Boeblingen 的 IBM Development Lab 担任 Business Process Choreographer 的 Human Task Manager 组件的首席架构师。Gerhard 从 Business Process Choreographer 的初期就参与其体系结构工作。他已发表了很多篇文章,并在各种会议进行过演讲。在接触业务流程体系结构前,Gerhard 是 IBM 的 SAP J2EE Connector 的首席架构师。



Marcia Stockton (mls@us.ibm.com), 高级技术人员, IBM

作者照片Marcia L. Stockton 在北卡罗莱纳州的三角研究工业园 (Research Triangle Park) 工作,居住在加利福尼亚州,她是 IBM Software Group 的高级技术人员和 Master Inventor。她也是资深的 IEEE 成员。Marcia 是 Software Group Architecture Board 的 Programming Model Workgroup 的主管,负责推动横向集成的创新并促进跨 Lotus®、Rational®、WebSphere、DB2® 和 Tivoli® 产品的编程模型简化。她申请的 73 项美国专利涵盖的范围从网络、Web、安全、保密、多媒体、无线、普及设备到无线电频率 ID。最近她致力于为身份管理和边缘服务器分布式编程定义体系结构。她曾从事过五年网络软件开发工作,之后于 1988 加入 IBM。她于 1975 年在史瓦斯摩学院 (Swarthmore College) 获得学士学位。您可以通过 mls@us.ibm.com 与 Marcia 联系。



2006 年 6 月 22 日

面向服务的体系结构的用户界面

业务流程的完全自动化虽然非常不错,但在实际中却是不可能实现的,因为有些活动要求相关人员做出判断,或要借助人员的专业知识(例如手动处理异常情况或审批请求等),这些活动将始终由人进行。在整个业务流程中,和任何其他任务一样,人工任务是一项服务,不过是通过人员活动(而不是程序)实现的,由相关人员(而不是计算机)执行。

因此,在SOA 编程模型中,人员活动可以作为 Web 服务实现。该服务被调用时,将通知承担任务的个人进行相关工作,并将输入数据以恰当的形式传递给此人。任务完成后,将产生相应的结果,服务会返回到其调用方,并将此结果作为输出数据传递给调用方。该结果实际由相关人员得出这一事实可能对调用方完全透明。该场景采用异步调用来支持运行时间长的服务,远程过程调用(remote procedure call,RPC)样式的同步调用并不适合处理人工任务(或任何其他运行时间长的服务)。

将人工任务作为 Web 服务呈现还具有另一个优势,可以将人工实现替换为自动化步骤或自动与人工步骤的组合,而不必对业务流程剩下的部分进行重新编码。这并不是说工作人员将由软件替代或将来的计算机将会把人类当作奴隶!我只是要说明,将由人实现的活动建模为 Web 服务是一个合理的设计选择,因为其他替代方法(在业务流程编排中执行几个步骤后在需要借助人员的专业知识时直接停止,然后稍后再次重新启动流程编排,而两个断开的编排序列之间不存在任何逻辑连接)有很多明显的效率低下之处。

为了说明这一点,让我们以一个保险索赔处理流程为例。必须在流程中的某个位置审批索赔请求,才能向索赔人支付赔偿。其基本形式是这样,工作人员接收索赔信息,并确定是批准该索赔,还是拒绝或提交给理算人。在不改变总体业务流程流的前提下,可以使用服务替代该步骤,在此服务中,使用业务规则自动化例行的审批工作,而同时将较为困难的情况提交给相关人员决定。相关的专家现在不再受例行的烦琐事务困扰,可以将其特定的技能用于处理复杂案例上。这个变化同时改进了业务流程的结果和工作人员的工作满意度。

但将人工任务透明封装为 Web 服务并非总是适当的选择。考虑一下更为复杂的流程的情况,即需要两个人审批一个请求的情况(称为四眼原则或职责划分)。此类任务需要显式地表示为人工任务,而不是透明的 Web 服务,因为用于选择第二个审批人的规则必须将第一个审批人排除掉。

针对 Business Process Execution Language for Web services 的 BPEL4People 扩展提供了通过嵌入人工任务扩展业务流程所需的扩展功能。它可处理将手动任务呈现为不透明的独立 Web 服务的场景(可从 BPEL 流程或采用 Java™ 编写的程序等调用该服务)。

下面的部分将介绍人工任务的编程模型。


人工任务

人工任务组件类型实现在业务流程和任意服务编排中涉及到相关人员的人工任务。人工任务在 Human Task Manager 内运行,后者是 WebSphere Process Server 内的人工任务的一个特殊容器。

为了支持此使用场景,人工任务具有仅一个操作的简单接口。该操作具有一个输出消息、一个输出消息,以及零个或多个错误消息。例如,图 1 中显示了审批任务的接口。

图 1. 审批任务接口
审批任务接口

也可以将该任务的显示名、描述和文档指定为属性。display name 是任务的可供人阅读的名称,业务人员可以理解此名称,用于表示任务列表上的任务。例如,审批任务可以命名为 Credit Approval。description 简单总结任务的目的以及如何进行处理——例如,批准或拒绝记入贷方的请求。documentation 属性提供更为详细的信息。每个属性——display name、description 和 documentation——均可采用多种语言呈现,以支持来自多个国家的员工。

任务还对哪些人允许进行哪些操作具有访问控制。从业务的角度来看,务必确保只有正确的人员能够执行审批。例如,如果在一个公司中,所有审批人员都属于公司的 people 目录中的 approvers 组,则审批任务的潜在所有者的人员定义可以为以下所示:

图 2. 审批任务人员设置
审批任务人员设置

(注:只有在开发人员或业务流程分析人员首次定义人工任务时才会看到此屏幕,随后执行这些任务的个人无法看到此屏幕。)

可以针对任务为人员定义若干角色。潜在的 owners,可以处理此任务的合格用户。一个或多个 administrators,负责任务管理。另一组人员——除了所有者和管理员之外——可以具有读取或编辑任务数据的权限。最后,还可以指定那些授权创建任务实例的人员。

在运行时,任务的人员设置将用于通过各种方式从公司的 people 目录检索匹配的用户集,例如,通过发出轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)查询或向 WebSphere 用户注册表发送请求。

针对客户的服务水平协议(Service Level Agreement,SLA)可能要求业务流程中的各个阶段满足时间要求。如果人工任务完成得太慢,而无法满足 SLA,Human Task Manager 可以发送升级通知。每个任务都具有自己的升级设置。图 3 显示了审批任务的升级设置。

图 3. 审批任务升级设置
审批任务升级设置

可以为不同的任务状态定义升级(与计时器类似)。在达到指定持续时间之前,升级(在任务达到给定状态时启动)不会进行任何操作。如果任务按照预期的方式进行,会将升级作为多余的内容取消。如果没有进展,升级将触发之前定义的一个操作,例如,向一个或多个指定的升级接收者发送电子邮件。

图 3 的示例中,当任务就绪(即启动后)就会计划在将来某种情况下调用升级。在特定时间后,如果没有潜在所有者接收任务,将触发升级,通过电子邮件告知潜在所有者有工作等待其处理。

在一个所有者接收了审批任务后,一系列升级将被激活。如果一个已接收的任务无法及时完成,升级链将向管理链发送通知。这就让业务管理员有机会将此任务重新分配给其他人。

人工任务会在用户的个人工作列表中列出。用户只能看到其应该看到的任务,这是使用人员设置指定的(在前面进行了说明)。在具有很多用户和很多并发任务的大型应用程序中,用户需要能够根据相关标准对其任务列表进行排列。任务列表可以按照名称、优先级(仅查看具有特定优先级的任务,或首先显示高优先级任务)和业务相关性进行排序。为了方便排序和筛选,业务还可以定义任务类型和任意自定义属性(名称-值对)。

门户被广泛用于将人们连接到现代企业中的 IT 系统。员工与门户用户界面(User Interface,UI)进行交互,从而完成其工作,与同事协作,以及与客户、合作伙伴和供应商交互。通过将人工任务与门户 UI 结合使用,提供了一种有效的方式在业务流程中实现人员参与。

图 4. 任务列表 Portlet
任务列表 Portlet

在集成门户环境中,既可以访问任务列表(请参阅图 4),也可以处理各项任务。对于每个任务,都有一个门户管理员定义的任务页。用户可以直接在任务列表中单击任务导航到这些页面。

图 5. 门户任务 UI 设置
门户任务 UI 设置

仅在用户通过将给定任务的链接传递给 Portlet 处理该任务时(已接收),门户才会启动关联的任务页。它将提供引用 Portlet 的任务页。而 Portlet 将显示用于导航的链接,并使用引用来为用户检索任务相关的信息,并将结果返回给人工任务。

用户可以启动相同或不同类型的不同任务的多个任务页。当用户完成任务时,任务页将关闭,并从用户的导航窗格中自动消失。用户可以根据需要关闭并重新启动任务页。当用户会话结束时,将关闭所有任务页。

处理任务的用户还可以使用门户所提供的一组协作功能,如即时通信、用户配置文件等。例如,为了有助于进行协作,Human Task Manager 可以列出处理相关任务的其他同事。图 6 显示了说明这些功能 UI。

图 6. 任务页
任务页

任务页通常使用几种类型的 Portlet 进行填充。任务处理 Portlet 将用户连接到任务;它们接收任务输入信息并显示给用户,然后将用户输入的数据作为任务输出消息交付出去。任务处理 Portlet(请参见图 7)可以从任务接口规范(如前面图 1 中的接口示例)自动生成。

图 7. Process Portlet Development Wizard
Process Portlet Development Wizard

支持 Portlet 帮助用户收集完成任务所需的信息。它们通常不与任务直接交互,而使用协作 Portlet 功能来与其他 Portlet 交互(如任务页上的任务处理 Portlet)。


结束语

基于人工的 Web 服务提供了将人员作为服务实现透明地包含在任意面向服务的应用程序中的功能。WebSphere Process Server 中引入的人工任务可为基于人工的 Web 服务提供基础设施。这些任务以典型的人工工作流系统提供的功能为基础,其功能经过了扩展,包含了成熟的升级和通知功能,以及为人工任务指定基于 WebSphere Portal 的用户界面的功能。有关如何使用 WebSphere Portal 为 SOA 应用程序提供用户界面的信息,请参阅本系列的第 5 部分“面向服务的用户界面”(developerWorks,2005 年 8 月)。

人工任务概念已经得到了行业认可,其标准化工作正在进行之中。IBM 和 SAP 共同发表的白皮书(请参阅参考资料,以获得相关网页的链接)中提出了人工任务标准化的未来方向。该白皮书中描述了即将推出的 WS-BPEL 标准的一个扩展(请参阅参考资料),该扩展将人工任务包含在内,以让相关人员参与到业务流程中。

本文讨论的重点在于将人工任务作为业务流程和面向服务的应用程序中基于人工的服务实现的方法。不过,存在本文讨论的内容之外的更侧重于以客户为中心的使用场景,其中相关人员使用应用程序与基于人工服务和自动化服务进行交互。例如,相关人员会使用任务列表来创建和管理自动化服务或基于人工的服务。“面向服务的用户界面”一文详细说明了本文未涉及的其他场景。

参考资料

学习

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, WebSphere
ArticleID=133951
ArticleTitle=用于实现 Web 服务的 SOA 编程模型,第 8 部分: 基于人工的 Web 服务
publish-date=06222006