版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用指南2BPM与WEBDynpro总结 第54页共54页目录目录 21 基本步骤 41.1 创建BPM 41.2 创建WEBUI 41.3 建立process与webui的关系 41.3.1 指定关联 41.3.2 指定TASK的interface 51.3.3 指定process中的各activity的数据mapping,即在各个activity中可流转的数据 61.4 Deployprocess 61.5 访问 62 技术架构 73 结构 73.1 View的layout 113.2 CompositeUIElement 153.3 字段属性 174 Message 175 动态设置value-help 196 动态编程,即动态设置context 207 外部model数据 278 JA312:AdvancedWebdynproforJAVA 288.1 设置弹出式窗口 298.1.1 OVS 318.2 消息处理 328.3 高级CONTEXT 328.4 动态UI 338.5 Modelinterface 338.6 Structingapplication 338.6.1 dependencity 338.6.2 structing 408.7 附录 429 实用东西 449.1 查看日志 449.2 ABAP层次的WEBSERVICE 449.3 Task层次的某些属性可在Humanactivity中覆盖 449.4 Process的webservice 459.5 调用webservice 459.5.1 WSDL文档结构 469.5.2 WSDL端口 469.5.3 WSDL消息 479.5.4 WSDLtypes 479.5.5 WSDLBindings 479.5.6 总结 4710 实用类、接口 4910.1 ClassWDValueServices 4911 连接外部数据库 4912 账号权限 5112.1 Portal上UWL的权限 5112.2 管理员权限 5113 常用URL 5113.1 流程管理 5133:50000/ProcessManagement/index.jsp 5113.2 流程监控 5114 问题 5215 总结 52
基本步骤创建BPM在NWDS中,创建一个BPM流程实例。在此步骤中,只设置流程图(在pool中,创建多个lane,在每个lane中设置流程活动,如activity、event、gatway等),在流程图中的每个humanactivity中,需要用到task,在该task中,指向webdynproforjava开发的WEBUI。在activity中,可指定该步骤的用户,但此处指定的用户可被该process种的task的role取代。创建WEBUI在该步骤中,创建process中人机交互的页面,此部主要就是webdynproforjava的开发,创建好后,需要每个componentaddtopublicpart中,以便在process中可用建立process与webui的关系此步在developmentinfrastructure中完成,即将上述两步创建的process与webui关联起来,以便在process的task中可指定webui的interface(即要用到第二步中addtopublicpart的组件)、在process的owner中指定该步的执行者及流程中多个activity的数据mapping(包括inputmapping、outputmapping等)指定关联指定TASK的interface在task的编辑器中,可指定task对应的UIinterface,此处interface即需要用到1.2中addtopublicpart中的component.在此处指定component后,即可在process的数据类型中可找到该component种定义的context中的数据,如下图所示:注意:在此处指定task的UIinterface时,必须在WEBUI的Component的Interfacecontroller中指定一个Completeevent,否则无法指定。同理,在interfacecontroller中也要指定context,否则无法在process中mapping指定process中的各activity的数据mapping,即在各个activity中可流转的数据此步完成后,即可在process中加入数据对象可在process的activity中作数据mapping操作(否则,在inputmapping中无的TaskInput中无UIRequest,在outputmapping的TaskOutput中无UIResponse)如此,即可在context与activity中的input/output做数据mapping。在portal上的UWL中,将可以显示任务列表,此处的任务列表显示的内容可以定制并可用参数,在TASK的usertext中定义,如下图所示:此处的参数也从绑定的userinterface(compontent)中而来,若不绑定,则无可选的context数据(在UIRequest或UIResponse节点中)。即context(从绑定的compontent中取到)数据与activity的taskInput中的UIRequest绑定;与taskOutput中的UIResponse绑定。通过这种方式来实现UI与process的数据绑定及流转。Deployprocess访问33:50000/index.html的san链接中,通过ConfigurationManagement--processesandtasksprocessreposity来启动在1.4中deploy的流程技术架构DC关系:结构对于每个VIEW,分别对应有两个interface,假设view的名称为MMM,则接口名分别为IPrivateMMMView和IPublicMMMView,前者用于VIEW的对内数据操作,后者用于对外的数据交换,在VIEW中定义的ACTION在前者中定义,在private的view中,context中所选的每个node都对应有两个静态内部类,分别为I{NodeNmae}Node、I{NodeName}Element,在这两个内部类中分别定义node的操作、属性等东西。通过提供的这些方法来操作VIEW中的数据,如查找按钮等。view中定义的method、action也在此接口中定义每个view均实现java.io.Serializable类,有个IPrivateMMMView类型的变量wdThis,publicPurchaseRequestView(IPrivatePurchaseRequestViewwdThis){this.wdThis=wdThis;this.wdContext=wdThis.wdGetContext();this.wdControllerAPI=wdThis.wdGetAPI();this.wdComponentAPI=wdThis.wdGetAPI().getComponent();}对于每个webdynproforjava的组件,均有controller、view、window,其中controller对应有接口IPublic{组件名}、IPrivate{组件名}的接口,其中IPrivateextendsIPublic,在IPublic中,有两个内部类,分别为IContextNode继承自DataNode表示节点,IContextElement继承自DataNodeElement表示元素,在对应的Controller的JAVA文件中,有一个私有成员wdThis变量类型为IPrivate的,故通过这个变量即可实现对Context的访问.其中wdContext变量类型为上述IPublic中的内部类IcontextNode,通过该变量实现对Context的访问;此外,另两个变量wdComponentAPI/wdControllerAPI的类型均为IWDCompontent,通过这两个变量可实现对message、尽量不要使用CustomController,只有在优化、简单化开发时才考虑使用wdDoPostProcessing()在复杂的应用中,用于校验来自多个组件的数据
wdDoBeforeNavigation在不同的controller中共享数据External-mapping在设置internalmapping时,需要将cardinality设为1..n,否则在界面上不能输入。若view的context为从control映射过来,则需在controller的context中设置cardinality,在view中不能设置。目前还不支持structure字段context属性的更名。注意在VIEW中的BUTTON中,不要直接在VIEW中写代码更改屏幕中元素的值,而是应该在controller中更改值,方法是在controll中定义method,然后在view的layout的outline中,选中button,右键在出来的菜单中选择applytemplete,在此定义action并在后续步骤中选择controll中定义的方法。当然也可在view中action中写代码,但这种方法应该是违反了mvc的原理,即在view中直接更改了元素的值,理论上view应该只用于显示数据,而不应该操作数据。即在controll中定义方法,然后在view中通过wdThis.wdGet{StartComp}Controller()去调用controll中的数据,如下例所示:其中{}中即为Compontent的名称。publicvoidonActionInitialValue(gmodel.api.IWDCustomEventwdEvent){//$$beginActionButton(-750211490)wdThis.wdGetStartCompController().initPersonInfo();//$$end}View的layoutCompositeUIElement字段属性在controller的context中,可将字段属性的calculated属性设为true,则该在controller中可在该字段的set/getter方法中写代码操作该字段的值,在该代码中修改该字段的值后,在mapping过的view中可直接显示该字段的值Message3种类型:Standard,Warning,Error在IMessage{Nc}中作为常量存在,如component为StartComp,则该类名为IMessageStartComp.访问方式:IWDTextAccessortxtAccessor=wdComponentApi.getTextAccessor();Stringmsg=txtAccessor.getText(“{MessageKey}”);IWDMessageManagermsgMgr=wdComponentAPI.getMessageManager();将Message与UI元素关联:抛出错误信息:wdComponentAPI.getMessageManager().raisePendingException();在NWDS中在deploy时,经常会提示服务不可用,但经查系统,发现服务端无任何问题,此时,在NWDS中将SAPASJAVA中的服务重配即可。在MESSAGEPOOL中维护好message后,如下:其中text中的{0}{1}即为需要传递的参数,从0开始数。然后要在程序中抛出该消息,有两种方法:1.IWDMessageManagermsgMgr=this.wdComponentAPI.getMessageManager(); IWDTextAccessortxtAcc=this.wdComponentAPI.getTextAccessor(); Stringmsg=txtAcc.getText("S10001",newObject[]{"begindate","enddate"}); msgMgr.reportException(msg);2.IWDMessageManagermsgMgr=this.wdComponentAPI.getMessageManager(); msgMgr.reportMessage(IMessageStartComp.S10001,newObject[]{"begindate","enddate"});上述示例代码中加入的newObject[]数组即为需要传递到message中的变量值,与ABAP类似。将消息与屏幕上的某个元素关联:动态设置value-helpSVS设置selectedKey属性EVS设置value属性OVS动态设置参见下图动态编程,即动态设置context1.动态创建context此处定义的attribute,如需在UI的元素中使用,则其类型必须为sapjavadirectory,即上图中的ddic:com.sap.dictionary.string等,具体可用类型在在context中定义时可看到;也可用java的类型,如java:java.lang.String,但此种类型不能用于UI元素。2.动态设置UI元素如下例:publicvoidwdDoModifyView(gmodel.api.IWDViewview,booleanfirstTime){//@@beginwdDoModifyView //setrequesternameandcounty try{ IWDClientUseruser=WDClientUser.getCurrentUser(); StringBuffersb=newStringBuffer(""); if(user.getLastName()!=null) sb.append(user.getLastName()); if(sb.length()>0&&user.getFirstName()!=null){ sb.append(","); } if(user.getFirstName()!=null) sb.append(user.getFirstName()); Stringcountry=""; if(user.getLocale().getDisplayCountry()!=null) country=user.getLocale().getDisplayCountry(); wdContext.currentRequesterElement().setRequesterName(sb.toString()); wdContext.currentRequesterElement().setRequesterCountry(country); }catch(WDUMExceptione){ //donothing }//@@end}设置动态actionaction的参数mapping外部model数据RFC/BAPIJA312:AdvancedWebdynproforJAVA2009-4-21设置弹出式窗口OVS接口:IWDOVSDialog、IWDOVSSuggester、IWDOVSController、IWDOVSProvider、IWDWindow、IWDExternalControllerInterface、IWDComponentUsage可将context中的属性的数据类型直接设置为某个JAVA类,如在context中创建一个dialog的属性,并将该属性的数据类型设为gmodel.api.IWDOVSDialog,表示该属性可实现对话框的打开、关闭等操作。其中IWDOVSController传递给IWDOVSDialog、IWDOVSSuggester,用于控制dialog与webdynpor的数据通讯IWDOVSProviderWebDynprousesthisinterfacetogetacomponenthandlingtheOVS.WebDynproonlyneedstheinterfacewindowofthiscomponenttosupplythepopupwindowIWDExternalControllerInterfaceCommonInterfaceforallExternalInterfacesofControllers.Important:AllmembersinthisinterfaceMUSTbeprefixedwith"wd"toavoidcollisionswithapplicationcodeIWDComponentUsageAPIofcomponentusages.Acomponentusageprovidesaccesstotheinterfacesofanembeddedcomponentandmanagesthelifecycleofanembeddedcomponentinstance.消息处理在context中处理高级CONTEXT1.calculated属性2.supplyfunction3.disposefunction4.recruive-contextnode5.typedcontextAPI(howtoreducememory)动态UIModelinterfaceStructingapplicationdependencity两种选择:createOnCommandManual程序员控制structing附录实用东西查看日志通过Administrator界面查看,且可定制日志的显示方式等。(NWA)即为NWAdministratorhttp://<server>:<port>/nwa按照如下链接进入:Problemmanagment-->logandTrace-->LogViewer-->selectLast24hours.如下图所示:但据所观察,该日志的参考意义不大,无法从该日志信息得到具体又实用的提示信息,如上图所示为流程启动时,发生错误,提示根据日志ID查看,但查看该日之后,无任何有帮助性质的内容。ABAP层次的WEBSERVICETCODE:WSADMINTask层次的某些属性可在Humanactivity中覆盖如多个不同的humanactivity中需要共用某个task,但这个共用的task有些属性在不同的humanactivity中有不同的属性,此时,即可在不同的humanactivity中指定这些可覆盖的属性,这些属性包括:PriorityPotentialandexcludedownersActivationtimeStartdeadlineCompletiondeadlineExpirationtimeWhenyouassignatasktoahumanactivity,youcanoverridethedefinedtaskattributesonthehumanactivitylevel.Youoverridetaskattributesonthehumanactivitylevelwhenyouwanttousethesametaskindifferenthumanactivitiesintheprocessmodel.Overridingthetaskattributesmeansthatyoudefinedifferentsettingsforthetaskattributesforeachhumanactivityinsteadofcreatinganewtaskforeachhumanactivity.Process的webservice每个流程都定义为一个异步的webservice,service的接口名称即为开始事件中的名称。需要在WSA(WebServiceNavigator中去找这个webservice)needtofindtherightwebserviceintheWSNavigator.EachprocessisexposedasaWebService.Theserviceinterfacenameistheoneusedinthestartevent.若以同步的方式在页面上启动webservice,则会抛出一个exception“”调用webservice在NWCE7.1EHP1中,只能通过WebService来启动流程YoucancallawebservicewitoutSRifyouhavethewsdlfileandwsdllinkforthewebservice.
Youcangetthewsdllinkforawebserviceinthet-codewsadmininSAP.
OnceyouhavethewsdlforwebserviceofSAP,createalogicaldestinationforthatserviceinthewebservicesnavigator.youcandothefollowing:
-IntheProjectExplorerrightclickonServiceInterfacestoimporttheWebServiceDefinition(ImportWSDL)
-Chose"RemoteLocation"andentertheWSDL-UrlofyourWebservice
-Followthewizard...
-CreateanautomatedactivitywithintheProcessComposer
-AssigntherecentlyimportedServiceInterfaceIfyouhavethewsdl,youcanimportitintoyourBPMprocessdirectly.
Thenuseitinautomatedactivitywithlogicalname.Laststep,youhavetoimplementthelogical
nameinNWA.Checkitout.WSDL文档结构WSDL文档是利用这些主要的元素来描述某个webservice的:元素定义<portType>webservice执行的操作<message>webservice使用的消息<types>webservice使用的数据类型<binding>webservice使用的通信协议一个WSDL文档的主要结构是类似这样的:一个WSDL文档的主要结构是类似这样的:<definitions><types>definitionoftypes</types><message>definitionofamessage</message><portType>definitionofaport</portType><binding>definitionofabinding</binding></definitions>WSDL文档可包含其它的元素,比如extension元素,以及一个service元素,此元素可把若干个webservices的定义组合在一个单一的WSDL文档中。WSDL端口<portType>元素是最重要的WSDL元素。它可描述一个webservice、可被执行的操作,以及相关的消息。可以把<portType>元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。WSDL消息<message>元素定义一个操作的数据元素。每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。WSDLtypes<types>元素定义webservice使用的数据类型。为了最大程度的平台中立性,WSDL使用XMLSchema语法来定义数据类型。WSDLBindings<binding>元素为每个端口定义消息格式和协议细节。总结Porttype中的参数Multiplicity定义在porttype的opertion的参数中,可以定义参数的multiplicity类型,若设为1…N或0…N,在在启动流程时,该参数的数量可动态创建。如下图所示:如何检查webservice是否可用?Firstofallmakesurethattheprovidingsystemisupandrunning.thenCheckbyWSDLLogontotheWSNavigatorasasystemadministrator(http://host:port/wsnavigator ).SearchforServiceInterfacesbyWSDL.CopytheWSDLURLintotheinputbox&click'Next'.Selectthecorrectoperation&click'Next'.Specifytheinputparameters&click'Next'.Optional:Specifycorrectcredentialsifpromptedfor.Checkiftheresultisreturnedcorrectlyorifsomeerrormessagesweresuppliedbythebackend.orCheckbyLogicalDestination:LogontotheWSNavigatorasasystemadministrator(http://host:port/wsnavigator ).SearchforServiceInterfacesbyLogicalDestination(theoneusedintheAutomatedActivity).Selectthecorrectone&hit'Next'.Selectthecorrectoperation&hit'Next'.Specifytheinputparameters&hit'Next'.Optional:Specifycorrectcredentialsifpromptedfor.Checkiftheresultisreturnedcorrectlyorifsomeerrormessagesweresuppliedbythebackend.生成的接口若compontent名称为AAAA,则若定义了该component的componentinterface,则会生成一个一个接口,接口名为IExternal{AAAA}Interface,给接口继承自标准接口IWDExternalControllerInterface,参见8.1.1实用类、接口ClassWDValueServices\o"classorinterfaceinjava.lang"java.lang.Objectgmodel.api.WDValueServicesHelperclasstocreatesomespecialvaluesets.ThisclassispartoftheWebDynproAPI,soap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版餐厅与旅行社旅游服务定制合作协议2篇
- 2024年甲方乙双方关于停车场车辆损害赔偿合同
- 2024年生猪运输保险及赔偿合同模板3篇
- 二零二五年健身房健身教练职业资格认证合同3篇
- 2024年物流仓储服务与货品销售合同
- 2025年度白酒行业数据分析与应用合同3篇
- 2024年网红直播带货广告合同3篇
- 2025版服务员招聘与劳动合同解除及竞业限制合同3篇
- 2025版货物包装质量保证合同
- 2025版假离婚协议书与婚姻登记机关备案及后续婚姻关系恢复合同3篇
- 重庆气体行业协会
- 公司走账合同范本
- 获奖一等奖QC课题PPT课件
- 企业中高层人员安全管理培训--责任、案例、管理重点
- 人教版小学三年级数学上册判断题(共3页)
- 国际项目管理手册The Project Manager’s Manual
- 小学五年级思政课教案三篇
- 高强螺栓施工记录
- 一亿以内的质数表(一)
- (完整版)倒插、翻口、评点文件
- 病理生理学缺氧
评论
0/150
提交评论