Web Dynpro是什么.docx
- 文档编号:5817953
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:10
- 大小:320.17KB
Web Dynpro是什么.docx
《Web Dynpro是什么.docx》由会员分享,可在线阅读,更多相关《Web Dynpro是什么.docx(10页珍藏版)》请在冰豆网上搜索。
WebDynpro是什么
WebDynpro是什么?
基于MVC设计模式的SAPWebDynproforJAVA是在开发基于表单的用户界面中的具有革命性的意义。
它与SAP以往的设计范例完全不同,代表了开发基于Web的ERPApplication取得的重大突破。
WebDynpro的双重目的:
>尽可能避免对UI层进行编码;
>允许业务应用程序以独立于后台业务平台,以及前端表现层的形式而存在。
为了开发用户界面,WebDynpro提供了一个公布的元模型,这样就直接导致几乎无需编写程序代码。
WebDynpro与其他Web开发工具的区别:
从开发者的角度而言,最基本的不同点在于:
在其他开发工具中(如JSP),是以Web页作为开发单位,而且您的应用程序由一套已经被链接的页面组成,这些页面共同提供所需要的业务功能。
然而,在WebDynpro中,是以“component”为开发单位的,这里的component是指一套相关的Java程序,这些程序一起形成可重用的业务功能。
一个component可以没有或者具有多个视图。
从这一点上,WebDynprocomponent可以认为是相关Web页的聚合。
WebDynpro应用程序的开发周期:
◆ 分析阶段
◆设计阶段
▲架构设计
▲详细设计
◆实施阶段
在线资源:
WebDynproforJava (SAP公开)
(需要用户名/密码)
◆ 分析阶段
在分析阶段,应确定并描述应用程序的业务需求。
在这一阶段,仅需考虑是“何种”业务流程,而不要考虑“如何”设计此流程。
此阶段的成果物为分析模型,使用非技术人员可以理解的语言完整准确、统一地描述业务需求。
由于分析模型不考虑业务流程是“怎样”的,所以此阶段进行的描述与任何特定技术(比如WebDynpro)无关。
◆ 架构设计阶段要解决的问题:
◎为WebDynpro开发组件(DCs)建模:
△需要哪些开发组件来交付所需功能?
△是否需要开发新的开发组件?
是否可以重用现有开发组件?
△要使用开发组件的哪些层次结构排列?
△个开发组件之间存在哪些相关性?
△哪些公共部分已发布?
◎为WebDynpro项目建模:
△WebDynpro项目由哪些已经使用的WebDynpro组件组成?
△哪些WebDynpro组件包含其他WebDynpro组件的接口视图?
△WebDynpro项目中使用哪些模型?
△哪些WebDynpro组件使用哪一模型?
△WebDynpro项目中定义哪些WebDynpro组件接口?
△哪些WebDynpro组件使用哪些WebDynpro组件接口?
△各个WebDynpro组件之间存在哪些调用方法?
各个WebDynpro组件之间使用哪些结果?
△WebDynpro组件之间存在哪些上下文映射?
◆ 详细设计阶段要解决的问题:
◎为WebDynpro开发组件(DCs)建模:
△WebDynpro组件由哪些视图组成?
△WebDynpro组件中使用哪些自定义控制器?
△WebDynpro组件内需要定义哪些方法和事件?
△在WebDynpro组件内的哪些控制器中定义上下文元素?
△在WebDynpro组件内定义上下文元素?
△在WebDynpro组件内的哪些控制器中定义上下文元素?
△绑定或者映射哪些上下文元素?
◎为WebDynpro窗口建模:
△应如何安排视图?
△各视图之间存在哪些导航路径?
◎为WebDynpro视图建模:
△视图中包含哪些用户界面元素?
△应如何安排视图的用户界面元素?
△用户界面元素与哪些Context绑定?
△用户界面元素绑定到哪些Action中?
一旦解决好上述问题,就可以使用NWDS中的图形窗口和组件建模工具开始构建应用程序了。
SAP建议的命名规范:
应用程序(Application) ={a}App
组件控制器(ComponentController) ={c}Comp
自定义控制器(Customercontroller) ={cc}Cust
组件接口视图(Componetinterfaceview) ={w}InterfaceView
任何类型的控制器(Acontrollerofanytype)
模型(Model) ={a}App
内向插件(Inboundplug) ={pi}In
外向插件(Outboundplug) ={po}Out
项目(Project) ={pr}
独立的组件接口(Standalonecomponentinterface)
独立的组件接口视图(Standalonecomponentinterfaceview)
组件使用(Componentusage) ={p}Inst
视图(View) ={v}View
视图集(ViewSet) = {vs}Viewset
窗口(Window)
独立J2EE引擎的第一个实例称为JC00。
JC表示已安装Java引擎,00则表示这是第一个实体。
如果在同一计算机上已经安装了独立J2EE引擎的另一实例,则它的实例标识通常为JC01。
如果J2EE引擎作为插件安装到ABAPWebAS中,则实例标识可能类似于DVEBMGS00,其中,每个字母表示已安装一个特定的流程类型。
00则表示此计算机中的第一个实例。
,设计时的上下文
每个controller都有且只有一个具有层次结构的数据存储结构,这一结构就称为Context。
此Context所持有的数据仅针对controller的lifecycle而存在。
一旦终止controller,则其Context所保存的所有数据均会丢失。
Context是包含node与attribute的实体的层次结构安排。
上下文节点(Node)是主要的抽取类,用来将运行时的数据存储在WDF内。
node是数据存储实体,在此实体内,系统会维护元素结合。
通常由缩写{cn}代表上下文节点,{chn}代表子节点。
属性(attribute)是上下文层次结构中的一个允许有子实体的实体。
通常用{ca}代表。
为任何节点定义的子节点集形成一个单元,这个单元就称为“元素(Element)”
二,运行时的上下文结构
在上下文的运行行为中,有两个特殊的节点属性起到关键作用,这两个属性分别为:
cardinality和singleton.
基数(cardinality)属性
是由值对组成的,它控制运行包含的元素{cn}的最大数和最小数。
基数属性拥有以下四个可能值:
□0..1:
0 或者1个
□0.. n:
0 或多个
□ 1..1:
0 仅1个
□ 1.. n:
1 或多个
单例(Singleton)属性
单例属性对子节点及父节点之间的关系有着至关重要的影响。
如果在设计时声明{chn},那么根据此节点是否为单例节点,为此节点而生成的接口将完全不同。
参考:
如果节点的子节点设置为Singleton为true,则节点与子节点之间是一对多的关系。
反之,则是一对一的关系。
如下图所示:
上图可以看出,节点SalesOrders中的元素与每个LineItems节点之间关系是1:
N。
如果将节点LineItems更改成单例,那么无论父节点包含多少个元素,父节点与子节点之间是1:
1的对应关系。
一,作为runtime声明结果而生成的类
创建上下文节点或者属性时,NWDS会默认创建一套类和方法,以表示上下文实体。
如果您选择仅通过通用接口来访问上下文,那么可以设置此节点的typedAccessRequired属性为False,即可关闭此类API的生成。
生成的类
方法
上下文节点
IPublic{nc}.I{cn}Node
I{cn}Elementcreate{cn}Element
I{cn}Elementcurrent{cn}Element
I{cn}Elementget{cn}ElementAt(int)
voidbind(I{cn}Element)
I{chn}Nodenode{chn}()
I{chn}Nodenode{chn}(int)
上下文元素
IPublic{nc}.I{cn}Element
Stringget{cn}Name()
voidset{cn} Name(String)
I{chn}Elementcurrent{chn}Element()
I{chn}Elementcreate{chn}Element()
I{chn}Elementget{chn}ElementAt(int)
I{chn}Nodenode{chn}()
仅当{cn}有子节点{chn}时,系统才会在“上下文节点”下创建粗体名称方法。
仅当{chn}是与{cn}相关的非单例节点时,系统才会在“上下文元素”之下创建粗体的名称方法。
二,递归节点
如果您想在上下文内表示递归数据结构,那么您需要使用递归节点。
典型事例就是文件系统。
目录可以包含文件或者子目录。
每个子目录级别均可重复这一定义。
如下图所示。
自从小不点让我帮忙解决JCO问题,至今应该半月有余,期间查了无数的资料,到今天为止,终于搞定了JCO的messageserver问题。
开始是无法找到SPACELogonGroup,解决过程中,经历了服务器无法启动,被锁定管理员帐号,启用紧急用户sap*,回复UME,学会查看日志,学会在ECC中使用T-code,一系列的问题~~
今天终于解决了困扰我多日的问题给解决了:
现象:
********************************************************************************
com.sap.mw.jco.JCO$Exception:
(102)RFC_ERROR_COMMUNICATION:
ConnecttomessageserverhostfailedConnect_PMTYPE=BMSHOST=shsapsrvGROUP=SPACER3NAME=ITIMSSERV=sapmsITIPCS=1ERRORGroupSPACEnotfoundTIMEMonAug2516:
41:
002008RELEASE700COMPONENTLGVERSION5RC-6MODULElgxx.cLINE4299DETAILLgIGroupXCOUNTER1
********************************************************************************
解决方案:
==========================================================
SMLGisthetransaction.
ThereisnormallyatleastonegroupcalledSPACE.
Logongroupsarenottiedtousers-they'retiedtothedifferentinstancenumbersthatmakeupyourABAPsystem.
TrypublishingtheABAPdetailsagainwithRZ70.
==========================================================
图解:
首先使用SMLG(MaintainLogonGroup)事务码
第二步,可以看到我们的MessageServer的logonGroup没有被设定。
第三步:
设定好Group,最后效果如下:
现在回到:
http:
//localhost:
50000/webdynpro/welcome/Welcome.jsp
来设定JCO了~~
JCo的安装
・
・把librfc32.dll放到C:
¥WINNT¥system32目录下
・在JavaProject中,把sapjco.jar增加到Classpath、再使用importcom.sap.mw.jco.*即可。
■ Sample
packagecom.abeam.jco;
importcom.sap.mw.jco.*;
publicclassTutorialConnect1{
JCO.ClientmConnection;
publicTutorialConnect1(){
try{
//Changethelogoninformationtoyourownsystem/user
mConnection=
JCO.createClient(
"800",//SAPclient
"user01",//userid
"password",//password
"EN",//language
"ides1",//applicationserverhostname
"00");//systemnumber
mConnection.connect();
System.out.println(mConnection.getAttributes());
mConnection.disconnect();
}
catch(Exceptionex){
ex.printStackTrace();
System.exit
(1);
}
}
publicstaticvoidmain(Stringargs[]){
TutorialConnect1app=newTutorialConnect1();
}
}
总结一些常见问题,不断更新中......
问题:
页面上Button的跳转开发流程
① 【Actions】tab中,建立ActionEvent
② 【Layout】tab中,为ButtonUI的onAction时间设定actionevent
③ 【Implementation】tab中,Viewcontroller的actioneventhandler处理
问题:
用TextView表示文字列
方法一:
从ViewController的Context表示
在TextView的text属性中,设定ContextTextViewStr,在View的wdDoInit中代码如下:
wdThis.wdGetContext().currentContextElement().setTextViewStr("HelloWorld");
方法二:
ViewController的wdDoModifyView中,直接设定Text属性
if(firstTime){
IWDTextViewtxt=(IWDTextView)view.getElement("TextViewStr");
txt.setText("ThisiswrittenbywdDoModifyView");
}
问题:
给节点添加元素
IUserPreferencesElementuserPrefEl=
wdContext.nodeUserPreferences().createUserPreferencesElement();
wdContext.nodeUserPreferences().addElement(userPrefE1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Web Dynpro是什么 Dynpro 是什么