• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-5-25 23:28 | 作者: Matthias Kloppmann | 来源: IBM | 查看: 80次 | 进入软件测试论坛讨论

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

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

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

因此,在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. 审批任务接口
soa-progmodel8/fig1.jpg" width="572" twffan="done"/>

也可以将该任务的显示名、描述和文档指定为属性。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

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


图 5. 门户任务 UI 设置

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

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

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


图 6. 任务页

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


图 7. 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 标准的一个扩展(请参阅参考资料),该扩展将人工任务包含在内,以让相关人员参与到业务流程中。

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

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网