在一个虚拟 WebSphere Portal 和 WebSphere Process Server 环境中集成人工任务处理

使用 Unified Task List Portlet 设置用于人工任务处理的业务流程门户

基于 WebSphere® Portal Server 和 WebSphere Process Server 或 IBM® Business Process Manager 创建业务流程管理集成解决方案的组件之一是 Unified Task List portlet。本文将展示如何开始使用 Unified Task List portlet,如何手动以及通过脚本设置它。您还将了解如何在一个多区域设置虚拟门户环境中建立一个任务处理解决方案。

Franz-Josef Schneider, 认证的资深 IT 专家, IBM

Franz-Josef Schneider 的照片Franz-Josef Schneider 是位于德国的 IBM Software Services for WebSphere 团队的一名资深 IT 专家。他拥有 10 余年的将多种 WebSphere 产品应用于客户项目的经验。他主要关注的领域包括 Web 架构和实现、SOA、BPM、ESB(集成)和门户解决方案。在许多客户合作项目中,他还致力于高可用性、性能分析和优化、安全实现和审查等课题。



2012 年 10 月 17 日

简介

在一个具有人工任务的业务流程解决方案中,总是需要有一个前端,以便用户能够查找、认领和完成其任务。任务处理 前端集成有多种可能性。在选择一个解决方案时,应当考虑业务和技术要求。一个任务处理选项就是将解决方案集成到 WebSphere Portal 环境中。例如,主要门户服务器功能是内容集成、社交平台和智慧工作。通过前面提到的流程集成,可以将 WebSphere Portal Server 扩充到一个业务流程门户。

本文详尽地描述了如何使用 WebSphere Portal Server V7.0(以下简称 Portal Server)和 WebSphere Process Server V7.0(以下简称 Process Server)创建业务流程门户集成解决方案的相关概念和技术细节(参见图 1)。本文基于具体的项目体验,解决方案在一个 24x7 环境中在线提供。本文的一些关注点是特定于 Process Server 的。请注意,本文的主要部分对于 IBM Business Process Manager (BPM) 和 WebSphere Portal 集成也有效。

图 1. 集成 Portal Server 与 Process Server
集成 Portal Server 与 Process Server

就 Portal Server 环境中的任务处理实现选项而论,我们也可以选择使用 “My Tasks Portlet”、Business Space 人工任务小部件、自定义 portlet 实现,或使用 Business Process Accelerator 包扩展 Unified Task List portlet 的功能。您可以使用 Business Process Accelerator 包创建业务处理 portlet 来处理 Unified Task List 中显示的人工任务。

有关集成选项的更多详细信息,请参阅 Integrating WebSphere Portal with IBM Business Process Manager

在我们的项目中,我们评估了之前提到的集成选项,以查找最好的人工任务处理集成解决方案。对集成解决方案的要求和约束来自于业务用户和技术团队。例如,某个技术要求是通过使用脚本部署和配置完全自动化的解决方案。

Portal Server 中的完美集成和 “界面外观” 对于业务用户来说一直是一个重要主题。其主要目的是提供现有 Portal Server 环境的无缝扩展。从技术方面来看,其中一个要求是基于松耦合组件和协议来实现集成。

现有门户站点全面利用了虚拟门户,这引发了针对业务流程门户解决方案的其他需求。重要的是,人工任务是虚拟门户感知的。虚拟门户在项目环境中用于提供特定于国家的门户站点。虚拟门户感知要求任务列表解决方案必须分别针对各个用户国家环境仅显示特定于某个虚拟门户的人工任务。

图 2 显示了虚拟门户(国家)任务依赖关系。总部 (HQ) 的任务列表必须只显示为 HQ 界定的人工任务,反之亦然,德国 (DE) 的人工任务只能显示在 DE 虚拟门户中。

图 2. 虚拟门户环境中的人工任务依赖关系
虚拟门户环境中的人工任务依赖关系

IBM BPM

下一代 WebSphere Process Server 是 IBM Business Process Manager (BPM) V7.5。该产品也受 Unified Task List 支持。您可以采用本文中所描述的设置和配置来创建与 IBM BPM 的集成。

主要基于前面提到的要求,项目评估结果就是要使用 Unified Task List Version 5.0 进行业务流程集成。

本文展示如何入手使用 Unified Task List、如何通过手动任务设置 Unified Task List 以及一个自动化程序(脚本化)。您还将了解如何在虚拟门户环境中建立一个集成解决方案。


Unified Task List 入门

Integrating Process Server 是 Unified Task List 的功能之一。您还可以使用 Unified Task List 集成 WebSphere Lombardi Edition 与 IBM Business Process Manager。Unified Task List 自带的功能满足大部分常见解决方案的集成和前端要求。您还可以使用 Unified Task List 开发程序包 进一步定制和扩展 Unified Task List 功能。


本文的先决条件和范围

