既然是处理人工活动,必然涉及到与人工交互密切相关的界面处理。在Oracle Workflow Service中有一个特定名词叫Display Form。每个Task都会绑定一个属于自己的Task Display Form(有一个且仅能有一个)。如下图所示:
这种Task Display Form有两种模式,一种是利用displaoy form模板的方式来处理(如上图所示);一种是客户完全自己利用workflow service api来实现jsp页面及响应处理。—— 还有一种模式是在第一种模式的基础上上支持application development framework (ADF) data controls,但这个具体咋用,俺不是很清楚。
针对第一种实现模式,可以在JDeveloper中,自动产生Task Display Form:当开发人员在设计完Human Task,包括Human Task中的Paramters参数的后,选择创建Task Form,则可以根据条件自动创建相应的display form对象(.form)文件,以及一个template jsp file以及,几个region jsp file。然后开发人员针对region jsp file进行布局调整。
可以查看.form文件,内容格式如下。从这个内容可以看出来,其主要是用于一个"索引作用",其入口就是其中的<template>元素。
<?xml version = '1.0' encoding = 'UTF-8'?>
<taskDisplay targetNamespace="http://xmlns.companyABC.com/workflow/orderTaskDisplay" generateInternationlizedJSP="false" xmlns:task="http://xmlns.oracle.com/bpel/workflow/task" xmlns="http://xmlns.oracle.com/bpel/workflow/taskDisplay">
<taskDefinitionId>${domain_id}_${process_id}_${process_revision}_HumanTask_Approve</taskDefinitionId>
<applicationName>worklist</applicationName>
<templateName>ThreeRegionJSP</templateName>
<template>${http_url}/${domain_id}/${process_id}/${process_revision}/HumanTask_Approve/HumanTask_Approve.jsp</template>
<regions>
<defaultJSP regionName="Footer">
<jspURI>Footer1.jsp</jspURI>
</defaultJSP>
<autoGeneratedJSP regionName="Body" editable="true">
<jspURI>Body.jsp</jspURI>
<messageAttribute editable="false">VacationRequestProcessRequest</messageAttribute>
</autoGeneratedJSP>
<defaultJSP regionName="Header">
<jspURI>Header1.jsp</jspURI>
</defaultJSP>
</regions>
</taskDisplay>
当你针对每一个Human Task产生匹配的Task Display Form后,会在Web Content目录下产生相应的task form相关的jsp等文件(这些jsp file其实已经在.form中有所说明)。入口其实就是那个template file。
值得注意的是,oracle为每个Human Task都产生了相应的war和ear资源。如上图中所示。
在执行过程中,当客户希望进入Task Detail页面的时候,其处理逻辑如下图所示(改天应该换成一个序列图似乎更会清晰一些):
对于DOPostService.doPostTemplate方法的使用,可以参考 %SOA_Oracle_Home%\bpel\samples\hw\worklistapp\public_html 目录下的TaskDetail.jsp文件内容。此处不再详细叙述。
发表于 @ 2008年06月16日 22:43:00|评论(loading...)|收藏