Hipay系统自助终端页面开发流程和规范06版_第1页
Hipay系统自助终端页面开发流程和规范06版_第2页
Hipay系统自助终端页面开发流程和规范06版_第3页
Hipay系统自助终端页面开发流程和规范06版_第4页
Hipay系统自助终端页面开发流程和规范06版_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hipay系统自助终端页面开发流程和规范一:Hipay页面开发1名目结构:1.1:顶层名目结构图(1)所示App licatio ns:名目里放着我们创建的应用板块。 Framework:里是Hi pay系统应用,包含实体和服务板块 Base:里放着启动,容器和配置和组件加载等公共类。D FrmtvorkData:是Hi pay内建的数据库。$ I iaipLicitiantj1* bar6或 5屯=t. j 2ki p iy. I at; J轲IHS-DDS 批处理文件吃 K& 1 KBUogs: 是系B日志文件夹。 iHaysbat是启动文件|图(1)图(2)所示1.2: applicat

2、ions 名目Accounting :帐务治理,支付信息,发票等。Con te nt :内容治理,调查等。Ecommerce :电子商务应用。Order :订单治理。Party :人员组织治理Securityext :安全治理拓展P roduct :产品治理。Cmposent-load.xm/。板块加载配置文件pixtr-L J iEuid.zLproiKal谕 razeor hrn艺刊i:cwr-MieM-loil jerlXWL2 tB图(2)1.3: ecommerce 名目 图(3)所示Src : java源文件。Config :配置文件,要紧是多语言的配置文件Data :系统运行时需

3、要导入的数据文件Scr ip t : Hip ay 系统 mi ni-la ng 文件(简单 Java 方法) Temp lates :模板页面Weba pp : web服务需要用到的页面和脚本Widget :用xml描述的页面画1缽1 :用ant工具编译src文件夹的源文件生成的oSSes文件和jar包放在build中。_LgntSton e-co mponn t/x帘空琏子商务板块加载(?* build, xmlI三 XML pQcmienl.|三地址 )Ihip矿icMGpplimtiQrs图(3)匸J catalog.1.4: webapp 名 目iWebapp下有一个应用文件夹为bi

4、i辽 d.艾nil XML Docunentgi ants tone-comp o -. XML Document配置文件。I二)Hid事 tcontento customerecommerce,其名目结构如图曲(4)所main ftL FTl文件示: shofpinsistH 1 WEE-IHF除了 WEB INF文件夹以外, 件差不多上以样为后1EB其他的文件差不多上页面文件, freemaker模板页面。in KE图(4)1.5: WEB INF名目如图(5)所示Actions:栄统脚本文件夹_,beanshell脚本地址迦to F :hipa;ji clcVappli cati cii

