自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx

上传人:b****6 文档编号:5024968 上传时间:2022-12-12 格式:DOCX 页数:16 大小:139.44KB
下载 相关 举报
自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx_第1页
第1页 / 共16页
自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx_第2页
第2页 / 共16页
自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx_第3页
第3页 / 共16页
自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx_第4页
第4页 / 共16页
自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx

《自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx》由会员分享,可在线阅读,更多相关《自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx(16页珍藏版)》请在冰豆网上搜索。

自定义用于由 WebSphere 提供支持的业务空间的 HTMLDojo 表单.docx

自定义用于由WebSphere提供支持的业务空间的HTMLDojo表单

2009年1月14日

IBM®WebSphere®ProcessServerV6.1.2具有一个称为“由WebSphere提供支持的业务空间”的新组件,此组件弥补了Web2.0和以人为中心的业务流程管理(businessprocessmanagement,BPM)之间的差距。

使用业务空间,您可以通过使用多个小部件在单个Web前端中联合WebSphereProcessServer、WebSphereBusinessMonitor和其他产品的功能,从而创建Web2.0应用程序。

要在业务空间中显示人工任务,您可以在WebSphereIntegrationDeveloper中生成用户界面,从而产生HTML-Dojo表单,该表单可能不会马上就适合您的需要。

本文描述如何在调整业务集成解决方案时自定义HTML-Dojo表单,并用简短的示例演示常见的修改。

来自IBMWebSphereDeveloperTechnicalJournal。

引言

通过业务空间,用户可以使用需要人工交互的业务流程,这些人工交互被建模为人工任务。

对于每个任务,人工任务编辑器中的客户端设置将引用某个用户界面。

该用户界面将显示出来,以便用户能够与每个任务交互。

IBMLotus®Forms和HTML-Dojo表单均受支持,但是就本文的范围而言,我们将把重点放在HTML-Dojo表单上。

要了解这个用于人工任务的用户界面如何工作,它能够帮助您理解人工任务的一些方面。

人工任务向运行时环境公开一个由输入和输出消息组成的界面。

在业务空间中,可以通过三种模式显示人工任务。

在第一种模式(本文将其称为发起)中,用户希望通过人工任务启动某个流程,并通过输入初始数据然后提交数据来实现这一点。

要处理某人已经开始处理的人工任务,用户将在第二种模式下工作,本文将该模式称为编辑模式。

此人工任务可能已经分配给该用户,或者该用户可能已申领了此任务。

业务用户必须读取输入消息,然后输入正确的输出消息。

当用户希望查看某个人工任务的状态或已完成的另一个人工任务的结果时,他或她将在第三种模式中工作,本文将其称为查看模式。

在查看模式下,用户不输入信息;他或她仅读取输入消息和输出消息。

下面我们将阐述每种操作模式下的不同可视化需求。

在发起模式下,用户仅在输入消息中输入所需的信息。

在此模式下,用户无法在输出消息中查看或输入数据。

在编辑模式下,用户可以同时查看输入和输出消息。

但是在此模式下,用户不能更改输入消息所交付的信息。

在查看模式下,用户查看每种类型的消息的信息,但是不能改动该信息。

输入字段在缺省情况下是锁定的。

下图对不同的模式进行了总结。

图1.发起、编辑和查看模式总结

人工任务的输入和输出可以具有相同的消息类型。

例如,用户可能希望审阅输入数据,将审阅并且可能更改后的数据复制到审阅流程的输出表单中。

在此情况下,将以更方便于用户使用HTML-Dojo表单的方式处理消息。

通过预填充可以省去将所有输入数据复制到输出表单所需的时间和精力。

查看模式也是如此;业务用户只需输入与发起任务时相同的数据。

区别在于编辑模式。

用户认为自己是在任务的发起者使用的相同表单中工作,因为用户界面看起来相同,并且已经包含用户将要更新的数据。

为了实现此用户界面,将不显示任何单独的输入和输出消息。

相反,输入表单将隐藏,其数据将用于预填充输出表单。

下图总结了在人工任务具有相同的输入和输出消息时如何显示用户界面。

图2.总结在人工任务具有相同的输入和输出消息时如何显示用户界面

先决条件

要使用业务空间,您需要安装:

∙WebSphereIntegrationDeveloperV6.1.2

