




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Cordys Studio开发步骤及要点1、流程分析/设计32、创建新流程模型43、配置Application Services Types54、配置流程需要的Services65、编辑Application Service的WSDL116、流程作图要点157、流程的发布和实例化178、本例流程执行的情况199、如何触发一个流程?2210、流程的信息保存在哪里?2311、如何开发人工执行的Application Service?2412、如何利用Xforms开发流程中人工执行的交换界面2513、如何调试流程?2614、Studio中的流程模型如何导入导出?27使用Cordys Studio进行流程应用开发,读者应具备以下背景知识:1、 Method的建立2、 Web Application的开发3、 BCP的管理操作在进行Studio开发以前,请做好以下准备:1、 生成所需要的Method Set和Method2、 完成所需要的Web Application3、 关于Studio的介绍和操作,请阅读Studio help文档4、 了解流程的两种状态:Design Time 和Run Time。以下介绍STUDIO 开发过程:1、 流程分析/设计首先设计一个流程草图,可以在纸上或用其它工具其他地方,只是让自己完全清楚想要做的事情。草图中应该至少包括流程的执行者,步骤和相关事件,如下图所示:2、 创建新流程模型在Studio的模型库中创建一个新的业务流程模型BPM,如下图所示:创建模型时需要填写一些基本信息。code是流程的标示符,version表示流程的版本。同一个流程可以有多个版本在系统中运行,以适应企业内流程逐步改变的需要。外部程序调用流程时采用“code_version.bpm”的形式。Studio的目录树缺省显示流程的description。可以在“settings - design time user preference - display in tree”选项中改为显示流程的code。3、 配置Application Services Types在这里添加的Services Type可以在配置Application时使用到。如果不添加,也可以使用系统自身提供的服务类型,因此这一步不是必须的。4、 配置流程需要的Services流程中需要用的Services分为两种:SOAP Services和Application Services。SOAP Serivces是指不需要人参与的、没有UI的,使用SOAP Request来调用的Services。将Integrator中的Method导入即可。Application Services是指需要和人进行交互的Services,即需要编写代码的Web Application。5.1导入 SOAP Services5.1.1选择“Import”5.1.2选择 Service Types5.1.3选择需要导入的Method Set5.1.4选择需要导入的Method点击Finish后完成。5.2 Application Services的配置做Application Services之前,要求事先设计好HTML页面并将其复制到相应的Web目录下面。此页面需要遵循的技术规范请查询相关资料。一个HTML页面对应一个Application Services。5.2.1在Collaborative Application Services上点击鼠标右键,在Context Menu中选择NewApplication Services5.2.2 输入页面的URL,如/cordys/poc/applyform.htm5.2.3输入Service的基本信息后点击Finish。5.2.4添加的Application Service会显示在你选择的Folder下面。5、 编辑Application Service的WSDLWSDL(Web Service Description Language),定义了Web服务的调用方式,也就是流程message map中的输入消息和输出消息(Input/Output Message)。有了输入消息和输出消息,才可以使用Studio开发流程中的数据流。开发Soap service时,系统就自动产生了其WSDL。Application Service本身只是网页,所以其WSDL必须手工定义。打开编辑WSDL的界面WSDL代码范例:definitions xmlns=/wsdl/ name=ShowDetailTask targetNamespace=/1.0/ShowDetail.WSDL types schema xmlns=/2000/10/XMLSchema targetNamespace=/1.0/ShowDetail.WSDL element name=GetShowDetailTask complexType element name=ProductID simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=ProductName simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=SupplierID simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=CategoryID simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=QuantityPerUnit simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=UnitPrice simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=UnitsInStock simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=UnitsOnOrder simpleType restriction base=xsd:string length value=100/ /restriction /simpleType /element element name=ReorderLevel simpleType restriction base=xsd:string length value=1000/ /restriction /simpleType /element element name=Discontinued simpleType restriction base=xsd:string length value=1000/ /restriction /simpleType /element /complexType /element element name=GetShowDetailAnswer complexType element name=ProductID simpleType restriction base=xsd:string length value=2/ /restriction /simpleType /element element name=ProductName simpleType restriction base=xsd:string length value=1000/ /restriction /simpleType /element /complexType /element /schema /types message name=GetShowDetailTaskInput part element=tns:GetShowDetailTask name=body/ /message message name=GetShowDetailTaskOutput part element=tns:GetShowDetailAnswer name=body/ /message portType name=FormTask operation name=ShowDetailTask input message=tns:GetShowDetailTaskInput/ output message=tns:GetShowDetailTaskOutput/ /operation /portType/definitionsWSDL代码简化以后可以由以下几部分组成:definitions xmlns=/wsdl/ name=operation_name targetNamespace=/1.0/xxx /与下面Port Type定义中operation name对应typesschemaelement name =input_mesg_structure/输入消息的格式定义,可以通过COBOC workbench中schema editor产生xsd,然后把xsd:和/xsd:分别替换为和/elementelement name= output_mesg_structure /输出消息的格式定义,产生方法同上/element/schemamessage name=input_mesg_name/输入消息采用输入消息的格式定义part element=tns:input_mesg_structure name=”body”/messagemessage name=output_mesg_name/输出消息采用输出消息的格式定义part element=tns:output_mesg_structure name=”body”/messageportType name=FormTaskoperation name=operation_nameinput message=tns:input_mesg_name/指定输入消息名output message= tns:output_mesg_name /指定输出消息名/operation/portType/types/definitions在流程中,取得输入/输出信息中的某个element值的XPath为:/messagename/messagestructure/elementname/text()6、 流程作图要点Activity:Activity即流程的操作步骤。操作步骤可以有自动和人工两种,分别对应了SOAP Service 和Application Service。要在流程中调用Service,只要从BPM Components中将该Service的图标拖拽入流程设计界面即可。Connector:这里的Connector是指Activity之间相连的箭头。箭头的指向表明了Activity的先后次序。判断步骤(Decision)出去的箭头,会多一个属性Condition,即条件。根据Condition中的条件来决定流程流向。Role配置:Application Service即人工操作步骤,必须有人介入。通知用户介入流程的方式有Inbox和Email两种,而无论哪种,都必须准确的告诉系统执行任务的用户。Studio中可以直接将角色绑到Activity上,可以在步骤属性中的Roles页选择,也可以把BPM Components中Organization Roles下的角色托拽到步骤,流程执行时就会通知该角色。在Work Dispatch Type里面可以选择把任务交给角色对应的所有用户,或这些用户中任务最少的一个。Orchestrator也支持动态的角色分配,可指定某步骤的用户由指定名字的消息决定。Message Map:在整个流程中的数据都是根据每个Activity的Input和Output信息进行流转。前一个Activity的Input和Output中的数据可以被后一个Activity的Input信息所利用。即前一个Activity的Input和Output中的数据可以赋值给后一个Activity的Input。赋值的方式非常简单,将要赋值的元素从信息源拖拽到信息宿即可。这个过程就是建立Message Map的过程。一旦元素之间的Map建立,则在Message Map 窗口中会出现一条连接线。对于每个Activity,都可以建立相应的Message Map。在窗口的右边,是相对应的元素的XPath以及元素间的操作。在Runtime的时候,数据的交换就根据Message Map来实现。注意:许多情况下,触发流程时需要递交一些信息给流程处理,例如通过提交一个订单来启动订单处理流程。这一信息传递到流程以后,才开始执行所有的Activity。实现的办法是:把流程设定为事件触发,定义一个Input Message,并在Message Map中定义其格式。具体操作步骤为:1. 双击流程启动符号,出现Properties2. 设Trigger Type为message3. 随即会出现输入框Input Message,填入触发流程的消息名,如inputmessage4. 在流程图上选择流程启动符号,按右键选择Message Map-Message Map before Start Event,定义inputmessage的格式。本例中,我们需要传给流程一个申请单编号,格式如下所示:inputmessageapplyorderid/inputmessage这样,在流程中获取applyorderid的Xpath为/inputmessage/applyorderid/text()程序调用该流程时,应该采用Process Specific Message的信息结构作为requestprocess方法的参数。在COBOC workbench中调试流程时,也应该采用这一信息结构触发流程。在Cordys Studio中通过选择该流程模型,然后点击右键菜单Business Process Execution-Run来手动启动流程时,系统会自动弹出窗口,让你输入数据作为启动的参数,参见下图:在“PARAMETER”出输入相应的启动参数,流程即根据此数据进行运转。关于如何在外部启动一个流程,后面会专门介绍。Warning List:点击工具栏的Show warnings图标或每次将流程发布到运行时(Business Process Execution-Publish to Runtime),系统会自动对图形的合法性和完整性进行校验,任何不符合语法的情况都会被列在Warning List中提醒使用者。7、 流程的发布和实例化本例中,在Studio中设计完成的流程图如下:序号用途说明执行者类型0Start Event流程启动事件1Approve Apply Material Order审批物料申请单一般部门主管Application Service2Create New Code for Material物料代码维护仓库管理员Application Service3GetMaterialStock根据物料代码取得其库存数量SOAP Service4Fill Purchase Form填写物料采购单仓库管理员Application Service5Approve Purchase Order批准采购单采购部门主管Application Service6Purchase Order Completed采购单完成采购员Application Service7GetMaterialStock根据物料代码取得其库存数量SOAP Service8Delivery Material根据物料申请单发放物料仓库管理员Application Service9End Event流程结束事件流程完成后,并且Warning List中没有任何警告的时候,就可以将流程发布到引擎(Publish to runtime)。流程只有进行发布,才能被触发和使用。同样,流程一旦经过修改,就必须将原版本从流程引擎中删除(delete from runtime),然后再行发布。流程发布成功后,就可在Studio中被手动触发的,称为实例化,见下图: 8、 本例流程执行的情况物料申请人提交物料申请单(通过流程之外的一个网页实现,触发流程)部门主管审批(该Application会发送到该用户的Inbox中,点击邮件内容打开该Application)消息提示(所有需要人工参与的环节都会有信息提示)Inbox状况点击该消息,则会打开“审批物料申请单”网页。提交以后下一个需要人工介入的Activity的用户(仓库管理员)会收到Message提示,打开Application。由于库存不够,需要采购,因此需要仓库管理员介入的Application是填写采购单,如下:仓库管理员提交采购申请单以后,需要采购部门主管进行采购审批:主管同意采购之后,由采购员进行采购。采购完成之后,需要进行申报。系统会自动更新该物料的库存,并判断是否足够发放。如果库存足够用户申请的数量,则自动提示仓库管理员进行物料的发放。如下发放之后,系统自动更新该物料的库存。至此,一个完整的流程已经走完。9、 如何触发一个流程?所有流程的运行是由COBOC Service来管理和维护的。因此要启动一个流程,必须调用CoBOC方法集中的方法RequestProcess。其调用格式参看下例中的粗线代码。其中,“type=definiton”触发流程(或者说产生一个新的流程实例),receiver包含流程名(请注意,这里不是bpm的code,而通常是bpm code_version code.bpm,可以在Publish to Runtime后的提示中看到该名或者在workbench中的Business Processes文件夹下看到),message中的数据即流程开始事件中定义的Input Message。ApplyForm.htm页面包含了完整的流程调用代码。详细代码如下:HTML xmlns:eibusmeta http-equiv=content-type content=text/html; charset=gb2312HEADlink rel=stylesheet href=/cordys/wcp/style/behaviors.csseibus:dataisland id=Query async=false automatic=false/eibus:dataisland xml id=RequestToProcessSOAP:Envelope xmlns:SOAP=/soap/envelope/SOAP:BodyRequestProcess type=definition xmlns=/1.0/cobocsender/receiver/messageInputMessage applyorderid /InputMessage/message/RequestProcess/SOAP:Body/SOAP:Envelope/xmlscript language=JScriptfunction CallProcess() RequestToProcess.selectSingleNode(./applyorderid).text= applyorderid.value;RequestToProcess.selectSingleNode(./sender).text=Sender;RequestToProcess.selectSingleNode(./receiver).text= POC_vcmdemo10.bpm;/alert(RequestToProcess.xml);Query.clear();Query.request=RequestToProcess;Query.reset(); alert(Business flow start!);/scriptMETA NAME=GENERATOR Content=Microsoft Visual Studio 6.0TITLE/TITLE/HEADBODYp/pPFrom Product ID:INPUT id= applyorderid name=text1/PINPUT type=submit value=Start id=submit1 onclick=CallProcess()/BODY/HTML10、 流程的信息保存在哪里?虽然我们在设计流程图的时候,可以看到其文件名为code.bpm,实际上其所有信息都是保存在COBOC数据库中的。因此你如果你企图在Cordys安装目录下搜索后缀名为.bpm的文件是不可能得到结果的。每个流程图都会作为COBOC数据库中的一个Entity来保存。11、 如何开发人工执行的Application Service?流程中需要人工执行的Application service就是一个html页面。流程引擎往往需要调用页面并传递参数(Input Message),在人工操作完成之后,又必须能够将结果数据(Output Message)返回到流程引擎中,并修改本次Activity的状态变为完成。因此,除了一般Cordys Web Application应有的要素之外,它还需要有以下要素(参见本例的ApplyApprove.htm页面):1. 名称空间xmlns:cas2. 流程相关的页面行为,通过以下语句在页面中引用:link rel=stylesheet type=text/css href=/cordys/cas/vcm/behavior/behaviors.css/3. 和流程交互的对象workflowEnabling:div style=behavior: url(/cordys/cas/vcm/behavior/workflow.htc)id=workflowEnablingpostInitializeFunction=postInitialize()onbeforecommit=beforeCommitHandler()/divworkflowEnabling.requestTaskMessage和workflowEnabling.responseTaskMessage分别对应于该页面作为流程步骤的输入和输出消息。选中页面的时候,需要初始化workingEnabling对象,代码如下:onselect=workflowEnabling.initializeWorkflow()2-3的上述内容仅适用于BCP 4.2 Patch36.4及以前;从Patch36.5开始,应当使用下列方法:流程相关的页面行为,通过以下语句在页面中引用:script src=/cordys/wcp/application.js和流程交互的对象workflowEnabling:div id=workflowEnabling style=display:none/div选中页面的时候,需要初始化workingEnabling对象onselect=selectApplication()function selectApplication() application.addLibrary(/cordys/cas/vcm/library/workflow.htm, workflowEnabling);workflowEnabling.initializeWorkflow();本Application Service通过流程引擎传入的输入数据:var messageData;messageData= workflowEnabling.requestTaskMessage.selectSingleNode(./message_data/GetPOCDeliveryTaskInput/GetPOCDeliveryTask)其中/GetPOCDeliveryTaskInput/GetPOCDeliveryTask就是本Application Service所定义的WSDL中的inputmessage的XPath。本A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GA/T 2176.1-2024事故易发路段风险防控装备设置指南第1部分:基本原则
- 2025年装饰材料行业当前发展现状及增长策略研究报告
- 2025年电子专用设备行业当前发展趋势与投资机遇洞察报告
- 收寄安全知识培训课件考试
- 试生产情况总结报告
- 攀爬围墙安全知识培训总结课件
- 2025年事业单位考试医学基础知识真题及答案
- 2025年二级建造师之二建建设工程法规及相关知识基础试题库和答案
- 危重病学组应知应会试题(附答案)
- 2024年山东省威海市医疗三严三基理论考试题库及答案
- 全过程工程造价咨询投标方案(技术方案)
- 数的开方、整式的乘除数学能力试题
- DB53∕T 1269-2024 改性磷石膏用于矿山废弃地生态修复回填技术规范
- 2024年安陆中小学教师招聘真题
- 卫生法规-卫生法律法规概论-基本医疗卫生与健康促进法律制度
- 2024年海南省财金集团有限公司招聘笔试冲刺题(带答案解析)
- 架线导地线各种弧垂的含义及计算方法(附计算表格)彻底弄懂弧垂
- 网络营销:推广与策划(第3版 慕课版)课件 项目一认知网络营销(知识基石)
- 精益管理课件
- 建筑防火基础知识
- 首诊负责制度检查分析报告
评论
0/150
提交评论