5、isecommercehebappecommerceWEB一HHF contr6ller.xml :流程操纵器_r.xmjs:网站参数设置iOTitr ollftr. ihl KHL Do cum ent 66 EBxab. wulJML Document E KB.图,地ill: Q? aF Atij s厂ietc、ajpliatiunsSewsbap?号wmnercWES-H7acti,ns,1.6: actio ns 名目厂如图(6)二厂八;課-/ cataloe contentL其文件结构和图(期 中的ftl页面结构是对应的。j例如讲显示购物车信息的页面showcart.肚放在图(4)

6、cart文件夹中,则对应的脚本showcart.bsh放在图(6)的cart文件夹中,如此做不是必需 c_e&rieisi DU- baherror, tzh 、jgetLmmigtz. tm I丄SLivbEh的,一 一一h f cistorar而是规范的,易于爱护的。-oremain. bsk &SH文件41 KB介、邂冷爻f婪图(6)iS:龙 I F a JDBSH交洋 KB1.7: widget 名目Widget是把ftl页面和bsh脚本组合起来供前端显示的工具。它用xml语言和特定标签描述页面和页面,页面和脚本之间如何组合和定制。Commo nScree ns.xml是公共模板定制页

7、面CartScree n.xml是购物车有关页面定制CatalogScree ns.xml是产品,名目的显示的页面定制屈qstomerScree ns.xml是有关调查,寻价和客户方面的页面定制 地4n 口兀山ipwjriM占吐ion认MtmmwQ讥vid淞tConlentScree ns.xml是跟内容治理有关的页面定制W 陀.科| _片 11 1 n-I广弓创 n J U1z i;artScrten3.iiBLOrderScree ns.xmhiB HI ai lECat dogptrTeen5.inir b at lio gp ere ens. ml = 再跟订单和支付有关的页面定制 j

8、_r 二_fEcommerceSetupbsh是公共 模板:加二 Cr.UM;er*si5 ml 怙CusfMtrSertu!. nmM KML Blocijli-r.t芝 IWL. Dsnuifrit 三一J5 E0C orir 0113 zre ens. olIML BotTjnent11阳图(7)其他板块的名目结构和ecommerce是相似的。2开发内容2.1:对widget组合页面要熟练把握。Web Widget是轻量级的 Web应用程序,为使用者提供一键式的服务。它通常被设计为具有特定的功能,如提供天气、股票、拍卖等的信息。它与网页一样,使用标准的 Web技术开发,如XHTML,CS

9、S, javascript等。从这方面看,Widget是脱离扫瞄器UI运行的网页。Java = CoKBonScfeezLS. zkI = Eclxpse PlartocM諸eansheii脚本预备数据盂fsemaker页面显示数据具正是 组合脚本和页面的,它规定了哪个脚本为哪个页面组织数据,即起到绑定脚本和页面的作用,同时也能够定义某些变量供页面使用,所以有些页面 士冃 rrr.inn?f能够没有脚本,简单的来讲昆搁競确实是用户要求页面,它把变量,标 签和freemaker模板语言组合生谜畫HtML页面,当用户要求时就发送给用户 Jl:Dean3r.ell扫瞄器。3crLPt LocatL0

10、1l= COrpoIieEt:/WE&sefTK3E&S6/VID-心口匚 1 tltl3门Q加恥&血tlEHD3ET心Widget用到的标签在framework / widget / dtd里的xsd文件里,如图htI- tcttlate lotatccfcpcnejit:/Tl!fEaee/wch时ip/TSSBae/inclale打hciadm)i/htf丄卜WUIiJa 亠回 A=-巾WKJT西虚二劈专,-idecorsrt or-aect lcm-inc Lude n&ue二 性口与灯、图(8)在eclipse开发环境下,有代码预示的功能,如图(9)-Thtml-tecTp late

11、 Loe at i dti= ccwpc nent : / /TTSEtse/ vebp p / TTS EaBe/inclarfEsfaotBc.fcWp p L&2ortnspec ti Lc图(9)eSY/seutiOD/RCTppn图(10)图(10)的 !-的内容是注释,从图中的注释清晰地介绍的用widget如何定制一个模板。screenScreen标签对应的是前端要求的页面,页面的名称name属性是必须的。 sectionScreen 下有一个唯独的 section ,section 下包含 condition , actions , widgets 禾B fail-widgets

12、 标签。 condition如果 condition存在,同时condition是true则页面显示 widgets内容, 否则显示 fail-widgets。如果 condition 不存在,则 fail-widgets 标签也就没有必要。以下是对 attrName 非空的判定: 是检查当前用户是否 拥有对order的VIEW (查看)的权限 是把 变量跟某个常量进行比较,操作包括 less greater equals less-equals greater -equals not-equals contains ,分别表示,小于 大于 等于 小于等于 大于等 于 不等 包含。2是把两个变

13、量进行比较,type类型值能够为Float Dou ble Integer Long Boolean String PlainString Date Time Timestamp B Obj ect,如果没有type默认为String。and 是对多个条件进行与操作 or 或操作 xor 异或 not 非 其他的标签请查看图( 8)所示的文件中内容。 actionsactions 是加载页面之前的动作。 常用的动作是 :set :set 定义一个变量并赋值 field 的值确实是变量名 value 是变量值; script :script加载一个beanshell脚本文件,location是脚

14、本的位置,xyz。位置以” component:/xyz/ ”开头,意思是在 xyz 那个板块下, xyz 是 在Hi pay的安装名目下的app licatio ns和framework下的第一层子名目文件 夹,如图( 2)得文件夹都能够作为那个地点的property-map :prop erty-map加载一个属性文件,resource的值是文件的名称,文件后 缀为properties可省略不写,关于多语言,例如要加载简体中文配置文件TMSBaseUiLabels_zh_CN.properties和美国英语配置文件 TMSBaseUiLabels_ en_US.properties并把配置