∙WebSphereProcessServerV6.1.2

回页首

了解生成的HTML

正如我们在前面描述的,每个人工任务包括输入和输出消息,HTML表单也必须反映这些消息。

因此,生成的HTML页面包含一个用于输入消息的部分,以及另一个用于输出消息的部分。

这些消息部分从Dojo小部件编译而来,那些Dojo小部件用于显示用户与之交互的输入元素。

两个部分都包装在元素中。

此外,WebSphereIntegrationDeveloper中生成的HTML页面包含围绕表单的

元素,以及级联样式表(cascadingstylesheet,CSS)定义。

下图描绘了所生成的HTML-Dojo表单:

图3.生成的HTML-Dojo表单

由于所有生成的页面使用相同的CSS类,除非使用带自定义CSS类的额外

元素,否则一个文件中的更改将影响业务空间中的所有HTML页面。

使用额外的

元素,您可以指定仅处理该范围中的元素的CSS选择器。

业务空间向元素分配不同的CSS样式,具体取决于表单的显示模式(发起、编辑或查看);因此,一定不能删除元素。

类名称是模式名称init、edit和view。

使用元素,可以对消息的显示方式进行控制。

下面的代码示例显示了三个CSS定义:

清单1.三个CSS定义

.http_//myNameSpace.initdiv.businessObject{

visibility:

collapse;

display:

none;

}

.http_//myNameSpace.editdiv.businessObject{

}

.http_//myNameSpace.viewdiv.businessObject{

color:

gray;

}

每个定义的第一行包括三个选择器,这些选择器减少了受影响的元素的数量。

第一个选择器.http_//myNameSpace是围绕

元素的类,此选择器将选择缩小到包括在该
元素中的元素,因此排除了业务空间中不属于此HTML表单一部分的所有元素。

第二个选择器.init、.edit或.view指定此CSS定义在其中有效的操作模式。

第三个选择器div.businessObject是表单中包括的一个

元素的示例类,该元素具有类businessObject。

此选择器可以是表单中您希望为其定义CSS的任何其他元素。

这些选择器在业务空间中以不同的方式定义样式。

如果节点具有类init,则具有类businessObject的

元素将不可见。

如果在编辑模式下显示,则表单具有类edit,因此将显示该元素。

在查看模式下,具有类view,

元素将可见,尽管文本将是灰色的。

要了解的下一个重要概念是如何在消息字段的基础上构造消息。

下面的文本是所生成的Dojo小部件定义示例的大致情况:

清单2.表明生成的Dojo小部件定义示例的大致情况的文本

dojoType="dijit.form.ValidationTextBox"regExp=".*"

id="http_//myNameSpace"sdoMessageType="output"

sdoPrepopulation="/input1/foo/bar"required="true"

class="fieldInput"/>

除了典型的HTML-Dojo属性外,此小部件定义还包含自定义属性,每个自定义属性在业务空间中具有各自的语义。

下表包含这些属性及其用法的摘要。

表1.属性及其用法摘要

属性

语义

name

name属性将元素绑定到输入消息的某个元素。

该绑定将在类似于Xpath的语句中指定,该语句引用此输入字段所表示的特定消息部分。

注意:

如果更改这些语句,在表单基础上创建消息时将会发生运行时错误。

sdoMessageType

sdoMessageType属性指定该小部件是属于输入还是输出消息。

此属性是根据当前模式启用或禁用表单元素所必需的。

其值可以是input或output。

required

required属性指定该小部件是否包含必填字段。

如果将required属性设置为true,则用户在输入有效数据之前将无法提交表单。

sdoPrepopulation

sdoPrepopulation属性指定使用输入消息的值预填充小部件的值,从而省去用户将每个值从输入表单复制到输出表单的工作。

如果人工任务的输入和输出使用完全相同的消息类型,则会自动将消息内容生成到HTML表单中。

您只能对属于输出消息的小部件使用sdoPrepopulation属性,然后只能在用户处于编辑模式时使用此属性。

该绑定被指定为类似于XPath的语句。

回页首

了解加载过程

当用户使用人工任务时,业务空间将加载在人工任务的客户端设置中指定的HTML-Dojo表单。

加载该页面后,将对原始HTML代码进行预处理,其中包括设置节点的类属性以及其他操作。