本文不打算 介绍 Portal Server 和 Process Server 的安装和基本设置。在独立的单元中安装 Portal Server 和 Process Server 时(这是推荐设置),需要提供一个 Cross-Cell-Single Sign On (SSO) 配置。可在 产品文档 中找到执行 Cross-Cell-SSO 配置的方法。

Unified Task List portlet 提供了针对人工任务的集成和选择。当用户通过 Unified Task List 处理(打开)一项任务时,需要提供一个页面来显示特定于任务的数据和可执行的操作(例如,批准或拒绝一项任务)。这种任务页面称为任务页定义,且包含任务处理 portlet。任务处理 portlet 是特定于人工任务的。任务页定义使用 Portal Server 的动态页面 定义。处理人工任务的另一个选项是属性代理事件,可用于 portlet 间通信。有关的更多信息,请参阅 用户界面动态页面

您可以使用 Rational® Application Developer 这样的标准 Portal Server 开发工具或使用 Web Experience Factory 来创建动态页面和任务处理 portlet。Unified Task List 包含可完成这一工作的生成器。有关创建与动态页面交互的任务处理 portlet 的更多信息,请参阅 Unified Task List 开发包文档

动态页面和任务处理 portlet 的创建和部署不在本文讨论范围之列。相关信息请参阅 Portal Server 的 产品文档使用 WebSphere 工具开发业务流程门户应用程序 一文。

在本文中,我们展示了 XMLAccess 和 wsadmin 脚本示例,不过我们没有 提供有关如何使用工具的细节。有关的更多信息,请参阅 XMLAccess (XML Configuration Interface)wsadmin


Unified Task List 设置

首先我们定义了安装和配置 Unified Task List 的活动和序列。图 3 按顺序显示了设置操作,经证实这在我们的项目中是成功的。我们会在接下来几节中详细讨论每个活动。

图 3. Unified Task List 设置操作
Unified Task List 设置操作

部署和放置 Unified Task List

一开始,下载 Unified Task List 程序包 并解压 UnifiedTaskList_V5.0.zip 文件。该文件包含 Unified Task List 文档 (UnifiedTaskList.pdf) 和 “Portal Application Archive” 文件 (unifiedtasklist.paa),这些文件可用于 Portal Solution Installer

推荐的方法是通过安装 Unified Task List 来使用 Portal Solution Installer。如果您可以在您的 Portal Server 环境中使用 Portal Solution Installer,我们建议您遵循 Unified Task List 文档 中的设置说明。

实际上,在我们的项目中,使用 Portal Solution Installer 并不是一个好的选择,因为现有的自动化部署程序已经到位了。要求使用既定的部署流程,该流程基于 wsadmin 和 XML Access。