15、文件的键值对放在一个 Map即uiLabelMap中, 作为全局变量是用,只需要如此一行代码:这行代码会加载所有各种语言的配置文件, 然后按照用户的locale,读 取当时当地的语言配置。还有一点需要注意,如果 uiLabelMap 在 TMSBas eUiLabels_zh_CN.properties中找不到键值,它会去 TMSBaseUiLabels_zh.pr operties查找,如果没找到,则连续查找 TMSBaseUiLperties,如果 仍旧没有值则返回键本身,如果有则返回文件中定义的值;widgetsWidgets 是对页面的加载和布局。常用的加载页面的方法

16、包括1:platform-specificcom ponen t:/TMSBase/weba pp /TMSBase/i ncludes/header.fti 为要加载的 文件路径和名称。即TMSBase那个板块下webapp文件夹的子文件夹TMS Base下的子文件夹includes下的header.ftl文件。2:include-screen这行代码的意思是加载一个页面,那个页面是在 TMSBase那个板块下 的widget文件夹下的bcd.xml文件里定义的abc页面。abc是screen的na me的值。3:decorator另外,模板常用到这行代码 意思是页面的body部分是空的,其

17、他页面使用以下代码使用那个模板, 容器里面能够加载其他页面,这类似于 HTML 中的 DIV 层。以下代码是合法的: /i nclude-scree n疥口 成效是等同的,其他类似。5: widget 中的 section section widgets 中能够放置多个 6:其他 加载一个图片能够使用 页面上显示一行文字可用其他的标签请查看图( 8)所示的文件中内容。fail-widgets等同于 widget 标签,是条件不满足时给用户显示的页面。2.2:对 freemaker 模板语言的熟练把握2.2.1:各页面功能及存放位置件夹shofpinistr面文件后缀为.晡Ffme ftl :中

18、.文仲,1 KBsmtin. tlFTL文件存放在图(4)所示的名目中,ffiiiftup. ftl 财FTL文佯10 O匚3 locin ftlO ftl立件webapp下的图(4)自助终端目前用到的页面中有图(4)中的部分页面:main.fti是主页面,用户返回时会到此页面,该页面左边显示分类,右 边显示推广产品。mainframe.ftl框架页面分三个部分框架上面部分占99.98%是用户操 作的业务页面,框架中间占0.01%,是用来加载终端插件,框架下部是用来 加载加密插件和进行加密验证的。mainup.ftl是语言选择页面。login.fti是用户刷卡登陆页面。cart下的showca

19、rt.ftl页面 (购物车页面)catalog下的sidedeepcategory.fti (终端屏幕的左边名目翻页页面) customer下的survey.fti (调查页面即用户的密码,号码输入页面) error下的error.fti(错误页面)in cludes 下的:header.fti模板头部导航栏加载样式表定制页面超时脚本footer.fti模板底部留个按钮hidebottom.fti加载终端插件,是页面底部框架固定不动的部分,关于 不同的终端,申明和条用插件的方式可能不同,现在需要编写多个厂家的底部框架页面。jiami.fti工行自助终端用到的加密插件页面。order下的chec

20、kouto ptio ns.fti该页面显示正在支付中,请用户等候,该页面向后 台传递了用户的支付方式,物资的运送方式,联系方式等等重要信息,不 可或缺。能够taloplete.ftl该页面是支付完成 址择打印凭条。kfyjv jr i:9 I 站0 KDF外还用到了 order板块的webapp下ordermgr的字文件夹entry的ca g的部分文件,如图矽4ych ftl9 EBFTLi# :i EDnet. ft!1 EB,显示支付纟吉果,成功则用户 J 茁plad.4 IqiII?. fJ.PTL丈件C刃1 脣 proi-oct. ftl o托 priliKideiaiL. f 辽1

21、2 KBprodizctEurriary. ftl图(11)calldetaillE.ftl是天一终端的IE扫瞄器在进行银行卡打电话业务时显 示的页面。calldetailNE.ftl是芙蓉终端mozzila扫瞄器银行卡打电话页面 category.ftl是显示产品分类的页面其指向categorydetail categorydetail.ftl是产品分类的详细信息页面其指向productsummary.ftlp roductsummary.ftl是某一个分类下所有产品的简要介绍页面,在终端 上确实是显示在屏幕右边的四个按钮上的内容。Product.ftl是产品页面其指向productdeta