取决于页面的显示模式,该值将设置为init、edit或view。

然后将准备好的HTML代码添加到DOM树,从而触发Dojo解析器呈现页面的新片段。

然后,如果是在编辑或查看模式下打开页面,则业务空间将加载输入和输出消息。

如果消息不为空,则将内容添加到页面上的Dojo小部件。

请注意,输入和输出的Dojo小部件将根据HTML页面的显示模式被启用或禁用。

但是,如果业务用户刚申领了某个任务,则他不可能已经为输出消息输入了任何数据。

在此情况下,业务空间将接收到空消息,并将输入消息中的值复制到Dojo小部件,同时将匹配值放在sdoPrepopulation属性中。

下面我们将介绍一个示例场景,稍后我们将使用此场景来演示HTML表单的典型自定义。

回页首

示例场景

假设您希望修改用于审批传入资金转帐的人工任务的用户界面。

图4显示了此人工任务中的approveTransfer操作。

图4.人工任务的approveTransfer操作

图5显示了三个业务对象:

ApprovalRequest、BankTransferInformation和Remark。

BankTransferInformation是ApprovalRequest业务对象的子业务对象,其中包含描述转帐详细信息的字段(例如是谁转出的,以及谁是受益人)和元数据(例如接收时间和电话号码以及电子邮件地址)。

PhoneNumber字段或EmailAddress字段存储联系人详细信息,具体取决于请求的接收方式。

带Remark类型的子业务对象的附加数组存储处理该转帐的员工的意见。

图5.ApprovalRequest、BankTransferInformation和Remark业务对象

常见用法

大多数自定义都不需要关于业务空间的特殊知识,只需具备Web开发经验即可,因此我们将把重点放在某些可能由于业务空间处理HTML页面的方式而引起的问题上。

只要将更改限制到body标记或CSS定义之间的内容,大多数在典型HTML页面中有效的自定义也将在业务空间中有效。

这些标记之外的所有其他更改将被忽略。

最典型的自定义是重命名输入元素标签,因为那些名称最初是从业务对象派生而来的,因此可能不是您希望向业务用户公开的名称。

通过使用文本或HTML编辑器编辑HTML文件并更改label标签之间的值,您可以重命名输入元素标签。

此外,通过img标记并使用绝对或相对URL来引用文件,您还可以包括图像。

使用相对URL将使开发HTML页面变得更加容易,因为您可以在WebSphereIntegrationDeveloper中测试页面。

此外,您可以将样式表外部化,当所有人工任务表单应该具有共同的外观时,这是非常有用的。

与更改每个文件中的CSS不同,您可以从页面中删除现有的CSS,将该CSS替换为如下引用公共样式表style.css的import语句:

@import"style.css";

下面的示例说明了如何处理自定义,在典型的HTML表单中,您将以不同的方式处理这些自定义。

示例1:

删除或隐藏字段

假设您希望从生成的HTML表单中删除EmailAddress字段,因为对于通过电话接收的转帐,银行希望将此字段保留为空。

在典型的HTML表单中,您将从生成的HTML中删除EmailAddress字段,无论是直接从源代码中将其删除,还是通过使用某个可视化工具,例如WebSphereIntegrationDeveloper包括的PageDesigner。

业务对象中的对应字段将自动设置为空。

但是,当某个输入字段是必需的,或者由于该字段是必需的而应该设置为缺省值时,您不应该删除该字段。

相反,您必须隐藏特定的字段类型,并设置其value属性。

由于除type、name和value以外的属性仅在显示字段时使用,因此所需的HTML标记非常短:

value="noaddressprovided"/>

在此例中,尽管提交了值“noaddressprovided”,但是EmailAddress字段未显示出来。

示例2:

预填充

假设您希望将预填充的字段手动改进后再填充到生成的HTML表单中。

缺省情况下,当界面包含的输入和输出的业务对象类型相同时,将启用预填充。

在其他情况下,例如当输入为输出的子业务对象时,则不会触发预填充。

因此,您必须手动添加预填充。

ApproveTransfer界面就是这样一种情况。

BankTransferInformation输入业务对象是ApprovalRequest输出业务对象的子业务对象(请参见图5)。

