版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
终端页面开发流程和规范0.6版文件状态:[/草稿口正式发布口正在修改文件标识:当前版本:0.6撰稿人:李水生完成日2005年12月23日期:发布时间:编号:版本历史版本/状态作者参与者起止日期备注草稿Hipay系统自助终端页面开发流程和规范一:Hipay页面开发1目录结构::顶层目录结构图(1)所示Applications:目录里放着我们创建的应用板块。Framework:里是Hipay系统应用,包含实体和服务板块Base:里放着启动,容器和配置和组件加载等公共类。Data:是Hipay内建的数据库。Logs:是系统日志文件夹。Hipay.bat是启动文件。图(1):applications目录图(2)所示Accounting:帐务管理,支付信息,发票等。Content:内容管理,调查等。Ecommerce:电子商务应用。Order:订单管理。Party:人员组织管理Securityext:安全管理拓展Product:产品管理。Component-load.xml:板块加载配置文件。图⑵:ecommerce目录图(3)所示Src:java源文件。Config:配置文件,主要是多语言的配置文件Data:系统运行时需要导入的数据文件Script:Hipay系统mini-lang文件(简单Java方法)Templates:模板页面Webapp:web服务需要用到的页面和脚本Widget:用xml描述的页面Build.xml:用ant工具编译src文件夹的源文件生成的classes文件和jar包放在build中。giantstone-component.xml:电子商务板块加载配置文件。图⑶:webapp目录Webapp下有一个应用文件夹为ecommerce,其目录结构如图(4)所示:除了WEB—INF文件夹以外,其他的文件都是页面文件,页面文件都是以ftl为后缀的freemaker模板页面。图(4):WEB-INF目录如图(5)所示Actions:系统脚本文件夹,beanshell脚本controller.xml:流程控制器web.xml:网站参数设置图⑸:actions目录如图(6)其文件结构和图(4)中的ftl页面结构是对应的。比如说显示购物车信息的页面showcart.ftl放在图(4)cart文件夹中,则对应的脚本showcart.bsh放在图(6)的cart文件夹中,这样做不是必需的,但是是规范的,易于维护的。图(6):widget目录Widget是把ftl页面和bsh脚本组合起来供前端显示的工具。它用xml语言和特定标签描述页面和页面,页面和脚本之间如何组合和定制。CommonScreens.xml是公共模板定制页面CartScreen.xml是购物车相关页面定制CatalogScreens.xml是产品,目录的显示的页面定制CustomerScreens.xml是有关调查,寻价和客户方面的页面定制ContentScreens.xml是跟内容管理相关的页面定制OrderScreens.xml是跟订单和支付相关的页面定制EcommerceSetup.bsh是公共模板加载的脚本图⑺其他板块的目录结构和ecommerce是相似的。2开发内容2.1:对widget组合页面要熟练掌握。WebWidget是轻量级的Web应用程序,为使用者提供一键式的服务。它通常被设计为具有特定的功能,如提供天气、股票、拍卖等的信息。它与网页一样,使用标准的Web技术开发,如XHTML,CSS,javascript等。从这方面看,Widget是脱离浏览器UI运行的网页。beanshell脚本准备数据,freemaker页面显示数据,而widget工具正是组合脚本和页面的,它规定了哪个脚本为哪个页面组织数据,即起到绑定脚本和页面的作用,同时也可以定义某些变量供页面使用,当然有些页面可以没有脚本,简单的来说,widget就是用户请求页面,它把变量,标签和freemaker模板语言组合生成HTML页面,当用户请求时就发送给用户浏览器。Widget用到的标签在framework/widget/dtd里的xsd文件里,如图(8)图(8)在eclipse开发环境下,有代码预示的功能,如图(9)图⑼图(10)图(10)的<!一的内容是注释,从图中的注释清楚地介绍的用widget如何定制一个模板。screenScreen标签对应的是前端请求的页面,页面的名称name属性是必须的。sectionScreen下有一个唯一的section,section下包含condition,actions,widgets和fail-widgets标签。condition如果condition存在,并且condition是true则页面显示widgets内容,否则显示fail-widgets。如果condition不存在,则fail-widgets标签也就没有必要。以下是对attrName非空的判断:<condition><not><if-emptyfield-name="attrName"/></not></condition><if-has-permissionpermission="ORDER_VIEW”/>是检查当前用户是否拥有对order的VIEW(查看)的权限<if-comparevalue="常量"field-name="变量"operator="操作"/>是把变量跟某个常量进行比较,操作包括lessgreaterequalsless-equalsgreater-equalsnot-equalscontains,分别表示,小'于大于等于小于等于大于等于不等包含。<if-compare-fieldfield-name="变量/operator=""to-field-name=”变量2"type="String"/>是把两个变量进行比较,type类型值可以为FloatDoubleIntegerLongBooleanStringPlainStringDateTimeTimestamp和Object,如果没有type默认为String。and是对多个条件进行与操作or或操作xor异或not非<and>〈条件1>〈条件2></and><or><条件1><条件2></or>其他的标签请查看图(8)所示的文件中内容。actionsactions是加载页面之前的动作。常用的动作是:set:set定义一个变量并赋值field的值就是变量名value是变量值;script:script加载一个beanshell脚本文件,location是脚本的位置位置以”乂丫2/”开头,意思是在xyz这个板块下,xyz是在Hipay的安装目录下的applications和framework下的第一层子目录文件夹,如图(2)得文件夹都可以作为这里的perty-map:property-map加载一个属性文件,resource的值是文件的名称,文件后缀为properties,可省略不写,对于多语言,比如要加载简体中文配置文件TMSBaseUiLabels_zh_CN.properties和美国英语配置文件TMSBaseUiLabels_en_US.properties,并把配置文件的键值对放在一个 Map即uiLabelMap中,作为全局变量是用,只需要这样一行代码:<property-mapresource="TMSBaseUiLabels"map-name="uiLabelMap"global="true"/>这行代码会加载所有各种语言的配置文件,然后根据用户的locale,读取当时当地的语言配置。还有一点需要注意,如果uiLabelMap在TMSBaseUiLabels_zh_CN.properties中找不到键值,它会去TMSBaseUiLabels_perties查找,如果没找到,则继续查找TMSBaseUiLperties,如果仍然没有值则返回键本身,如果有则返回文件中定义的值;widgetsWidgets是对页面的加载和布局。常用的加载页面的方法包括1:platform-specific<platform-specific><html><html-template</html></platform-specific>为要加载的文件路径和名称。即TMSBase这个板块下webapp文件夹的子文件夹TMSBase下的子文件夹includes下的header.ftl文件。include-screen<include-screenname="abc"location="idget/bcd.xml"/>这行代码的意思是加载一个页面,这个页面是在TMSBase这个板块下的widget文件夹下的bcd.xml文件里定义的abc页面。abc是screen的name的值。decorator另外,模板常用到这行代码<decorator-section-includename="body"/>,意思是页面的body部分是空的,其他页面使用以下代码使用这个模板,<decorator-screenname="main-decorator">main-decorator是模板的名称(screen的name的值)则其他页面的内容出现在body部分。containerWidget中可以加载容器〈containerstyle="样式表">容器里面可以加载其他页面,这类似于HTML中的DIV层。以下代码是合法的:<containerstyle=""><include-screenname=""></include-screen><platform-specific><html><html-templatelocation=""/></html></platform-specific><decorator-section-includename="body"/>〈/container〉<include-screenname=""></include-screen>和<include-screenname=""/>效果是等同的,其他类似。widget中的section<widgets><section>■■■■■■</section></widgets>widgets中可以放置多个$0。10门6:其他加载一个图片可以使用<imagesrc=""></image>页面上显示一行文字可用<labeltext=""></label>其他的标签请查看图(8)所示的文件中内容。fail-widgets等同于widget标签,是条件不满足时给用户显示的页面。2.2:对freemaker模板语言的熟练掌握:各页面功能及存放位置页面文件后缀为置1,存放在图(4)所示的目录中,即webapp下的应用文件夹中图(4)自助终端目前用到的页面中有图(4)中的部分页面:main.ftl是主页面,用户返回时会到此页面,该页面左边显示分类,右边显示推广产品。mainframe.ftl框架页面分三个部分框架上面部分占99.98%是用户操作的业务页面,框架中间占0.01%,是用来加载终端插件,框架下部是用来加载加密插件和进行加密验证的。mainup.ftl是语言选择页面。login.ftl是用户刷卡登陆页面。cart下的showcart.ftl页面(购物车页面)catalog下的sidedeepcategory.ftl(终端屏幕的左边目录翻页页面)customer下的survey.ftl(调查页面即用户的密码,号码输入页面)error下的error.ftl(错误页面)includes下的:header.ftl模板头部导航栏加载样式表定制页面超时脚本footer.ftl模板底部留个按钮hidebottom.ftl加载终端插件,是页面底部框架固定不动的部分,对于不同的终端,申 明和条用插件的方式可能不同,此时需要编写多个厂家的底部框架页面。jiami.ftl工行自助终端用到的加密插件页面。order下的checkoutoptions.ftl该页面显示正在支付中,请用户等候,该页面向后台传递了用户的支付方式,货物的运送方式,联系方式等等重要信息,不可或缺。ordercomplete.ftl该页面是支付完成页面,显示支付结果,成功则用户可以选择打印凭条。另外还用到了order板块的webapp下ordermgr的字文件夹entry的catalog的部分文件,如图(11)图(11)calldetaillE.ftl是天一终端的IE浏览器在进行银行卡打电话业务时显示的页面。calldetailNE.ftl是芙蓉终端mozzila浏览器银行卡打电话页面category.ftl是显示产品分类的页面其指向categorydetailcategorydetail.ftl是产品分类的详细信息页面其指向productsummary.ftlproductsummary.ftl是某一个分类下所有产品的简要介绍页面,在终端上就是显示在屏幕右边的四个按钮上的内容。product.ftl是产品页面其指向productdetail.ftl页面productdetail.ftl页面是根据对产品的配置的详情页面来展示产品。比如银行卡打电话这个产品就是配置成了 calldetail.ftl,如果没有配置则默认显示productdetail.ftl页面2・2.2:常用的页面标签以下例子中可以见到常用到了页面标签。<divclass="ecom-body"><divclass="ladyFirstPosition"><imgsrc="/images/motif_ty.gif"/></div><divclass="textPosition">${uiLabelMap.chooseLanguage}<#--<divclass="Rl">${uiLabelMap.firstPagedownInformation}
</div>--></div><#iflanguagesList?has_content><#listlanguagesListaslanguage><#iflanguage?has_content><#assignindex=4-languagesList?size+language_index+1><#assignstyleValue="productcontent"+index><inputtype="button"id="${styleValue}"class="buttonImgClass"value="${uiLabelMap[language.description?if_exists]}"name="${index*2}"onclick="window.location='<@giantstoneUrl>${language.requestUri?if_exists}</@giantstoneUrl>';"/></#if></#list></#if></div>注释<#-—><#>注释的内容不能出现--字样<#--<divclass="R1">${uiLabelMap.firstPagedownInformation}</div>-->要注意区分HTML页面的注释<!赋值assign设置变量<#assignindex=5>设置变量<#assignindex=5>页面使用变量时用${皿~0区},将会显示5条件判断ifelse使用时以尖括号和#开头<#1砧00瓦@心并以</#1「结尾<#if(a>b)>A比B大<#else>A不比B大</#if>列表listsizeindex<#assignlanguagesList={Chinese,English,French}>languagesListsize=${languagesList?size}<#listlanguagesListaslanguage>${language}位置是${language_index},</#list>则最后显示的结果是:Chinese位置是0,English位置是1,French位置是2,异常处理如果变量值没有定义页面就会报错,加上以下一些判断,可以消除页面上的错误:existsif_existshas_contentdefaultexists是对某个变量进行判断,返回值是布尔型trueorfalse;if_exists返回是字符串,对某个变量进行判断如果值或引用不存在则显示空串,相当于“”;has_content对变量进行判断,如果值或引用存在并且不为空时才为true否则为false。default如果变量无值就设定默认值。<#ifsomeparameter?exist>${someparameter}</#if><#ifsomeparameter?has_content>${someparameter}</#if>${someparameter?if_exists}${someparameter?default(“defaultValue”)}其他对于自助终端页面目前常用就是上面介绍的这些标签更多请参考FreeMarker设计指南.doc推荐登陆官方网站查看详细手册。anshell脚本的熟悉Beanshell是宽松的Java,使用变量前无需定义,它完全兼容Java语法。详情请登陆官方网站Flt页面负责显示后台传来的数据,对页面来说beanshell脚本是重要的后端数据源,在beanshell里可以直接引用request变量和context变量;通过request的getParameter(“name”)方法bsh脚本可以获取前端页面传来的参数通过context的put(“name”,value)方法bsh脚本可以把经过处理的数据送回前端页面显示。页面使用$1@山©}即可显示。request可以得到delegator和dispatcherdelegatorbsh脚本中得到delegator:delegator=request.getAttribute("delegator");delegator是实体引擎对数据库增删查改的代理器;数据库查找根据主键查找:Bsh脚本中最常做的事情是到数据库中查找数据供前台页面展示。value=delegator.findByPrimaryKey("数据库表名",inMap);inMap放置主键键值对.UtilMisc.toMap("name","value")方法是把键值对放入Map中比如:orderHeader=delegator.findByPrimaryKey("OrderHeader",UtilMisc.toMap("orderId","1000"));意思是在表OrderHeader中查找主键(orderld)等于1000的记录,查出后赋给orderHeader。根据某几个字段交集查询:valueList=delegator.findByAnd("数据库表名",inMap);orderHeader=delegator.findByAnd("OrderHeader",UtilMisc.toMap("statusId","APPROVE","grandTotal”,"200"));意思是在表OrderHeader查询状态是APPROVE并且交易金额是200元的记录列表。根据某几个字段并集查询:valueList=delegator.findByOr("数据库表名",inMap);orderHeader=delegator.findByOr("OrderHeader",UtilMisc.toMap("statusId","APPROVE","grandTotal","200"));意思是在表OrderHeader查询状态是APPROVE或者交易金额是200元的记录列表。根据条件查询:delegator.findByCondition(数据库名,条件列表,需要查询出来的字段列表,字段排序列表)需要查询出来的字段列表如果设置为null则默认查出所有字段。创建条件比如产品号等于10001:Condition1=newEntityExpr("productId",EntityOperator.EQUALS,"10001"));状态是ACTIVE:Condition2=newEntityExpr("statusId",EntityOperator.EQUALS,"ACTIVE"));生产日期大于某个日期datel:Condition3=newEntityExpr("munaDate",EntityOperator.GREATER_THAN,date1));过期时间小于或等于某个日期data2:Condition4=newEntityExpr("overDate",EntityOperator.LESS_THAN_EQUAL_TO,date2));总条件:Conds=newLinkedList();添加条件:Conds.add(Condition1);Conds.add(Condition2);Conds.add(Condition3);Conds.add(Condition4);设置条件之间的关系为与关系:findCondition=newEntityConditionList(Conds,EntityOperator.AND);设置排序:按产品号倒序排列。orderby=UtilMisc.toList("-productId");开始查询:findResultList=delegator.findByCondition("Product",findCondition,null,orderby);其他查询方法请参考.GenericDelegator类的方法。删除数据库记录在查询方法中介绍的比较详细,此处不再赘述相关内容。根据主键删除:GenericPKpk=((GenericValue)it.next()).getPrimaryKey();delegator.removeByPrimaryKey(pk);根据某几个字段交集删除delegator.removeByAnd("TermService",UtilMisc.toMap("DEVTYPEID",sDEVTYPEID));根据条件删除delegator.removeByCondition(“数据库表”,“条件列表”);删除列表delegator.removeAll(List);可以先查出一个列表,然后删除。其他删除方法请参考.GenericDelegator类的方法。增加数据库记录delegator.create("数据库表名",inMap);比如:nowTimestamp是当时时间delegator.create("Product",UtilMisc.toMap("productId","10002","statusId","CREATE","fromDate",nowTimestamp));意思是往表Product中插入一条产品号是10002状态是CREATE,开始日期是nowTimestamp的记录。更改数据库中的记录value是数据库的一条记录。fields是实据库字段的键值对Mapvalue=makeValue(“数据库表”,fields)delegator.store(value);根据条件更新:delegator.storeByCondition();delegator.storeByCondition("数据库表名",要更新的字段,更新条件);dispatcherbsh脚本中得到dispatcher:dispatcher=request.getAttribute("dispatcher");dispatcher是服务引擎的调度器。调用服务方法:同步调用服务:outMap=dispatcher.runSync("服务名",inMap);inMap是输入参数组成的Map;outMap是输出参数组成的Map;:熟悉流程控制器controller.xmlhandler控制器定义了对于各种类型请求或响应采用何种方法来处理。<handlername="java"type="request"(handlername="soap"type="request"(handlername="service"type="request"(handlername="simple“type="request”(handlername="screen“type="view"在controller.xml里有大量的(「0口口0$土F@口口「1="xxx”>uri是页面的请求。request-map(request-mapuri="main"〉(securityhttps="true"auth="true"/〉(responsename—successtype—viewvalue—main/〉(/request-map〉上面代码的意思是:如果有请求是main,第一步安全验证,八江口$二壮口0,表示要走https安全协议,https—false就走http协议,auth-true强制调用checkLogin请求,验证用户是否已登录,auth-false则不检查此项,第二步意思是如果成功则到请求main页面。main页面在view-map中介绍。再看看checkLogin:<request-mapuri="checkLogin"><description>验证用户是否登陆<40$51口50口><securityhttps="true"auth="false"/><eventtype="java"invoke="checkLogin”/>/ 〃 〃, 〃二-〃 〃 二一〃/\<responsename—successtype—viewvalue—main/>/一 〃-—〃上〃:八〃, 〃1「〃/\<responsename—errortype—viewvalue—login/></request-map>这个请求中https-true,走https协议,auth-false,它当然不能递归调用自己。event是对该请求的响应事件type-"J七丫@”表示后台用java方法来处理这个请求,path是java的路径,invoke的值是java类的某个静态方法。方法会返回“success”或者"error”,如果是前者,则页面转到main页面,否则到login页面。处理请求的事件除了java还有service,用一个服务来响应一个请求,服务会返回“success”或者“error”。<eventtype—"service"invoke—"createBillingAccount"/>常用的还有simple是mini-lang,即简单java语言,详情参看安装目录\framework\minilang\dtd\simple-methods.xsd及各板块中script文件夹的例程。<eventtype—”simple”path—”com/giantstone/accounting/payment/PaymentMethodEvents.xml”invoke="createCreditCard"/>当一个请求的response的type是“「0口口0$士”的时候会根据value的值来继续找request-map的对应值,这样就形成了链式请求,即多个请求连续调用。当最后一个请求的值肯定会落在type是“view”上。应为HTTP请求肯定会给用户一个回应。view-map当一个请求的response的type是‘,10亚”的时候就会根据value的值来找view-map的对应值。/ _ 〃__〃」 〃•〃<responsename—successtype-view/ _ 〃 〃工 〃_ 〃<view-mapname—maintype—screen上面代码的意思是如果来了view的页面请求,就去accounting这个板块的widget文件夹下的CommonScreens.xml文件中定义的main的页面。type=“screen”表示使用widget工具生成页面。其他依次类推。具体标签请参看:安装目录\framework\webapp\dtd\site-conf.xsd3开发顺序:理解流程控制器controller.xml开发之前,设计人员设计好控制流程,即编写好板块的controller.xml文件。controller.xml里所有的请求uri(request-mapuri="xxx")都是与freemaker页面上的请求<@giantstoneUrl〉/xxx〈/@giantstoneUrl>对应。对于用户从页面上提交的请求,流程控制器就能接受到这个请求,并按预定义的事件进行处理,处理完成之后,根据处理结果,会转到不同的页面标识(<view-mapname="页面标识"type="screen"page="widget工具定制的页面"/>)这样一次请求响应就完成了。:理解页面组合器widget定制XML页面文件。在流程控制器里以下代码:/二八 〃_L__〃/〃 〃<view-mapname=showforumtype=screen#forum"/>意思是页面标识是showforum的页面在ecommerce版块下widget文件夹下的ForumScreens.xml文件描述的screenname二”forum”部分。此外开发人员必须熟悉2,1节内容,即widget标签使用。:页面人员开发按照流程控制器的内容规范前台页面的请求名(必需与request-map中的uri对应上);按照流程控制器中页面定义建立页面文件结构。根据业务页面文档或者PowerPoint文档编写页面。根据显示需要编写beanshell脚本。4数据库表结构需要熟悉的数据库表结构,具体的标字段定义在各自板块的entitymodel.xml文件中。Party板块当事人表<entity-groupgroup="com.giantstone"entity="Party"/>当事人类型表<entity-groupgroup="com.giantstone"entity="PartyType"/>当事人角色表<entity-groupgroup="com.giantstone"entity="PartyRole"/>组织表<entity-groupgroup="com.giantstone"entity="PartyGroup"/>人员表<entity-groupgroup="com.giantstone"entity="Person"/>角色类型表<entity-groupgroup="com.giantstone"entity="RoleType"/>联系机制表<entity-groupgroup="com.giantstone"entity="ContactMech"/>联系机制类型表<entity-groupgroup="com.giantstone"entity="ContactMechType"/>当事人联系机制表<entity-groupgroup="com.giantstone"entity="PartyContactMech"/>邮政地址表<entity-groupgroup="com.giantstone"entity="PostalAddress"/>Accounting板块金融帐号表<entity-groupgroup="com.giantstone"entity="FinAccount"/>金融帐号交易表<entity-groupgroup="com.giantstone"entity="FinAccountTrans"/>礼品卡表<entity-groupgroup="com.giantstone"entity="GiftCard"/>支付表<entity-groupgroup="com.giantstone"entity="Payment"/>支付类型表<entity-groupgroup="com.giantstone"entity="PaymentType"/>支付方法表<entity-groupgroup="com.giantstone"entity="PaymentMethod"/>支付方法类型表<entity-groupgroup="com.giantstone"entity="PaymentMethodType"/>Order板块订单头<entity-groupgroup="com.giantstone"entity="OrderHeader"/>订单属性<entity-groupgroup="com.giantstone"entity="OrderAttribute"/>订单备注<entity-groupgroup="com.giantstone"entity="OrderHeaderNote"/>订单条<entity-groupgroup="com.giantstone"entity="OrderItem"/>订单条属性<entity-groupgroup="com.giantstone"entity="OrderItemAttribute"/>订单条联系机制<entity-groupgroup="com.giantstone"entity="OrderItemContactMech"/>订单角色<entity-groupgroup="com.giantstone"entity="OrderRole"/>订单状态<entity-groupgroup="com.giantstone"entity="OrderStatus"/>订单类型<entity-groupgroup="com.giantstone"entity="OrderType"/>Product板块产品编目<entity-groupgroup="com.giantstone"entity="ProdCatalog"/>编目目录<entity-groupgroup="com.giantstone“entity="ProdCatalogCategory”/>产品分类<entity-groupgroup="com.giantstone"entity="ProductCategory"/>产品和分类视图<entity-groupgroup="com.giantstone"entity="ProductCategoryAndMember"/>分类内容<entity-groupgroup="com.giantstone"entity="ProductCategoryContent"/>分类成员<entity-groupgroup="com.giantstone"entity="ProductCategoryMember"/>分类和分类中的产品关联<entity-groupgroup="com.giantstone"entity="ProductCategoryRollup"/>产品表<entity-groupgroup="com.giantstone"entity="Product"/>产品属性表<entity-groupgroup="com.giantstone"entity="ProductAttribute"/>产品内容表<entity-groupgroup="com.giantstone"entity="ProductContent"/>产品内容类型表<entity-groupgroup="com.giantstone"entity="ProductContentType"/>产品特征表<entity-groupgroup="com.giantstone"entity="ProductFeature"/>产品特征应用<entity-groupgroup="com.giantstone"entity="ProductFeatureAppl"/>商品价格表<entity-groupgroup="com.giantstone"entity="ProductPrice"/>产品配置表<entity-groupgroup="com.giantstone"entity="ProductConfig"/>商店<entity-groupgroup="com.giantstone"entity="ProductStore"/>商店调查表<entity-groupgroup="com.giantstone"entity="ProductStoreSurveyAppl"/>商店送货方式<entity-groupgroup="com.giantstone"entity="ProductStoreShipmentMeth"/>运送<entity-groupgroup="com.giantstone"entity="Shipment"/>运送类型<entity-groupgroup="com.giantstone"entity="ShipmentType"/>商店支付设置表<entity-groupgroup
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年前台贵重物品寄存礼仪测试题
- 七年级下学期数学第一次月考卷01【第7章-第8章】(考试版)-人教版(2024)七下
- 第8章 实数(复习讲义)(解析版)-人教版(2024)七下
- 2026年物业结聘合同(1篇)
- 消防员工作总结14篇
- 项目负责人开工致辞
- 设备买卖合同
- 中秋茶楼营销方案(3篇)
- 京东机油营销方案(3篇)
- 供水机组施工方案(3篇)
- 2026广东深圳医学科学院科研职能岗位招聘笔试备考试题及答案解析
- 山东大众报业集团有限公司招聘笔试题库2026
- 2026年国网江苏省电力有限公司高校毕业生招聘约825人(第二批)笔试模拟试题及答案解析
- 2026上半年新疆维吾尔自治区招聘事业单位工作人员分类考试4474人笔试备考题库及答案解析
- GB/T 20151-2026光度学CIE物理光度系统
- GB/T 18570.9-2025涂覆涂料前钢材表面处理表面清洁度的评定试验第9部分:水溶性盐的现场电导率测定法
- 高中实验室安全教育课件
- 安徽省合肥市2025-2026学年上学期期末八年级数学试卷(含答案)
- 2026年甘肃省交通运输厅所属事业单位招聘笔试易考易错模拟试题(共500题)试卷后附参考答案
- 电信公司客户服务部门员工绩效考评表
- 安徽合肥市人力资源服务有限公司招聘笔试题库2026
评论
0/150
提交评论