22、il.fti页面Productdetail.ftl页面是按照对产品的配置的详情页面来展现产品。例 如银行卡打电话那个产品确实是配置成了calldetail.ftl ,如果没有配置则默认显示 Productdetail.ftl 页面222:常用的页面标签以下例子中能够见到常用到了页面标签。$uiLabelMap.chooseLanguage#-$uiLabelMap.firstPagedownInformation-input type=button id=$styleValue class=buttonImgClass value =$uiLabelMaplanguage.descriptio

23、n?if_exists name=$index*2 onclick=window.location=$language.requestUr i?if_exists;/ 注释 注释的内容不能显现 - 字样#-$uiLabelMap.firstPagedownInformation-要注意区分 HTML 页面的注释 赋值 assign$index ,将会显示 条件判定if else使用时以尖括号和#开头 并以 结尾b)A比B大A 不比 B 大 列表 listsizeindex设置变量 页面使用变量时用 Chinese ,English

24、,French #assign languagesList = languagesList size = $languagesList?size $language 位置是 $language_index , 则最后显示的结果是:Chinese位置是0 , English位置是1 , French位置是 2, 专门处理 如果变量值没有定义页面就会报错,加上以下一些判定,能够排除页 面上的错误:exists if_exists has_content defaultexists 是对某个变量进行判定,返回值是布尔型 true or false ;if_exists 返回是字符串,对

25、某个变量进行判定 如果值或引用不存在则 显示空串,相当于“” ;has_content 对变量进行判定,如果值或引用存在同时不为空时才为 tr ue 否则为 false。default 如果变量无值就设定默认值。$someparametert$someparameter$someparameter?if_exists$someparameter?default“( defaultValue”) 其他 关于自助终端页面目前常用确实是上面介绍的这些标签 更多请参考 FreeMarker 设计指南 .doc2.3:对beanshell脚本的熟悉Beanshell是宽松的Java,使用

26、变量前无需定义,它完全兼容Java语法。Fit页面负责显示后台传来的数据,对页面来讲beanshell脚本是重要的 后端数据源,在bea nshell里能够直截了当引用request变量和con text变量;通过request的get Parameter(“ name”)方法bsh脚本能够猎取前端页 面传来的参数通过context的put( “name” ,value)方法bsh脚本能够把通过处理的数 据送回前端页面显示。页面使用 $ name 即可显示。request 能够得到 delegator 和 dispatcherdelegatorbsh脚本中得到delegator:delegat

