利用SOA简化业务流程Word文档下载推荐.docx
- 文档编号:18231967
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:20
- 大小:194.23KB
利用SOA简化业务流程Word文档下载推荐.docx
《利用SOA简化业务流程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《利用SOA简化业务流程Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
∙
选择File>
New>
Application…,出现NewApplication对话框。
选择EmptyApplication,并将其命名为Brokerage。
单击Create。
下面创建Web服务项目:
右键单击Brokerage文件夹。
选择New>
Project…,出现NewProject对话框。
选择WebServiceProject,并将其命名为WebServices。
创建国家银行服务:
右键单击WebService文件夹。
Folder,并将文件夹命名为nationalbank。
右键单击nationalbank文件夹。
WebService,出现NewFile对话框。
将该Web服务命名为NationalBankService。
编辑窗格中将显示新创建的服务。
右键单击编辑窗格中的服务,选择AddMethod。
将方法命名为getCurrentRate。
单击SourceView选项卡。
修改该Web服务,使其与清单1一致。
Save
清单1.抵押代理公司创建国家银行Web服务的代码
packagenationalbank;
publicclassNationalBankService
implementscom.bea.jws.WebService
{
staticfinallong
serialVersionUID=1L;
staticfinaldouble[]rates=
{.0625,.0525,.06375,.055,
.05375,.05625,.05875,.06,
.0575,.06125};
publicstaticclassQuote
{
publicdoublerate;
publicStringname;
publicQuote(){}
publicQuote(Stringname,
doublerate)
this.rate=rate;
this.name=name;
}
}
/**
*@common:
operation
*/
publicQuotegetCurrentRate()
StringmilliSecs=
String.valueOf(
System.currentTimeMillis());
doublerate=rates[
Integer.parseInt(
milliSecs.charAt(
milliSecs.length()-1)))];
returnnewQuote(
"
NationalBank"
rate);
}
窗体底端
如前所述,Web服务随机地从静态定义的两个利率表中获得利率。
由于我们的服务还需要返回银行的名称,所以我们需要创建一个能够同时存储这两个值的对象。
我们已经知道,getCurrentRate()方法能够创建并返回Quote对象。
LocalBank服务起到相同的作用,二者的不同之处在于,我们将更改列表中声明利率的顺序。
这样做可以使得在每次执行流程时,能够提供不同结果的更好机会。
这里没有必要再次执行构建LocalBank服务所需的所有步骤,只需复制NationalBank服务即可。
下面的操作步骤将指导您完成这一任务。
复制NationalBank服务:
Folder,将文件夹命名为localbank。
右键单击NationalBankService,并选择Duplicate。
将新创建的NationalBankService1拖放到localbank目录。
将NationalBankService1重命名为LocalBankService。
更改利率表中定义利率的顺序。
将返回的名称更改为LocalBank。
执行File>
Save。
设置业务流程所使用的服务的最后一步是,为每个服务创建一个WSDL文件。
通过单键右击每个服务并选择GenerateWSDLFile,可以轻松完成这一操作。
构建完服务之后,有一项最后的任务需要在构建业务流程之前完成。
在本例中,作为对客户的回应,我们的业务流程应向客户返回一个XMLBean。
所以在开始创建业务流程之前,需要通过导入该对象的架构来创建该对象。
导入架构文件
下一步是创建Schema项目,以及创建将用于向客户返回信息的XMLBean对象。
这里实际上没有必要使用XMLBean,使用JavaBean就可以完全满足要求。
但越来越多的服务和过程都开始以XML为中心,所以我感觉有必要让您领略一下XMLBean技术。
XML是以文本形式表示数据的最佳方法,也是在Internet上使用的选择的消息格式。
您很快就会看到,XMLBeanAPI在访问XML数据方面为开发人员提供了更多的控制功能。
有了XMLBean的帮助,可以使用XML架构生成表示XML的Java对象,还可以在不泄漏初始XML文档的情况下为您提供SAX和DOM类型的导航和操作功能。
在进行这一步骤之前,应按照创建Web服务项目的方法创建另一个项目。
在创建该项目时,请确保选择SchemaProject选项,并将该项目命名为Schemas。
新建项目将显示在Application选项卡中。
有了Schema项目,我们就可以仅导入XML架构,Schema项目能够根据此架构自动生成XMLBeanFactory和XMLBean对象。
您也可以在该项目中创建具有相同功能的自己的XML架构。
在本例中,我们将从清单2中导入该架构。
清单2.Schema项目允许我们导入XML架构,Schema项目能够根据此架构自动生成XMLBeanFactory和XMLBean对象。
<
?
xmlversion="
1.0"
>
xsd:
schematargetNamespace=
xmlns:
xsd="
http:
//www.w3.org/
2001/XMLSchema"
<
elementname="
quote"
complexType>
sequence>
lender"
type="
string"
/>
element
name="
loanAmount"
double"
term"
int"
rate"
payment"
/xsd:
element>
schema>
导入Schema:
右键单击Schema项目并选择Import。
出现ImportFiles对话框。
定位至在清单2中存储的XMLSchema所在的位置。
选择Import。
请注意Schema项目自动启动了构建过程。
构建完成之后,展开XMLBeanClasses子文件夹,检查生成的类。
至此我们完成了所有前期工作,可以着手进行业务流程的开发。
这时“应用程序”选项卡应与图1类似。
图1.在创建抵押代理业务流程中完成了准备任务之后,Application选项卡应该类似于此图。
开发业务流程
要开始构建业务流程,需要创建一个新项目。
这里我们创建一个ProcessProject,并将其命名为BrokerageProcesses。
在创建ProcessProject时,系统将在流程子文件夹下方为您创建文件名为process.jpd的流程文件。
我们将对该文件进行修改;
双击该文件,以在Edit窗格中打开该文件(参见图2)。
图2.在创建ProcessProject时,系统将在流程子文件夹下方为您创建名为process.jpd的流程文件。
我们将对该文件进行修改。
下面我们看一下创建该业务流程必须执行的每个步骤。
首先我们希望客户的请求能够启动该流程。
我们还希望获得每个银行的当前利率的信息,这样我们就不必为了等待我们的服务完成操作而保持处理状态。
我们还需要对两个返回的利率值进行比较,以确定收费较低的银行,并根据返回的利率值计算每月应缴纳的费用。
最后,我们将利用计算结果构造XMLBean,并将其返回给客户。
第一步是设置客户请求。
Workshop提供了多种启动业务流程的方法。
我们希望由客户的请求来启动业务流程。
侧栏“请求和响应”能够指导您完成设置ClientRequest节点和客户响应的一系列步骤。
请求和响应
下面是设置ClientRequest和ClientResponse节点所必需的步骤。
要设置客户请求:
双击StartingEvent节点,允许您选择该流程启动的方式。
在本例中,流程是InvokedviaaClientRequest。
选择此选项,单击OK。
注意StartingEvent更改为:
将此事件重命名为RequestQuote。
双击RequestQuote节点。
在GeneralSettings选项卡上,将MethodName更改为requestQuote。
我们知道客户将输入贷款数目和期限。
使用Add…按钮添加requestQuote方法的这些参数类型。
单击Add…
选择Java作为参数类型。
在JavaTypes下,选择double。
将其命名为loanAmount,参见图3。
然后为贷款期限添加参数,这次选择int,名称为term。
单击ReceiveData选项卡。
注意它已经设置为接收double和int数据类型。
在SelectVariables下赋值,选择Createnewvariable…
分别输入loanAmount和term的名称。
注意loanAmount和term现在可以在DataPalette上的Java变量下使用了。
单击Apply。
单击Close。
选择File>
Save保存工作。
我们现在向前跳过一些步骤来创建客户响应,因为它将创建一个我们在处理过程中需要的成员变量。
以下步骤向您展示了如何设置客户响应。
要设置ClientResponse:
从Palette拖动ClientResponse节点,
将它直接放到GetQuote节点之后。
将ClientResponse节点重命名为ReturnQuote。
双击ReturnQuote节点。
在GeneralSettings选项卡中,将MethodName更改为returnQuote。
我们已经注意到流程将返回一个XMLBean给客户机。
使用Add…来为returnQuote方法添加这个参数类型。
单击Add…
选择XML作为参数类型。
在XMLTypes>
Typed>
quote.xsd下,选择quote。
单击SendDatatab。
注意它已经设置为返回一个QuoteDocument。
命名变量brokerageQuote。
.
注意brokerageQuote现在在DataPalette上的XML变量下可以使用了。
单击Close。
Save来保存工作。
图3.遵循与创建ClientRequest相同的步骤,显示屏幕应该类似于此图。
现在我们可以开始开发业务流程的主逻辑。
我们需要获取每个贷款银行的当前利率,可以通过依次调用相应的服务达到这一目的,在这一过程中,没有必要等待其中的一个流程结束之后才启动另一个流程,毕竟国家银行的业务量一般要比本地银行的业务量要大,并且从我们的角度看,使一个服务在另一个服务结束之后再启动并不重要,因为这些服务之间不存在相互依赖的关系。
我们可以使用Palette中的其他节点进行并行处理,以异步的方式调用每个Web服务。
该节点称为Parallel节点,侧栏“功能强大的控件”显示了该节点的操作步骤。
功能强大的控件
我们需要从每一贷款机构获得当前利率。
我们可以使用Palette中的节点来处理并行处理(称为Parallel节点),并异步地执行每一Web服务调用。
为了从Parallel节点调用服务,我们需要创建两个Web服务控件,一个用于国家银行,一个用于地方银行。
要创建Web服务控件:
在DataPalette的Controls下,选择Add。
选择WebService。
InsertControl对话框出现(参见图4)。
在Step1中,设置控件的变量名为nationalBankControl。
在Step2中,选择CreateanewWebServicecontroltouse。
设置新的JCX名称为NationalBankControl。
在Step3中,浏览WebServices/nationalbank/NationalBankServiceContract.wsdl。
注意:
国家银行和地方银行已经公布自己的wsdl文件,我们将使用UDDI来查找这些文件。
由于我们的银行是虚构的,并且已经在本地创建,我们将使用本地文件系统中的wsdl文件。
遵循与LocalBankService相同的步骤,但这次变量名采用localBankControl,将新的JCX命名为LocalBankControl,并且浏览WebServices/localbank/LocalBankServiceContract.wsdl。
注意nationalBankControl和localBankControl都已经添加到DataPalette。
我们将在要创建的Parallel节点中使用这些控件。
要添加Parallel节点:
从Palette拖动Parallel节点,
直接放至GetQuote节点后。
将Parallel节点重命名为GetCurrentRates。
重命名最左边的分支为GetNationalRate。
重命名其他分支为GetLocalRate。
在DataPalette中展开nationalBankControl。
将getCurrentRate方法拖动到GetCurrentRates节点的GetNationalRate分支。
将最新创建的getCurrentRate节点重命名为GetNationalRate。
双击GetNationalRate节点。
注意在GeneralSettings选项卡中,nationalBankControl和getCurrentRate方法已经选中。
选择ReceiveData选项卡。
这次我们不进行变量选择或者创建,我们把返回的变量变换成一个QuoteDocument。
选择Transformation。
在Step1中,选择SelectVariable。
选择Createnewvariable…
创建另一个QuoteDocument变量,并将它命名为nationalQuote。
在Step2中,选择CreateTransformation。
TransformationEditor出现了。
从SourceSchema中,将rate拖动到TargetSchemarate,并命名为lender(参见图5)。
单击File>
Save保存该变换。
关闭变换,返回到Edit窗格中的process.jpd。
遵循与localBankControl相同的步骤。
将getCurrentRate方法拖动到GetCurrentRates节点的GetLocalRate分支。
将返回的变量命名为localQuote。
图4.InsertControl对话框用于创建Web服务控件。
窗体顶端
图5.创建parallel节点的步骤之一是拖动rate到TargetSchemarate,并将之命名为lender。
现在,每项服务都将创建自己的QuoteDocument。
我们可以据此比较这些利率的值,以确定其中较低的值。
可以利用Palette中的Decision节点完成这一操作。
决策节点能够根据某些条件的计算结果执行流程相应的分支。
以下是获得最低利率的方法:
将Decision节点从Palette直接拖放至GetCurrentRates节点下方。
将该节点重命名为IsNationalLower?
将Condition分支重命名为Yes。
将Default分支重命名为No。
双击Yes节点。
使Schema处于被选中状态。
单击SelectVariable并选择nationalQuote变量。
现在应显
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 SOA 简化 业务流程
![提示](https://static.bdocx.com/images/bang_tan.gif)