因此,通过按照下面的段落中描述的步骤操作,您可以使用输入业务对象中的值预填充此子业务对象的所有字段。

正如前面提到过的,标记的sdoPrepopulation属性确定应该使用输入消息的哪个部分来初始化字段的值。

在此例中,您希望使用输入消息中的对应值填充BankTransferInformation子业务对象的Amount字段。

要实现这一点,可以通过搜索XPath表达式/output/Transfer/Amount,从而查找您想要的字段的标记。

然后,将sdoPrepopulation属性更改为指向输入消息的正确部分的XPath。

在此例中,该值为/input/Amount。

更新后的HTML部分类似如下:

清单3.更新后的HTML

dojoType="dijit.form.ValidationTextBox"regExp="\d*([.|,]\d*)?

"

sdoMessageType="output"required="true"class="fieldInput"

sdoPrepopulation="/input/Amount"/>

如果不确定正确的XPath,可以在生成的HTML文件的输入部分中进行查找。

该部分包含输入业务对象的每个字段的元素,这些元素使用正确的XPath语句作为其name属性的值。

示例3:

更改输入字段的顺序

所生成的页面上的输入字段的顺序取决于在业务对象定义中定义对应字段的顺序。

由于这些字段通常是任意排序的,没有考虑到适用性,您可能希望对输入字段重新排序,以更好地适应用户的需要。

正如前面提到的,您可以通过编辑HTML和CSS来完全自定义HTML-Dojo表单的外观;但是,编辑生成的HTML源代码将使结果文件与业务空间不兼容。

由于使用表单中的数据来生成业务对象的过程依赖字段的顺序,一定不能更改HTML中的输入元素的顺序。

因此,可以使用带相对定位的自定义CSS类重新排列输入字段。

在下面的示例中,插入了两个新的CSS类fromAccount和amount,以定义40个像素的相对偏移,这是两个连续行的大致距离。

fromAccount类的元素将向下移动40个像素,amount的元素将向上移动,从而切换这些类的垂直位置。

要切换某个输入字段及其标签,可以将这两个CSS类分配给该字段和标签,如下面的HTML源代码所示:

清单4.HTML代码显示了如何将CSS类分配给字段和标签

...

.fromAccount{

position:

relative;

top:

40px;

}

.amount{

position:

relative;

top:

-40px;

}

...

SDOMaxOccurrence="1">

input

FromAccount*

dojoType="dijit.form.NumberTextBox"id="http___…WidgetID"

constraints="{min:

-2147483648,max:

2147483647,places:

0}"

sdoMessageType="input"sdoPrepopulation=""required=

"true"class="fieldInput"/>

Amount*

dojoType="dijit.form.ValidationTextBox"id="http___…WidgetID"

regExp="\d*([.|,]\d*)?

"

sdoMessageType="input"sdoPrepopulation=""required="true"

class="fieldInput"/>

...

示例4:

使用数组容器

正如前面提到的,BankTransferInformation业务对象可以具有多个Remark业务对象作为其子业务对象。

业务空间通过使用Dojo小部件bpc.widgets.FormArrayContainer支持此场景,该小部件包含子业务对象的输入元素,并允许您多次添加输入元素。

检查生成的源代码,您可以看到以下行:

清单5.生成的源代码

dojoType="bpc.widgets.FormArrayContainer"

sdoMessageType="input"SDOMinOccurrence="0"SDOMaxOccurrence="-1">

Remarks

green"

class="addButtonbutton_input"title="+">

+

red"

class="removeButtonbutton_input"title="-">

-

...

dojoType="dijit.form.ValidationTextBox"regExp=".*"

sdoMessageType="input"sdoPrepopulation=""

required="false"class="fieldInput"/>

...

要进行自定义的重要元素是带arrayTemplate类的

元素。

当您单击加号(+)时,内部的HTML代码将复制到新的

元素中,该元素将作为新的子业务对象添加到FormArrayContainer,这样您就可以自定义该HTML,前提是要满足前面的示例中描述的限制。

示例5:

更改输入字段小部件

WebSphereIntegrationDeveloper为业务对象的每个字段选择最适合的Dojo小部件,具体取决于数据类型。

在某些情况下,这些自动选择的小部件并不适合您的要求。

幸运的是,只要这些小部件是以下网站上

展开阅读全文
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1