27、or = request.getAttribute(delegator);delegator 是实体引擎对数据库增删查改的代理器; 数据库查找按照主键查找:Bsh 脚本中最常做的情况是到数据库中查找数据供前台页面展现。 value = delegator.findByPrimaryKey( 数据库表名 , inMap ); inMap 放置主键键值对 . UtilMisc.toMap(name,value) 方法是把键值 对放入 Map 中例如:orderHeader=delegator.findByPrimaryKey(OrderHeader,UtilMisc.toMap (orderId,

28、 1000);意思是在表 OrderHeader中查找主键(orderld)等于1000的记录,查 出后赋给 orderHeader。按照某几个字段交集查询:valueList = delegator.findByAnd( 数据库表名 , inMap );orderHeader=delegator.findByAnd(OrderHeader,UtilMisc.toMap(statusld, APPROVE , grandTotal,200);意思是在表OrderHeader查询状态是APPROVE同时交易金额是200元的记录列表。按照某几个字段并集查询:valueList = delegato

29、r.findByOr( 数据库表名 , inMap ); orderHeader=delegator.findByOr(OrderHeader, UtilMisc.toMap(statusId, APPROVE ,grandTotal,200); 意思是在表OrderHeader查询状态是APPROVE或者交易金额是200 元的记录列表。按照条件查询:delegator.findByCondition(数据库名,条件列表,需要查询出来的字段 列表, 字段排序列表 )需要查询出来的字段列表如果设置为 null 则默认查出所有字段。创建条件例如产品号等于 10001:Condition1 = ne

30、w EntityExpr(productId, EntityOperator.EQUALS, 10001);状态是 ACTIVE :Condition2 = new EntityExpr(statusId , EntityOperator.EQUALS, A CTIVE);生产日期大于某个日期 date1:Condition3 = new EntityExpr(munaDate, EntityOperator.GREATER_ THAN, date1);过期时刻小于或等于某个日期 data2:Condition4 = new EntityExpr(overDate, EntityOperato

31、r.LESS_THAN _EQUAL_TO, date2);总条件:Conds = new LinkedList(); 添加条件:Conds.add(Condition1);Conds.add(Condition2);Conds.add(Condition3);Conds.add(Condition4);设置条件之间的关系为与关系:findCondition= new EntityConditionList(Conds, EntityOperator.AND); 设置排序:按产品号倒序排列。orderby = UtilMisc.toList(-productId ) ; 开始查询:findRe

32、sultList=delegator.findByCondition( Product, findCondition, nul l, orderby );其他查询方法请参考 com.giantstone.entity.GenericDelegato类的方法。删除数据库记录 在查询方法中介绍的比较详细,此处不再赘述有关内容。 按照主键删除:Gen eric PK pk = (Ge nencValue)it .n ext().get PrimaryKeyO; delegator.removeByPrimaryKey(pk);按照某几个字段交集删除delegator.removeByAnd(Term

33、Service,UtilMisc.toMap(DEVTYPEID,s DEVTYPEID);按照条件删除delegator.removeByCondition“数据库表”,“条件列表”);删除列表delegator.removeAll(List);能够先查出一个列表,然后删除。其他删除方法请参考 com.giantstone.entity.GenericDelegato类的方法。增加数据库记录delegator.create( 数据库表名 , inMap );例如: nowTimestamp 是当时时刻delegator.create( Product, UtilMisc.toMap(prod

34、uctId, 10002, statu sId, CREATE, fromDate, nowTimestamp);意思是往表Product中插入一条产品号是10002状态是CREATE,开始 日期是 nowTimestamp的记录。更换数据库中的记录value 是数据库的一条记录。fields 是实据库字段的键值对 Mapvalue = makeValue“ 数据库表” ,fields)delegator.store(value);按照条件更新:delegator.storeByCondition();delegator.storeByConditionC数据库表名,要更新的字段,更新条件);

35、 dispatcherbsh 脚本中得到 dispatcher:dispatcher = request.getAttribute(dispatcher);dispatcher 是服务引擎的调度器。调用服务方法:同步调用服务:outMap = dispatcher.runSync (服务名 , inMap ) ;inMap 是输入参数组成的 Map ;outMap 是输出参数组成的 Map ;2.4:熟悉流程操纵器 controller.xmlhandler操纵器定义了关于各种类型要求或响应采纳何种方法来处理。在 controller.xml 里有大量的 uri 是页面的要求。request-

36、map 上面代码的意思是:如果有要求是main,第一步安全验证,https=true,表示要走https安 全协议, https =false就走http协议,auth二true强制调用checkLogin要求,验证用户是否已 登录,auth二false则不检查此项,第二步意思是如果成功则到要求 main页 面。 main 页面在 view-map 中介绍。再看看 checkLogin:验证用户是否登陆 v/description 那个要求中https=true,走https协议,auth二false,它所以不能递归调用 自己。eve nt是对该要求的响应事件typ e二” java”表示后台

37、用java方法来处 理那个要求,path是java的路径,invoke的值是java类的某个静态方法。方法会返回“ success或者error,如果是前者,则页面转到 main页 面,否则到 login 页面。处理要求的事件除了 java还有service,用一个服务来响应一个要求, 服务会返回“ success或者error。常用的还有 simple 是 mini-lang ,即简单 java 语言,详情参看安装名目 frameworkminilangdtdsimple-methods.xsd 及各板块中 script 文件夹的例程。当一个要求的response的type是 “reques”的时候会按照value的值 来连续找 request -map 的对应值,如此就形成了链式要求,即多个要求连 续调用。当最后一个要求的值确信会落在type是“view”上。应为HTTP要求确信会给用户一个回应。view-map当一个要求的response的typ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论