为在自动化部署流程中集成 Unified Task List,我们使用了以下步骤:

  1. 提取 Unified Task List PAA (Portal Application Archive) 文件。使用您最喜欢的压缩工具,将 Unified Task List PAA 文件解压到临时目录中。
  2. 将解压目录中的 tpir.jar 文件复制到以下 Portal Server Profile 目录: <PortalServer_ProfileDirectory>/PortalServer/config.

    您可以在解压目录中找到 tpir.jar 文件:
    <unifiedtasklist>\unifiedtasklist\components\unifiedtasklist\shared\app\
  3. 按照以下方式重启 Portal Server:
    <PortalServer_ProfileDirectory>/ConfigEngine.sh stop-server start-server
  4. 使用 wsadmin 脚本部署和启动 Unified Task List。Unified Task List Web Archive 文件 (WAR) 位于解压的目录中:
    <unifiedtasklist>\unifiedtasklist\components\unifiedtasklist\installableApps\
     portlets\unifiedtasklist.war
  5. 您可以使用如清单 1 所示的样例 wsadmin 命令脚本来安装 WAR 文件。有关如何启动和使用 wsadmin 的其他信息,请参见 信息中心
    清单 1. 用于安装和启动 Unified Task List 应用程序的样例 wsadmin 脚本
    ##Sample wsadmin jython script to install the UTL war file
    #
    # Define UTL specific deployment parameters
    #
    # !Set/check the following parameters !
    utl_war_file="E:/1UTL/unifiedtasklist.war"
    nodeName="punk-wp7-node02"
    serverName="WebSphere_Portal"
    appName="unifiedtasklist_war"
    ############
    
    print "-> Starting Unified Task List installation."
    # Install the UTL war file
    cellName=AdminControl.getCell()
    AdminApp.install(utl_war_file, '[ -nopreCompileJSPs -distributeApp 
    -nouseMetaDataFromBinary -nodeployejb -appname '+appName+' 
    -createMBeansForResources -noreloadEnabled -nodeployws 
    -validateinstall warn -noprocessEmbeddedConfig -filepermission 
    .*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755 -noallowDispatchRemoteInclude 
    -noallowServiceRemoteInclude -asyncRequestDispatchType DISABLED 
    -nouseAutoLink -contextroot /wps/unifiedtasklist -MapModulesToServers 
    [[ WPF unifiedtasklist.war,WEB-INF/web.xml WebSphere:cell='+cellName+',
    node='+nodeName+',server='+serverName+' ]] -MapWebModToVH 
    [[ WPF unifiedtasklist.war,WEB-INF/web.xml default_host ]]]' )
    print "  - Application installed."
    
    # Save the configuration
    AdminConfig.save()
    print "  - Configuration saved - Starting application."
    
    # Start the UTL application
    # Get the WebSphere AppServer Application Manager Object
    appManager = AdminControl.queryNames('cell='+cellName+',node='+nodeName+',
    type=ApplicationManager,process='+serverName+',*')
    AdminControl.invoke(appManager, 'startApplication', appName)
    print "  - Application Unified Task List started"
    print "-> Installation done."
    ####DONE###
  6. 立即注册 Portal Server 中部署的 Unified Task List 应用程序。注册 Portal Server 中的预部署 portlet 是通过 XMLAccess 脚本完成的。

    清单 2 显示一个用于注册预部署 Unified Task List Portlet 的 XMLAccess 示例。
    清单 2. 用来在 Portal Server 中注册预部署 Unified Task List 应用程序的 XMLAccess
    <?xml version="1.0" encoding="UTF-8"?>
    <request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="PortalConfig_7.0.0.xsd" type="update" 
     create-oids="true">
    <portal action="locate">
    	<web-app action="update" predeployed="true" active="true"
    	uid="com.bowstreet.portlet.WebAppRunner2_unifiedtasklist.webmod">
    	
    		<url>file:<WP_Profile_Dir>\installedApps\<NodeName>\
             unifiedtasklist_war.ear\unifiedtasklist.war</url>
    		<context-root>/wps/unifiedtasklist</context-root>
    		<display-name>unifiedtasklist</display-name>
    
    		<servlet action="update" active="true" objectid="Unified Task List 
            Portlet" referenceid="Unified Task List Portlet.servlet" />
    
    		<portlet-app action="update" active="true" uid="Unified Task List 
             Portlet">
    			<portlet action="update" active="true" uniquename="UTL_Portlet"
    			name="Unified Task List Portlet"
    			servletref="Unified Task List Portlet.servlet">
    			</portlet>
    		</portlet-app>
    	</web-app>
    </portal>
    </request>
  7. 使用 XMLAccess 创建一个门户页面并放置 Unified Task List。

    清单 3 显示用于创建 "HumanTasks" Portal Server 页面,并在该页面上放置 Unified Task List portlet 的 XMLAccess 脚本。这只是一个示例,因为您可能会希望将该页面放到 Portal Server 页面结构中的一个更合适的位置。
    清单 3. 用于创建 Portal Server 页面并放置 Unified Task List portlet 的 XMLAccess
    <request build="wp7001CF03_001_15" type="update" version="7.0.0.1" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=
    "PortalConfig_7.0.0.xsd">
        <portal action="locate">
            <web-app action="locate" domain="rel" uid="com.bowstreet.portlet.
              WebAppRunner2_unifiedtasklist.webmod">
                <servlet action="locate" domain="rel" 
                 name="Unified Task List Portlet"/>
                <portlet-app action="locate" domain="rel" 
                 name="com.bowstreet.portlet.WebAppRunner2_unifiedtasklist" 
                 uid="com.bowstreet.portlet.WebAppRunner2_unifiedtasklist">
     <portlet action="locate" domain="rel" uniquename="UTL_Portlet" 
          objectid="utlPortletID"/>
                </portlet-app>
            </web-app>
    	
            <content-node action="locate" domain="rel" uniquename=
             "wps.content.root"/>
            <content-node action="locate" domain="rel" uniquename=
             "ibm.portal.Home"/>
            <content-node action="update" active="true" 
             allportletsallowed="true" content-parentref="ibm.portal.Home" 
             create-type="explicit" domain="rel" ordinal="300" type="page" 
             uniquename="Task">
                <supported-markup markup="html" update="set"/>
                <localedata locale="de">
                    <title>Meine Aufgaben</title>
                </localedata>
                <localedata locale="en">
                    <title>My Tasks</title>
                </localedata>
    			<component action="update" active="true" deletable="undefined" 
                 domain="rel" modifiable="undefined" ordinal="100"  
                 orientation="V" skinref="undefined" type="container" 
                 width="undefined">
                        <component action="update" active="true" 
                         deletable="undefined" domain="rel" 
                         modifiable="undefined" ordinal="100" 
                         skinref="undefined" type="control" 
                         width="undefined">
                    <portletinstance action="update" domain="rel" 
                      portletref="utlPortletID">
    		<preferences
    name="wpf_edit_defaults.com.ibm.accelerators.utl.VisibleFilters:VisibleFilters"
     update="set">
    	<!-- Define the Visible Filters for -this- Virtual Portal : 
          HQ-->
    	<value><![CDATA[
    	<FilterSettings xmlns="http://www.ibm.com/wps/utl/VisibleFiltersSchema">
    	<DefaultFilter>Headquarter_Tasks</DefaultFilter>
    	<VisibleFilters>
    <FilterID>Headquarter_Tasks</FilterID>
    <FilterID>Headquarter_ClaimedTaks</FilterID>
    <FilterID>Headquarter_UnClaimedTasks</FilterID>
    </VisibleFilters>
    </FilterSettings>]]>
    				</value>
    </preferences>
    			</portletinstance>
    		</component>
    			</component>
    		</content-node>
    	</portal>
    </request>

    在成功完成部署和放置步骤之后,就可以在 Portal Server 中使用 Unified Task List portlet 了,然后您可以执行进一步的配置。

  8. 要访问 Unified Task List,必须先登录到 Portal Server 并选择 My Tasks 页面。页面名称 “My Tasks” 是通过放置 XMLAccess 脚本设置的。如果您在浏览器中使用非英语区域设置集,页面名称会被转换成适当的语言。对于 German 区域设置,页面名称是 “Meine Aufgaben”。

    对于所有国家门户(虚拟门户),仅有一个 Unified Task List portlet 实例。这个实例被共享并放置在虚拟门户的各个页面上。

配置 Unified Task List Portlet

Tip

在使用 Unified Task List Web (Portal) 配置时,总是需要单击 Save,然后单击 Back 来提交更改。单击 Save 之后,等待浏览器完成重新加载。Save 流程不会告诉您保存已经完成。而且,不要 从 portlet 菜单中选择 Back 来返回主视图。

现在您已经部署和放置了 Unified Task List。接下来的步骤是集成和特定于环境的配置。要访问 Unified Task List 配置,请打开放置 Unified Task List 的页面,将鼠标悬停在 portlet(portlet 菜单)的右上角,并选择 Configure 打开 portlet 配置视图,如图 4 所示。

图 4. 打开 Unified Task List Portlet 的配置视图
打开 Unified Task List Portlet 的配置视图

配置任务提供程序实例

任务提供程序

任务提供程序实例是访问后端系统来检索任务的服务。在本文中,后端系统是一个 Process Server。

  1. 打开 Unified Task List 配置并单击 Task Provider Instances

    在配置 Task Provider Instance 时,必须选择一个提供程序。对于 Process Server,可以使用选项 “IBM WebSphere Process Server” 和 “IBM WebSphere Process Server 7 (Task Query Table API)”。要弄清楚使用哪个提供程序,与您的业务流程开发人员进行商洽,询问业务流程实现是否需要使用任务查询表。在我们的项目中,没有使用任务查询表,因此选择了 IBM WebSphere Process Server 提供程序,如图 5 所示。

    图 5. Task Provider Instance 配置
    Task Provider Instance 配置
  2. 为任务提供程序设置一个 Name,选择 Enabled 激活它,然后单击 Next
  3. 要配置 Process Server Task Provider Instance,需要使用 Process Server 系统中的 Human Task Manager Web Service SOAP Endpoint。

    获取 Process Server TaskContainer SOAP 端点有两种方法。

  4. “构建” SOAP 端点。在以下 URL 中替换 Process Server 系统参数,以获得正确的 SOAP 端点 URL:
    http://<WPS_HOST>:<WPS_HTTP_PORT>/HT MIF_<WPS_Node>_<WPS_Server>/sca/com/ibm/task/
     api/sca/HTMWS

    下面是一个示例:

    http://wps01.stage.mycompany.de:9082/HTMIF_WPSStageNode01_WPSStageServer01/
     sca/com/ibm/task/api/sca/HTMWS
  5. 使用 WebSphere Application Server Admin Console 导出 Human Task Manager WSDL 文件,这是推荐的方法:
    1. 在 Process Server 系统上打开 IBM Solution Console。导航到 Applications > Application Types > WebSphere enterprise applications TaskContainer_<WPS_Node>_<WPS_Server> > Publish WSDL files
    2. 打开 压缩文件 并导航到以下目录:
      TaskContainer_<WPS_Node>_<WPS_Server>.ear\h.jar\META-INF\
       wsdl\com\ibm\task\api\sca\
    3. 打开 HTMWS.wsdl 文件。SOAP 端点在文件结尾得到定义:<soap:address location="<TaskManager_SOAP_Endpoint"/>

    提示

    在使用任务提供程序 “WebSphere Process Server” 时,Web Service 调用会使用 JAX-RPC 端点。在使用任务查询表并且任务提供程序是 “IBM WebSphere Process Server 7 (Task Query Table API)” 时,会用到 JAX-WS 端点。

    如果在 Process Server 系统前面使用 Load-Balancer 或 HTTP 服务器,则必须将 <WPS_HOST><WPS_HTTP_PORT> 设置为带 Load-Balancer 值的 HTTP Server。

    从 Task Provider Instance 返回的任务由 Task Query 的 Where 子句 定义(参见图 6)。where 子句 基于 Human Task Query 语法。有关 Process Server where 子句查询的语法,可在 Process Server 信息中心 中找到。

    您完全可以输入一个自定义任务查询字符串,或使用样例子句之一。在我们的项目中,我们从一个样例子句入手,使用虚拟门户自定义属性查询对其加以扩展。

    图 6. 配置任务提供程序端点和任务查询
    配置任务提供程序端点和任务查询

    下面是一个查询子句示例,其中显示了虚拟门户 “Headquarter” 的所有 “Ready Tasks”。虚拟门户由自定义任务属性 “vp.selector.prop” 的 “hq” 加以标识。下一节会详细介绍任务自定义属性。

    (TASK.TKTID = TASK_TEMPL_DESC.TKTID) AND (TASK.STATE = TASK.STATE.STATE_READY) AND 
     (TASK.KIND = TASK.KIND.KIND_PARTICIPATING) AND (WORK_ITEM.REASON = WORK_ITEM.REASON.
     REASON_POTENTIAL_OWNER) AND TASK_CPROP1.NAME='vp.selector.prop' AND 
     TASK_CPROP1.STRING_VALUE='hq'
    • TASK_CPROP1.NAME:该参数在执行人工任务时必须是可用的。
    • TASK_CPROP1.STRING_VALUE:在查询中会检查该参数值。

任务提供程序的详细信息

在 Unified Task List 配置内,您可以定义多个任务提供程序。如果有多个后端服务器,那么可能有必要这么做。或者在我们的例子中,要求 Unified Task List 提供一个自定义菜单,其中包含任务列表显示选项 “All Tasks”、“Claimed Tasks” 和 “Ready Tasks”(未认领的任务)。

我们为每个任务状态(All、Claimed 和 Ready)定义了一个 Task Provider Instance。不同任务状态通过 Human Task 查询语句中的 “TASK.STATE” 参数进行区分。

总之,另一个项目需求是仅向用户呈现特定于虚拟门户(国家)的任务。为此,我们在人工任务级使用了一个自定义属性,名为 “vp.selector.prop”。在 WebSphere Integration Developer 中,自定义属性的定义必须在人工任务开发过程中执行。有关人工任务自定义属性的更多信息,请参阅 Selecting a human task with custom properties using WebSphere Process Server

要基于自定义属性值选择任务,请扩展 Task Provider 人工任务查询,找到仅匹配自定义属性值的任务。基于此,我们为每个现有虚拟门户创建了三个 Task Instance Provider 实例。对于本示例,只有两个虚拟门户,不过可以进一步对其进行扩展。

在 6 个 Task Provider 示例中,此结果如表 1 中所示。

表 1. 自定义属性映射任务提供程序
任务提供程序名称自定义属性值 (vp.selector.prop)
German 门户的所有任务 de
German 门户的已认领任务 de
German 门户的就绪任务 de
Headquarter 门户的所有任务 hq
Headquarter 门户的已认领任务 hq
Headquarter 门户的就绪任务 hq

定义所有任务提供程序之后,我们项目的 Unified Task List 配置将类似于图 7。

图 7. 已定义任务提供程序的列表
已定义任务提供程序的列表

使用任务筛选器来组合任务提供程序

使用筛选器,可以将来自多个 Task Provider Instance 的人工任务组合到一个菜单项上,供业务用户使用。即使只有一个 Task Provider Instance,也必须为该实例配置定义一个筛选器。

我们必须为每个 Task Provider Instance 定义一个筛选器,因此,最终我们定义了 6 个筛选器。

  1. 在 Unified Task List 配置中,选择 Filters(参见图 8)并单击 Add 定义一个新的筛选器。
  2. 为筛选器设置一个名称,并定义一个资源键。我们会稍后讨论资源键。
  3. 在下拉框中,选择 Task Instance Provider 创建一个筛选器,并单击 + 图标,将提供程序添加到筛选器配置中。然后单击 Submit 完成筛选器配置。
    图 8. 筛选器配置
    筛选器配置

    Filter 配置中现在已经有了筛选器,配置视图如图 9 所示。

    图 9. 已定义筛选器列表
    已定义筛选器列表

Unified Task List 的任务处理配置

对于任务处理连接方法,有三个选项:Dynamic Portal PageExternal URLProperty Broker Event。可以在所引用的项目中使用 Dynamic Portal Page 方法,具体使用主要根据项目团队的项目经验。这一小节主要介绍使用 Dynamic Portal Page 进行任务处理的设置。

任务处理程序

任务处理程序定义了用户在选择 Unified Task List 中的一个任务来推进工作流时会发生什么。任务处理程序确定 Unified Task List 如何连接到用户必须完成的任务。

当一名业务用户认领一项任务之后,下一步是打开并处理该任务。这意味着,必须在前端将任务数据呈现给用户,其中前端提供了执行可能的任务操作的功能。该功能由任务处理页面任务处理 portlet 提供。本文不打算 介绍如何创建任务处理页面和 portlet。

除了任务处理页面和任务处理 portlet 之外,另外还需要一个门户页面。这一额外的门户页面称为扩展节点。扩展节点页面是一个纯门户页面,必须将其作为一个扩展节点加以运用。有关该任务的详细信息,请参阅 Portal Server 产品文档 Developing a dynamic UI configuration。您需要为每个虚拟门户都定义任务处理页面和一个扩展节点。

提示

您可以将任务处理和门户页面放到门户页面站点结构的任意位置。惟一的限制是,您不能将任务处理页面放在扩展节点下面。如果这么做了,为实现 Unified Task 处理而创建的动态页面将无法 工作。

本节的重点是 Unified Task List 的任务处理配置。

每个不同的人工任务类型都需要一个独立的任务处理页面。而且对于每个任务处理页面,在 Unified Task List 中需要配置一个任务处理定义。例如,在我们的项目中,我们有五个人工任务类型,因此我们创建了五个任务处理配置,每个任务处理页面一个配置。

要配置 Unified Task List Task Handler,需要使用特定任务类型的任务处理页面的惟一名称。在 Portal Server 中创建任务页面时,需要思考一下惟一名称的命名思路。

打开 Unified Task List 配置,选择 Task Handling(参见图 10),单击 Add 打开任务处理配置。

在打开任务处理配置时,Unified Task List 会连接到已定义的 Process Server(任务提供程序实例)。也就是说,下拉框中显示的所有选项代表了 Process Server 系统上实际运行的模块。

使用任务处理配置实际上是首次测试,看任务提供程序配置和跨单元通信是否正确。

如果您没有看到任何模块,检查您的配置和 Portal Server 日志文件,看是否有任何错误消息。

除了 Unique ID of Portal Page 的文本输入字段之外,还可以从下拉框中选择其他所有参数。

图 10. 任务处理配置
任务处理配置

向应用程序和任务类型分配正确的任务处理页面,然后单击 Submit 创建任务处理程序。请记住,您必须为每个任务类型创建一个任务处理程序。

通过配置可视筛选器向用户呈现任务列表

在完成上面的所有配置之后,现在您就可以连接到 Process Server 了。您已经创建了筛选器并定义了任务处理。本节将展示如何配置呈现给业务用户的 Unified Task List 菜单项。菜单项被定义为可视筛选器

如上所述,Process Server 和 Portal 用户必须只能查看和处理特定于其国家的人工任务。该操作因用户登录所用的虚拟门户标识符的不同而不同,例如 https://myPortalHost.com/wps/myportal/dehttps://myPortalHost.com/wps/myportal/hq

要做到这一点,需要在人工任务上定义名为 “vp.selector.prop” 的自定义属性。该自定义属性在我们的任务提供程序实例中的 where 子句中被用作是筛选器标准。此外,Unified Task List 可视筛选器用于进一步筛选显示给用户的任务,并就如何将任务显示给用户进行分组。

使用可视筛选器配置,您可以定义在特定于国家的虚拟门户中显示哪些筛选器。对于使用了 Unified Task List portlet 的每个虚拟门户,可视筛选器配置可能有所不同。

根据我们的项目经验,在最终确定本地化配置之前,没有开始使用可视筛选器配置。首先,创建和更改虚拟化文件(参阅 对筛选器使用本地化),然后开始可视筛选器配置。这样一来,您就可以在可视筛选器配置中看到筛选器的本地化文本了。

要访问可视筛选器配置,请在 Unified Task List portlet 菜单中单击 Edit Shared Settings。要在共享设置中将筛选器添加到可视筛选器列表中,需要从列表中选择一个筛选器,然后单击添加图标添加它。您可以将多个筛选器添加到可视筛选器列表。在我们的例子中,我们为认领的任务、未认领的任务和所有任务添加了可视筛选器。这样一来,用户就可以在 Unified Task List 中切换选择三个视图。

有了三个定义好的可视筛选器和经过调整的资源包文件之后,Unified Task List 菜单将类似于图 11 或图 12。

图 11. German 区域设置的 Unified Task List 菜单
German 区域设置的 Unified Task List 菜单
图 12. English 区域设置的 Unified Task List 菜单
English 区域设置的 Unified Task List 菜单

在执行可视筛选器配置之后,就可以随时测试 Unified Task List 了。

对筛选器和可视筛选器使用本地化

Unified Task List 基于 Portal Server 区域设置特性提供了本地化功能。所有页面和 portlet 都会基于用户区域设置(浏览器语言和门户配置文件)翻译成用户的语言。

正如您在 使用任务筛选器组合任务提供程序 一节所看到的那样,每个筛选器都定义了一个相关的资源键。您可以使用资源包文件 来设置和翻译已定义筛选器资源键的文本。

资源包文件位于以下路径中的一个可配置目录中:

<PortalServer_Home>/shared/app/<Bundle_Directory>

“Bundle_Directory” 的名称被配置为 Portal Server Config Service Resource 环境提供程序上的一个自定义属性。可以使用以下步骤配置目录和捆绑包文件名称。

  1. 为 Portal Server 单元打开 “Integrated Solutions Console”。
  2. 转至 Resource environment providers > WP ConfigService> Custom properties
  3. 单击 New(或编辑现有属性)。
  4. Name 字段中输入 processintegration.filtersetresourcebundle
  5. 对于 Value 字段,输入捆绑包目录名称和捆绑包文件名称,比如 DirectoryName.BundleFilenamePrefix

    例如,如果捆绑包文件被存储为:

    <PortalServer_Home>/shared/app/yourCompany/WP_WPS_Bundle_xx.properties

    您可以采用下列方式输入以下包名称:yourCompany.WP_WPS_Bundle

  6. 单击 ApplyOK

    捆绑包文件被命名为 BundleFilenamePrefix_<Locale>.properties。如果未找到针对用户区域设置的捆绑包文件,则使用默认的本地化文件 BundleFilenamePrefix.properties

    您可以编辑现有的本地化文件,或者添加另外的本地化文件到目录来满足语言要求。在一个具有多个节点的集群化 WebSphere ND 环境中,您需要将捆绑包文件分发给所有 Portal 节点。

    您还可以使用文本编辑器来创建资源包文件,并将该文件放在共享文件系统上的某个响应文件目录结构中。


使用脚本程序配置 Unified Task List

在实际的项目中,我们总是建议编写脚本来自动化所有设置和配置步骤。通过脚本化配置,您可以最大限度地减少手动操作导致的问题,提供一个快速、可靠和可重复的设置过程。

在前面几节中,我们使用了 Unified Task List Web 界面来执行配置。使用该方法建立包含若干阶段的项目环境(比如开发、试生产和生产系统)需要较大的工作量,并且容易出错。

要自动化 Unified Task List 配置,您可以基于一些配置脚本来建立一个程序。脚本主要基于 Portal Server XML Configuration Interface,即 XMLAccess。

正如您在手动配置期间所看到的,Unified Task List 有两个配置部分:

  • 面向所有虚拟门户的常见配置(比如任务提供程序实例、筛选器、任务处理和本地化)。
  • 特定于虚拟门户的共享配置(可视筛选器)。

常见配置

常见的 Unified Task List 配置在 portlet 级别上被保存为首选项数据。要查看配置,请在 Portal Server 的 Manage Portlets 中打开 Configure Portlet(参见图 13),以管理 Unified Task List portlet。

图 13. 打开 Unified Task List 配置
打开 Unified Task List 配置

图 14 显示一个样例配置首选项和值。您可以看到,首选项名称与我们在 Web 界面配置中配置的 Unified Task List 选项是匹配的。

图 14. Unified Task List Portlet 首选项页面
Unified Task List Portlet 首选项页面

Value 字段中的设置表示为字符串,这里我们无意更改它们,也不容易这么做。要编辑和更改 portlet 配置,一个好的方法是将数据导出为一个 XML 文件。这可以在 Portal administration 中或使用 XMLAccess 来完成。

要使用 XMLAccess 导出所需的配置,必须导出 Unified Task List Web Module。可以使用清单 4 中所示的脚本完成此操作。

清单 4. 用于导出 Unified Task List 配置的 XMLAccess
<?xml version="1.0" encoding="UTF-8"?>
<request build="wp7001CF03_001_15" type="export" version="7.0.0.1" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="PortalConfig_7.0.0.xsd">
    <portal action="locate">
        <web-app action="export" domain="rel" uid="com.bowstreet.portlet.
         WebAppRunner2_unifiedtasklist.webmod">
        </web-app>
</portal>
</request>

生成的 XMLAccess XML 文件包含所有常见数据,您可以对其进行调整,以便将它用于另一个环境。XML 文件太全面、太庞大,无法在这里显示。您可以在本文的 下载 部分找到样例文件。

您可以使用导出的 Unified Task List XML 文件将配置导入另一个环境中。例如,如果您成功地在试生产环境中测试了配置,那么可以使用这个 XMLAccess XML 文件在生产环境中也建立一个 Unified Task List。事实上,您至少需要更改 Process Server 连接数据,将任务提供程序的目标设定为生产 Process Server 系统。为此,您必须更改所有 <ID>SoapEndpoint</ID> 条目,然后使用 XMLAccess 将配置导入 Portal Server。

而且,这样做能够取得成功的先决条件是,您成功地为目标环境完成了 部署和放置 Unified Task List 部分描述的步骤。如果您对资源包文件进行了更改,请记得将这些文件转移到另一个系统。

脚本化共享配置

可视筛选器的特定于虚拟门户的配置是在 portlet 实例级别上进行定义的。您可以使用 XMLAccess 脚本设置这一数据。清单 5 显示特定虚拟门户 (Germany: de) 的可视筛选器配置。

清单 5. 设置用于可视筛选器的共享配置的 XMLAccess
<request build="wp7001CF03_001_15" type="update" version="7.0.0.1" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="PortalConfig_7.0.0.xsd">
<portal action="locate">
	<web-app action="locate" domain="rel" uid="com.bowstreet.portlet.
     WebAppRunner2_unifiedtasklist.webmod">
            <servlet action="locate" domain="rel" 
             name="Unified Task List Portlet"/>
            <portlet-app action="locate" domain="rel" 
             name="com.bowstreet.portlet.WebAppRunner2_unifiedtasklist"
			uid="com.bowstreet.portlet.WebAppRunner2_unifiedtasklist">
<portlet action="locate" domain="rel" name="Unified Task List Portlet"
 objectid="utlPortletID"/>
            </portlet-app>
        </web-app>
	
        <content-node action="update" active="true" allportletsallowed="true" 
         content-parentref="ibm.portal.Home"
	create-type="explicit" domain="rel" ordinal="300" type="page" 
      uniquename="Task">
<component action="update" active="true" deletable="undefined" 
    domain="rel" modifiable="undefined" ordinal="100" orientation="V" 
    skinref="undefined" type="container" width="undefined">
<component action="update" active="true" deletable="undefined" 
  domain="rel" modifiable="undefined" ordinal="100" skinref="undefined" 
   type="control" width="undefined">
    <portletinstance action="update" domain="rel"  
     portletref="utlPortletID">
<preferences	name="wpf_edit_defaults.com.ibm.accelerators.utl.
 VisibleFilters:VisibleFilters" update="set">
							
<!-- Define the Visible Filters for Virtual Portal : DE-->
<value><![CDATA[
<FilterSettings xmlns="http://www.ibm.com/wps/utl/VisibleFiltersSchema">	
<DefaultFilter>Germany_Tasks</DefaultFilter>
      <VisibleFilters>
<FilterID>Germany_AllTasks</FilterID>						
<FilterID>Germany_ClaimedTasks</FilterID>
		<FilterID>Germany_UnclaimedTasks</FilterID>
	</VisibleFilters>
</FilterSettings>]]>
</value>
                      </preferences>
                    </portletinstance>
                    </component>
            </component>
        </content-node>
    </portal>
</request>

提示

要对虚拟门户运行 XMLAccess 脚本,需要将虚拟门户上下文根路径作为 “-url” 连接命令行参数的值进行添加: http://<WP_HOST>:<<WP_SERVER_HTTP_PORT>/<PortalContext_ROOT>/config/<VP-ContextRoot>

使用本文提供的 样例脚本,您不需要手动配置 Unified Task List,只需运行 XMLAccess,将常见的共享配置导入一个 Portal Server 环境。这最大限度地减少了手动工作,确保在不同环境中具有相同的配置。


故障排除提示

如果环境满足了所有先决条件,而且您遵循了本文中的步骤,那么 Unified Task List portlet 应当 显示可用的任务。

如果没有显示这些任务,那么需要检查以下几个方面:

  • SSO 真的有效吗?
    参见 技术札记,了解如何验证 SSO。
  • Portal 用户在 Process Server 上是否真的有任务?
    例如,您可以使用 Process Server 站点上的 “Business Process Explorer” (BPC Explorer) 核实这一点。
    1. 确保将用户指定为任务的潜在所有者。
    2. 以用户身份登录到 BPC Exporer 并单击 My To-dos
  • 如果设置正确,并且用户有任务,那么跟踪有助于进一步分析情况。
    要了解 Unified Task List 中的具体状况,请在 Portal Server 上启用以下跟踪字符串:com.ibm.accelerators.utl.*=all。此外,要查看有关 Process Server 站点的更多详细信息,请启用以下跟踪细节:
    com.ibm.bpe.*=all: com.ibm.task.*=all:com.ibm.ws.security.
     *=all:com.ibm.ws.staffsupport.*=all

跟踪数据分析起来会很复杂,但是该数据可就 Unfied Task List 不显示预期任务的原因给出一些线索。


结束语

Unified Task List 是将 WebSphere Portal Server 环境扩展到业务流程门户的一种方法。本文使用选自真实客户项目的示例展示了设置和运行 Unified Task List 的顺序和详细操作。基于此,我们了解了如何在一个虚拟门户环境中进行集成,以及如何使用脚本完成配置。


致谢

作者非常感谢 Paul ThomasDavid Rockett 对本文的技术评审。另外,感谢 Thomas Reske 在本文编撰过程中给予的支持和指导。


下载

描述名字大小
代码样例文件UTL-Scripts.zip9KB

参考资料

学习

获得产品和技术

讨论

条评论

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=WebSphere
ArticleID=840826
ArticleTitle=在一个虚拟 WebSphere Portal 和 WebSphere Process Server 环境中集成人工任务处理
publish-date=10172012