版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1EOS基礎(chǔ)開發(fā)培訓(xùn)基礎(chǔ)開發(fā)培訓(xùn)劉澤威2011-7-162目錄目錄u 課程介紹u 走進(jìn)EOSu 單表維護(hù)u 運(yùn)算邏輯3課程介紹課程介紹教程概述 本教程假設(shè)讀者已了解Java、JSP、XML、HTML、XPATH、Java Script、Tomcat和Oracle SQL、PL/SQL以及Eclipse IDE 本教程定位是標(biāo)準(zhǔn)EOS開發(fā)平臺(tái)的用教程,偏向于日常開發(fā)的需要掌握的基本技能。進(jìn)一步學(xué)習(xí)EOS高級(jí)開發(fā)和公司對(duì)EOS的拓展功能,請(qǐng)參閱EOS幫助文檔和公司相關(guān)文檔 課程目標(biāo)是完成課程后熟悉EOS平臺(tái)基本體系,可進(jìn)行EOS平臺(tái)項(xiàng)目基礎(chǔ)開發(fā)適用對(duì)象 學(xué)習(xí)過類似SSH的Web開發(fā),未接觸過EOS
2、開發(fā)平臺(tái)的讀者 了解過EOS開發(fā)平臺(tái),未在實(shí)際項(xiàng)目使用過的讀者4目錄目錄u 課程介紹u 走進(jìn)EOSu 單表維護(hù)u 運(yùn)算邏輯5走進(jìn)走進(jìn)EOSEOSEOS組成EOS與SOAEOS數(shù)據(jù)處理EOS安裝6走進(jìn)走進(jìn)EOSEOSEOS組成EOS ServerEOS StudioEOS GovernorEOS Component LibraryEOS Rich WebEOS ReportBPS for EOS7走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成EOS Server EOS Server(EOS運(yùn)行環(huán)境)是支撐SOA應(yīng)用和服務(wù)的運(yùn)行環(huán)境,EOS Server 由SCA(Service Componen
3、t Architecture)容器、構(gòu)件運(yùn)行環(huán)境、頁(yè)面流引擎、邏輯流引擎、系統(tǒng)服務(wù)、基礎(chǔ)服務(wù)等核心模塊組成。EOS Server是一個(gè)面向SOA的基礎(chǔ)設(shè)施,實(shí)現(xiàn)了SOA的核心編程模型SCA 1.0、SDO 2.1的標(biāo)準(zhǔn)規(guī)范EOS Server運(yùn)行在標(biāo)準(zhǔn)的J2EE應(yīng)用服務(wù)器之上,支持主流的應(yīng)用服務(wù)器(如:WebSphere、WebLogic、JBoss、Tomcat等)和主流的數(shù)據(jù)庫(kù)(Oracle、DB2、MS SQL Server、Informix、Sybase等)8走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成EOS Studio EOS Studio(EOS集成開發(fā)環(huán)境)是集面向構(gòu)件應(yīng)用的設(shè)
4、計(jì)、開發(fā)、組裝、調(diào)試、維護(hù)、部署、管理和發(fā)布于一體的集成開發(fā)環(huán)境,提供對(duì)SOA應(yīng)用和服務(wù)全生命周期的開發(fā)、維護(hù)和管理。在EOS Studio中,以項(xiàng)目的形式組織了EOS應(yīng)用開發(fā)的資源,提供相應(yīng)的向?qū)?、視圖和編輯器等工具供開發(fā)人員在開發(fā)過程中可視化地開發(fā)各種構(gòu)件,并提供了強(qiáng)大的調(diào)試及團(tuán)隊(duì)開發(fā)功能。對(duì)于一個(gè)應(yīng)用項(xiàng)目而言,所有的開發(fā)內(nèi)容都可以方便快捷的通過EOS Studio完成,而不需要使用其他開發(fā)工具 在EOS Studio中默認(rèn)的有兩種常用透視圖:EOS Studio開發(fā)透視圖和EOS Studio調(diào)試透視圖,每個(gè)透視圖又包含很多共用的視圖和編輯器9走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成
5、EOS Studio 開發(fā)透視圖10走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成EOS Studio 調(diào)試透視圖11走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成EOS Governor EOS Governor(EOS治理工具)主要功能是以圖形化的方式實(shí)現(xiàn)對(duì)EOS系統(tǒng)運(yùn)行時(shí)刻進(jìn)行監(jiān)控,以利于系統(tǒng)開發(fā)人員及運(yùn)行管理人員進(jìn)行系統(tǒng)調(diào)試與系統(tǒng)診斷。通過實(shí)時(shí)在線監(jiān)控和管理工具,可以實(shí)現(xiàn)對(duì)應(yīng)用系統(tǒng)各個(gè)層次進(jìn)行監(jiān)控和管理。 用戶只需通過Web界面即可實(shí)時(shí)監(jiān)控應(yīng)用系統(tǒng)的各項(xiàng)運(yùn)行參數(shù),快速診斷和修正系統(tǒng)運(yùn)行時(shí)的錯(cuò)誤及異常,用更少的維護(hù)成本確保系統(tǒng)正常發(fā)揮作用12走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成EOS
6、 Component Library EOS Component Library(EOS構(gòu)件庫(kù))是為了支撐快速開發(fā)、部署應(yīng)用系統(tǒng)而提供的,具有高度復(fù)用能力的一組預(yù)制構(gòu)件的集合。利用EOS構(gòu)件庫(kù)中的構(gòu)件可以快速搭建應(yīng)用系統(tǒng),提高軟件可復(fù)用度和開發(fā)效率 同時(shí)通過對(duì)構(gòu)件的管理可以建立一套針對(duì)構(gòu)件的生產(chǎn)、改進(jìn)、管理、沉淀和發(fā)展的完整軟件管理機(jī)制,使得軟件企業(yè)組織級(jí)的軟件知識(shí)沉淀可以通過構(gòu)件庫(kù)的形式得以實(shí)現(xiàn)和發(fā)展。13走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成EOS RichWeb EOS RichWeb(EOS富頁(yè)面)提供了豐富的頁(yè)面模板、頁(yè)面控件以及頁(yè)面向?qū)?,將開發(fā)人員從繁瑣、復(fù)雜、費(fèi)時(shí)的頁(yè)面開發(fā)
7、中解脫出來。通過頁(yè)面模板自定義,系統(tǒng)分析設(shè)計(jì)人員可以針對(duì)不同項(xiàng)目需要定制統(tǒng)一的頁(yè)面風(fēng)格。在設(shè)計(jì)視圖中,開發(fā)人員可通過拖拉頁(yè)面控件的方式輕松實(shí)現(xiàn)頁(yè)面開發(fā) 同時(shí)EOS Studio還保留了傳統(tǒng)的JSP代碼編輯開發(fā)方式。14走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成EOS Report EOS Report(EOS報(bào)表)定位于高效率的中式報(bào)表工具。能夠?qū)崿F(xiàn)報(bào)表的高效設(shè)計(jì)、維護(hù)和運(yùn)行,解決國(guó)內(nèi)企業(yè)級(jí)報(bào)表應(yīng)用的相關(guān)需求。 EOS報(bào)表產(chǎn)品由三部分組成:報(bào)表設(shè)計(jì)器、報(bào)表服務(wù)器、報(bào)表客戶端。用戶在報(bào)表設(shè)計(jì)器(內(nèi)嵌在EOS Studio中)來設(shè)計(jì)報(bào)表和開發(fā)報(bào)表應(yīng)用。應(yīng)用被打包、部署到報(bào)表服務(wù)器上運(yùn)行。報(bào)表服務(wù)
8、器為報(bào)表提供了運(yùn)行環(huán)境,同時(shí)提供報(bào)表的開發(fā)接口、以及監(jiān)控管理。報(bào)表客戶端是內(nèi)嵌在瀏覽器中運(yùn)行的Applet,提供在瀏覽器客戶端的報(bào)表精確打印功能。15走進(jìn)走進(jìn)EOS-EOSEOS-EOS組成組成BPS for EOS BPS for EOS是EOS產(chǎn)品的選件組成部分,負(fù)責(zé)對(duì)業(yè)務(wù)流程整個(gè)生命周期的管理,包括業(yè)務(wù)流程的定義、調(diào)試、部署、運(yùn)行、監(jiān)控、管理。Primeton BPSTM遵循WfMC參考模型而又具備中國(guó)特色特性的流程管理產(chǎn)品16走進(jìn)走進(jìn)EOSEOSEOS與SOASOAEOS17走進(jìn)走進(jìn)EOS-EOSEOS-EOS與與SOASOASOASOA概述 SOA架構(gòu)(Service Oriente
9、d Architecture)是一個(gè)分層的結(jié)構(gòu),從底層的功能性服務(wù),到原子服務(wù)和服務(wù)構(gòu)件,到頂層的業(yè)務(wù)流程服務(wù),目的是最大限度地封裝不同的服務(wù),從而達(dá)到復(fù)用的目的。業(yè)務(wù)模式和流程也可以通過服務(wù)的重新組合變得更加靈活核心技術(shù)18走進(jìn)走進(jìn)EOS-EOSEOS-EOS與與SOA-SOASOA-SOASOA核心技術(shù)SCA 服務(wù)需要是標(biāo)準(zhǔn)化、可以自描述、是可以組裝,并能夠隔離業(yè)務(wù)功能和具體實(shí)現(xiàn)。SCA(Service Component Architecture)是一個(gè)跟實(shí)現(xiàn)語(yǔ)言無關(guān)的服務(wù)構(gòu)件編程模型,可以很好地處理服務(wù)網(wǎng)絡(luò)的建構(gòu),因此提供了基于SOA簡(jiǎn)化開發(fā)解決方案。SCA規(guī)范的開發(fā)和發(fā)布由OSOA(
10、Open Service Oriented Architecture,)組織負(fù)責(zé)數(shù)據(jù) 服務(wù)數(shù)據(jù)模型SDO(Service Data Object)以對(duì)象為中心,層次樹型數(shù)據(jù)模型,是一種最貼近業(yè)務(wù)表現(xiàn)的方式。SDO的數(shù)據(jù)表現(xiàn)形式基于數(shù)據(jù)對(duì)象(Data Object)和數(shù)據(jù)圖(Data Graph)的概念,其封裝形式和Java類和XML有水到渠成的映射關(guān)系。使用SDO可以統(tǒng)一數(shù)據(jù)訪問和處理模式,即使數(shù)據(jù)來源于以后數(shù)據(jù)源關(guān)系數(shù)據(jù)庫(kù)、XML數(shù)據(jù)、Web服務(wù)或者是企業(yè)信息系統(tǒng)。SDO是SCA的姊妹標(biāo)準(zhǔn),同樣由OSOA組織負(fù)責(zé)19走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與
11、EOS-SOAEOS-SOASOA核心技術(shù)BPEL BPEL(Business Process Execution Language)是服務(wù)編排的核心技術(shù),也是具體業(yè)務(wù)流程的表現(xiàn)。它所定義的流程實(shí)質(zhì)上是對(duì)一系列單個(gè)無狀態(tài)服務(wù)的調(diào)用與編排,使得這些服務(wù)調(diào)用按照既定的規(guī)則進(jìn)行。BPEL流程本身也是由WSDL所描述的接口聲明為Web服務(wù),是一種基于XML的標(biāo)準(zhǔn),只描述業(yè)務(wù)流程本身,而不關(guān)注業(yè)務(wù)流程的圖形化表示,也不涉及業(yè)務(wù)流程的設(shè)計(jì)方法學(xué) SOA架構(gòu)下,SCA關(guān)注服務(wù),不同的服務(wù)用一致的方法來使用,并可以用一致的方式來構(gòu)建;BPEL關(guān)注流程,把各個(gè)服務(wù)按需要串起來;SDO關(guān)注數(shù)據(jù),數(shù)據(jù)整合在SDO之
12、下,這樣SDO數(shù)據(jù)就可以像血液一樣,在BPEL流程暢通地流動(dòng)20走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與EOSEOSEOSEOS概述 EOS(Enterprise on Service)是基于JAVA EE平臺(tái)、采用面向構(gòu)件技術(shù)實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用開發(fā)、運(yùn)行、管理、監(jiān)控、維護(hù)的中間件平臺(tái)。EOS是基于SOA架構(gòu),支持SCA1.0、SDO2.1規(guī)范21走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與EOSEOSEOSEOS架構(gòu)(邏輯) 22走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與EOS-EOSEOS-EOS資源層 資源層的核心功能是訪問數(shù)據(jù)資源,為了在各個(gè)層次采用統(tǒng)一的方式訪問這些資源,EOS采用數(shù)據(jù)定義的方
13、式描述了系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)用于接口的定義、數(shù)據(jù)的持久化、數(shù)據(jù)的顯示格式以及數(shù)據(jù)的轉(zhuǎn)換格式等等 EOS一組數(shù)據(jù)定義組成了一個(gè)數(shù)據(jù)集,數(shù)據(jù)定義由數(shù)據(jù)實(shí)體和顯示模型組成。其中數(shù)據(jù)實(shí)體分為持久化實(shí)體、非持久化實(shí)體和查詢實(shí)體,顯示模型定義了數(shù)據(jù)實(shí)體的顯示方式,包括編輯方式、效驗(yàn)規(guī)則、顯示名稱、顯示樣式等內(nèi)容。每個(gè)數(shù)據(jù)實(shí)體可以有多個(gè)顯示模型,每個(gè)頁(yè)面控件可以使用顯示模型控制顯示的樣式23走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與EOS-EOSEOS-EOS構(gòu)件層 構(gòu)件層的構(gòu)件用于實(shí)現(xiàn)領(lǐng)域相關(guān)的業(yè)務(wù)邏輯,構(gòu)件層提供了三種類型的構(gòu)件實(shí)現(xiàn)方式:Java構(gòu)件、邏輯構(gòu)件和工作流。通過對(duì)這三種構(gòu)件進(jìn)行組裝、
14、調(diào)用運(yùn)算邏輯,或者相互調(diào)用來實(shí)現(xiàn)業(yè)務(wù)操作 邏輯構(gòu)件采用圖形化的方式將運(yùn)算邏輯、邏輯流和服務(wù)組裝成更大粒度的構(gòu)件。一個(gè)邏輯構(gòu)件定義了一套業(yè)務(wù)操作的接口,每個(gè)業(yè)務(wù)操作由一個(gè)邏輯流來實(shí)現(xiàn) 工作流也是一種構(gòu)件,可以把一個(gè)工作流程暴露成一個(gè)服務(wù),由其他模塊或者其他系統(tǒng)來調(diào)用。這樣其他模塊看到的只是一個(gè)業(yè)務(wù)操作接口,而不必關(guān)心這個(gè)業(yè)務(wù)對(duì)應(yīng)的是一個(gè)業(yè)務(wù)流程,還是一個(gè)邏輯流或者一個(gè)Java構(gòu)件24走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與EOS-EOSEOS-EOS服務(wù)層 服務(wù)層采用SCA1.0標(biāo)準(zhǔn)來實(shí)現(xiàn),是用來將構(gòu)件層編寫的構(gòu)件,裝配成服務(wù)的方式暴露給其他模塊或者其他系統(tǒng)。服務(wù)層的服務(wù)含義不僅僅是指Web S
15、ervice,在SOA體系中服務(wù)是構(gòu)件暴露出來的業(yè)務(wù)操作,在技術(shù)上可以體現(xiàn)為Web Service,也可以體現(xiàn)為Java Interface、EJB、JMS等多種調(diào)用方式 在EOS可以將Java構(gòu)件,或者邏輯構(gòu)件實(shí)現(xiàn)裝配為服務(wù)構(gòu)件,也可以將這些構(gòu)件裝配成更大粒度的組合構(gòu)件25走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與EOS-EOSEOS-EOS流程層 EOS在流程層提供了BPS,幫助客戶實(shí)現(xiàn)人與人之間的工作協(xié)調(diào),人工任務(wù)與自動(dòng)任務(wù)間的協(xié)調(diào)。BPS,完全支持SCA服務(wù)構(gòu)件的調(diào)用,是一個(gè)面向服務(wù)的流程管理產(chǎn)品26走進(jìn)走進(jìn)EOS-SOAEOS-SOA與與EOS-EOSEOS-EOS協(xié)同層 協(xié)同層也叫接
16、入層,基于EOS開發(fā)的應(yīng)用支持HTTP,EJB,Web Service,Ajax等多種接入方式。同時(shí)提供了客戶端接入接口,允許GUI程序,或者第三方應(yīng)用通過客戶端接口訪問EOS應(yīng)用提供的服務(wù)。EOS客戶端接入支持EJB和Web Service兩種調(diào)用模式 EOS在接入層最核心的功能是提供了頁(yè)面流功能,EOS頁(yè)面流引擎負(fù)責(zé)頁(yè)面的跳轉(zhuǎn),頁(yè)面間的數(shù)據(jù)流轉(zhuǎn),調(diào)用服務(wù)層提供的服務(wù),或者直接調(diào)用構(gòu)件層構(gòu)件的接口27走進(jìn)走進(jìn)EOSEOSEOS數(shù)據(jù)處理數(shù)據(jù)流轉(zhuǎn)過程數(shù)據(jù)上下文數(shù)據(jù)處理過程28走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)流轉(zhuǎn)過程總體流程29走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)
17、據(jù)處理數(shù)據(jù)流轉(zhuǎn)過程過程描述1. 客戶端瀏覽器發(fā)起HTTP請(qǐng)求,通過Key/Value對(duì)的形式將數(shù)據(jù)傳輸?shù)椒?wù)器端;2. 頁(yè)面流引擎接到HTTP請(qǐng)求后將Key/Value對(duì)象轉(zhuǎn)換為SDO對(duì)象,傳遞給頁(yè)面流實(shí)例;3. 頁(yè)面流調(diào)用邏輯流時(shí),將SDO對(duì)象傳遞給邏輯流引擎;4. 邏輯流引擎又會(huì)將SDO對(duì)象傳遞給邏輯流實(shí)例;5. 邏輯流調(diào)用運(yùn)算構(gòu)件時(shí),傳入SDO對(duì)象。運(yùn)算構(gòu)件訪問數(shù)據(jù)服務(wù)完成業(yè)務(wù)操作后產(chǎn)生SDO類型的返回結(jié)果;6. 邏輯流引擎將返回結(jié)果傳遞給頁(yè)面流引擎;7. 頁(yè)面流引擎又將返回結(jié)果轉(zhuǎn)發(fā)給JSP頁(yè)面;8. JSP頁(yè)面響應(yīng)這個(gè)HTTP請(qǐng)求,返回到客戶端瀏覽器,顯示返回結(jié)果。完成一次數(shù)據(jù)流轉(zhuǎn)。3
18、0走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)上下文 概述EOS中所有的數(shù)據(jù)都是通過數(shù)據(jù)上下文來存儲(chǔ)的。數(shù)據(jù)上下文是一個(gè)有固定分區(qū)的數(shù)據(jù)容器,它采用統(tǒng)一的Xpath語(yǔ)法對(duì)對(duì)象樹進(jìn)行取值和設(shè)值操作。在使用數(shù)據(jù)上下文時(shí),只需要使用Xpath定位數(shù)據(jù)即可,不需要知道內(nèi)部的具體數(shù)據(jù)類型數(shù)據(jù)上下文分為多種數(shù)據(jù)區(qū),其中包括請(qǐng)求上下文數(shù)據(jù)區(qū)、會(huì)話上下文數(shù)據(jù)區(qū)、頁(yè)面流上下文數(shù)據(jù)區(qū)、邏輯流上下文數(shù)據(jù)區(qū)、MUO上下文數(shù)據(jù)區(qū)、流程上下文數(shù)據(jù)區(qū)31走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)上下文 訪問關(guān)系32走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)上下文 訪問關(guān)系33走進(jìn)走進(jìn)
19、EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)上下文 數(shù)據(jù)生命周期34走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)處理過程 頁(yè)面流數(shù)據(jù)處理 邏輯流數(shù)據(jù)處理 工作流數(shù)據(jù)處理35走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理- -數(shù)據(jù)處理過程數(shù)據(jù)處理過程頁(yè)面流數(shù)據(jù)處理 概述 頁(yè)面流使用到的數(shù)據(jù)上下文分為三個(gè)數(shù)據(jù)區(qū),包括會(huì)話上下文數(shù)據(jù)區(qū),請(qǐng)求上下文數(shù)據(jù)區(qū),頁(yè)面流上下文數(shù)據(jù)區(qū)36走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理- -數(shù)據(jù)處理過程數(shù)據(jù)處理過程頁(yè)面流數(shù)據(jù)處理會(huì)話上下文數(shù)據(jù)區(qū) 會(huì)話上下文數(shù)據(jù)區(qū)存儲(chǔ)的數(shù)據(jù)是當(dāng)前用戶所在的HTTP會(huì)話數(shù)據(jù)的一個(gè)映射。開發(fā)頁(yè)面流的時(shí)候可以使
20、用s:XPATH_EXPRESSION來訪問會(huì)話數(shù)據(jù)區(qū)中的數(shù)據(jù),訪問會(huì)話數(shù)據(jù)區(qū)中表達(dá)式的前綴為s:請(qǐng)求上下文數(shù)據(jù)區(qū) 請(qǐng)求上下文數(shù)據(jù)區(qū)中放置的是一個(gè)完整的Http Request/Response過程中產(chǎn)生的數(shù)據(jù),當(dāng)EOS的頁(yè)面引擎接受到一個(gè)HTTP Request的請(qǐng)求后,它會(huì)將這個(gè)請(qǐng)求的Key/Value參數(shù)按照規(guī)則,轉(zhuǎn)換成一個(gè)或者多個(gè)Java對(duì)象放入到請(qǐng)求上下文數(shù)據(jù)區(qū)中;也可以使用復(fù)制圖元訪問或創(chuàng)建請(qǐng)求上下文數(shù)據(jù)區(qū)中的數(shù)據(jù);調(diào)用業(yè)務(wù)邏輯或者服務(wù)的返回值也可以設(shè)置到請(qǐng)求上下文的數(shù)據(jù)區(qū)中。訪問請(qǐng)求上下文數(shù)據(jù)區(qū)中的數(shù)據(jù)可以采用r:XPATH_EXPRESSION或者不帶前綴,直接使用XPATH_
21、EXPRESSION訪問請(qǐng)求上下文數(shù)據(jù)區(qū)中的數(shù)據(jù)頁(yè)面流上下文數(shù)據(jù)區(qū) f:XPATH_EXPRESSION。頁(yè)面流上下文數(shù)據(jù)區(qū)的數(shù)據(jù)生命周期相當(dāng)于頁(yè)面流流程級(jí)別的變量,在一個(gè)頁(yè)面流實(shí)例中的不同的頁(yè)面,業(yè)務(wù)邏輯,賦值操作都可以使用頁(yè)面流上下文中的數(shù)據(jù)37走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理- -數(shù)據(jù)處理過程數(shù)據(jù)處理過程邏輯流數(shù)據(jù)處理MUO上下文數(shù)據(jù)區(qū) MUO上下文數(shù)據(jù)區(qū)中存放的是受管用戶數(shù)據(jù)對(duì)象,訪問的方式采用m:XPATH_EXPRESSION樣式的表達(dá)式來訪問和更新數(shù)據(jù)。在邏輯流中涉及用戶數(shù)據(jù)(HttpSession)傳遞的過程時(shí),因只允許對(duì)用戶的部分?jǐn)?shù)據(jù)有存取權(quán)限,這時(shí)就需要
22、根據(jù)session中的部分?jǐn)?shù)據(jù)構(gòu)造一個(gè)受控的用戶數(shù)據(jù)對(duì)象,用戶只能對(duì)該受管用戶數(shù)據(jù)對(duì)象做操作邏輯流上下文數(shù)據(jù)區(qū) 邏輯流上下文數(shù)據(jù)區(qū)和頁(yè)面流的請(qǐng)求上下文數(shù)據(jù)區(qū)比較類似,如果把一個(gè)邏輯流比作是一個(gè)Java方法,那么邏輯流上下文數(shù)據(jù)區(qū)中的數(shù)據(jù)包含的是這個(gè)Java方法傳入的參數(shù),以及這個(gè)方法中定義的成員變量。訪問邏輯流請(qǐng)求上下文的數(shù)據(jù)直接采用XPATH_EXPRESSION訪問,不需要加任何前綴38走進(jìn)走進(jìn)EOS-EOSEOS-EOS數(shù)據(jù)處理數(shù)據(jù)處理- -數(shù)據(jù)處理過程數(shù)據(jù)處理過程工作流數(shù)據(jù)處理工作流上下文數(shù)據(jù)區(qū) 流程上下文數(shù)據(jù)區(qū)保存的是工作流的流程相關(guān)數(shù)據(jù),這個(gè)數(shù)據(jù)區(qū)是可序列化的,工作流流程引擎在某些
23、場(chǎng)景會(huì)將這個(gè)數(shù)據(jù)區(qū)存儲(chǔ)到數(shù)據(jù)庫(kù)中。數(shù)據(jù)上下文的其他數(shù)據(jù)區(qū)都是保存到內(nèi)存中的。工作流使用到的數(shù)據(jù)只包含流程上下文39目錄目錄u 課程介紹u 走進(jìn)EOSu 主從維護(hù)u 單表維護(hù)u 運(yùn)算邏輯40單表維護(hù)單表維護(hù)手工實(shí)現(xiàn)單表向?qū)?1單表維護(hù)單表維護(hù)手工實(shí)現(xiàn)單表查詢單表刪除單表新增單表編輯42單表維護(hù)單表維護(hù)手工實(shí)現(xiàn)單表查詢案例描述案例開發(fā)測(cè)試運(yùn)行案例分析43單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例描述案例描述功能描述 提供頁(yè)面查詢顯示數(shù)據(jù)庫(kù)員工表EMP數(shù)據(jù) 頁(yè)面以員工姓名、性別作為查詢條件,其中員工姓名為模糊查詢,性別通過下拉的業(yè)務(wù)字典列表選取查詢條件 點(diǎn)擊頁(yè)面【查詢】按
24、鈕進(jìn)行查詢,查詢結(jié)果以分頁(yè)形式顯示44單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例描述案例描述相關(guān)表結(jié)構(gòu)45單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)案例開發(fā) 開發(fā)流程 構(gòu)件包設(shè)計(jì) 數(shù)據(jù)建模 頁(yè)面流開發(fā) 頁(yè)面開發(fā) 邏輯流開發(fā) 完善頁(yè)面流開發(fā) 完善頁(yè)面開發(fā)46單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)開發(fā)流程47單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā) 展開單擊EOS Studio菜單欄的“文件”,在彈出的菜單中選擇“新建EOS項(xiàng)目”,如圖48單表維
25、護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā) 彈出“新建EOS項(xiàng)目”的對(duì)話框,項(xiàng)目類型選擇“空項(xiàng)目”,如圖所示?!笆纠?xiàng)目”中的“EOS Sample示例項(xiàng)目”創(chuàng)建后可以直接運(yùn)行,這里不選擇。點(diǎn)擊【下一步】49單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā) 填寫新建項(xiàng)目所需的信息,輸入“項(xiàng)目名稱”為EOSLearning,其它信息都是安裝時(shí)設(shè)置的默認(rèn)信息。點(diǎn)擊【下一步】50單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā) 顯示“添加項(xiàng)目引用庫(kù)”的對(duì)話框。展開“系統(tǒng)引用庫(kù)”,可以看到“基礎(chǔ)構(gòu)件庫(kù)
26、”,這是EOS提供的基本的、可以高度復(fù)用的構(gòu)件集合,是所有項(xiàng)目默認(rèn)引用的構(gòu)件庫(kù)。如果項(xiàng)目要使用BPS,按著Control鍵增加選擇“BPS 基礎(chǔ)構(gòu)件庫(kù)”,這里我們不需要。選定“基礎(chǔ)構(gòu)件庫(kù)”,點(diǎn)擊【完成】51單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā) 系統(tǒng)完成該項(xiàng)目框架的創(chuàng)建,創(chuàng)建結(jié)果52單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)構(gòu)件包設(shè)計(jì) 在項(xiàng)目資源管理器視圖中,右鍵單擊“EOSTripping”,在彈出的菜單中選擇“創(chuàng)建構(gòu)件包”,如圖53單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案
27、例開發(fā)構(gòu)件包設(shè)計(jì) 在彈出的“創(chuàng)建構(gòu)件包”對(duì)話框中,輸入如圖所示參數(shù)54單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模 創(chuàng)建數(shù)據(jù)集合 打開EOS的資源管理器,在com.primeton.empmgr構(gòu)件包下的“數(shù)據(jù)-數(shù)據(jù)模型 -com.primeton.empmgr”上點(diǎn)右鍵,選擇“創(chuàng)建-數(shù)據(jù)集”,在彈出的創(chuàng)建數(shù)據(jù)集對(duì)話框中,配置相關(guān)參數(shù),如圖55單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模 連接數(shù)據(jù)庫(kù) 默認(rèn)在Studio的左下角有“數(shù)據(jù)庫(kù)資源管理器”視圖,在“連接oracle”上點(diǎn)右鍵,選擇“連接數(shù)據(jù)庫(kù)”
28、。如果“數(shù)據(jù)庫(kù)資源管理器”視圖沒有被打開,點(diǎn)擊Studio工具條上的“窗口-顯示視圖-數(shù)據(jù)庫(kù)資源管理器”即可打開。56單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模 導(dǎo)入實(shí)體 打開EOS的資源管理器,在構(gòu)件包下的“數(shù)據(jù)- 數(shù)據(jù)模型-com.primeton.empmgr-emp.datasetx”上點(diǎn)右鍵,選擇“創(chuàng)建-導(dǎo)入數(shù)據(jù)實(shí)體”,在彈出的“導(dǎo)入數(shù)據(jù)實(shí)體”視圖中,選擇emp.datasetx,點(diǎn)擊【下一步】,選擇之前導(dǎo)入的表EMP,點(diǎn)擊【完成】按鈕,如圖。57單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模
29、 導(dǎo)入實(shí)體 在emp.datasetx中雙擊剛才創(chuàng)建的數(shù)據(jù)實(shí)體Emp,修改字段的顯示名稱58單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模 導(dǎo)入實(shí)體 選中每個(gè)屬性點(diǎn)擊 圖標(biāo)進(jìn)行高級(jí)屬性配置,設(shè)置其在JSP頁(yè)面的表現(xiàn)形式。這里比較常用的是“顯示屬性”,它可對(duì)字段的基本屬性、數(shù)據(jù)校驗(yàn)等進(jìn)行設(shè)定。在EOS中通過web方式錄入和顯示數(shù)據(jù)的時(shí)候,格式會(huì)相對(duì)固定,在系統(tǒng)數(shù)據(jù)建模的過程中設(shè)計(jì)頁(yè)面的錄入/顯示方式,頁(yè)面編程中就可以直接使用數(shù)據(jù)模型中的顯示屬性,如圖59單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模 導(dǎo)入實(shí)體
30、 將查詢條件“empname”的驗(yàn)證類型設(shè)置為“漢字”60單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模 導(dǎo)入實(shí)體 SEX通過業(yè)務(wù)字典進(jìn)行顯示,雙擊“sex”屬性,然后給“sex”設(shè)置字典ID為“gender”61單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)數(shù)據(jù)建模 導(dǎo)入實(shí)體 建立的emp實(shí)體模型如圖所示。這時(shí)使用小技巧Alt+s,可以將英文屬性名稱和中文顯示名稱進(jìn)行切換62單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā) 在“資源管理器”中,展開“EOSTrippin
31、g-com.primeton.empmgr-展現(xiàn)-頁(yè)面流-com.primeton.empmgr”,在“com.primeton.empmgr”文件夾上點(diǎn)擊右鍵,在彈出的菜單中選擇“創(chuàng)建-頁(yè)面流”63單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā) 在彈出的“創(chuàng)建頁(yè)面流向?qū)А币晥D中,設(shè)置相關(guān)參數(shù)64單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā) 頁(yè)面流之后,Studio的“構(gòu)件編輯器”會(huì)自動(dòng)將剛剛創(chuàng)建的頁(yè)面流打開,默認(rèn)有“開始”和“結(jié)束”圖元。點(diǎn)擊頁(yè)面流所在的構(gòu)件編輯視圖上的“選用板”,選中“視圖”圖元后
32、拖拽到“empmgr.flowx”中,同理選中“選用板”中的“邏輯流”圖元,將其拖拽到“empmgr.flowx”中,再利用“連接線”,依次連接各圖元。65單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā)66單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā) 雙擊“視圖”兩個(gè)字,修改其名稱為“查詢頁(yè)面”,同理將“邏輯流”改為“查詢”。雙擊“action1”連線,彈出設(shè)置對(duì)話框,修改ActionName為“query”,拖拽“注釋”說明業(yè)務(wù)功能。最后頁(yè)面流設(shè)計(jì)如圖67單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -
33、單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 在頁(yè)面流的“查詢頁(yè)面”圖元上點(diǎn)擊右鍵,選擇“生成jsp頁(yè)面”, 如圖3-13所示。系統(tǒng)將在“EOSTrippingcom.primeton.empmgr展現(xiàn)頁(yè)面資源”路徑下自動(dòng)創(chuàng)建“empmgr_view0.jsp”頁(yè)面68單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 根據(jù)業(yè)務(wù)需求,刪除系統(tǒng)自動(dòng)生成的部分代碼(form表單內(nèi)的所有代碼),打開頁(yè)面編輯器上“選用板”中的“組合控件”,選中 “QueryForm”控件,如圖所示。將其拖拽到empmgr_view0.jsp頁(yè)面中與之間的空白處69單表維護(hù)單表
34、維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 在彈出的“QueryForm向?qū)А睂?duì)話框中配置相關(guān)參數(shù)。點(diǎn)擊【瀏覽】按鈕,選擇導(dǎo)入的Emp數(shù)據(jù)實(shí)體,在查詢條件字段列表設(shè)置查詢字段,其它設(shè)置如圖70單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 在設(shè)置查詢條件字段的時(shí)候,還可以對(duì)查詢字段的查詢規(guī)則、數(shù)據(jù)校驗(yàn)等進(jìn)行設(shè)置71單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 頁(yè)面中的查詢條件criteria對(duì)象和分頁(yè)信息page對(duì)象要傳到頁(yè)面流中,需要在頁(yè)面流中設(shè)置參數(shù)進(jìn)行綁定。打開新
35、建的empmgr.flowx,在頁(yè)面流編輯器中雙擊“查詢頁(yè)面”視圖,在彈出設(shè)置彈出框設(shè)置頁(yè)面的輸出參數(shù) 72單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā)一個(gè)邏輯構(gòu)件相當(dāng)于一個(gè)Java類,邏輯構(gòu)件是由多個(gè)邏輯流組成的,一個(gè)邏輯流相當(dāng)于一個(gè)Java類里面的方法73單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 在“資源管理器”中,展開“EOSTripping-com.primeton.empmgr-構(gòu)件- com.primeton.empmgr”,在“com.primeton.empmgr”文件夾上點(diǎn)擊右
36、鍵,在彈出的菜單中選擇“創(chuàng)建-邏輯構(gòu)件”74單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 在彈出的“創(chuàng)建邏輯構(gòu)件”對(duì)話框中的“名稱”項(xiàng)中輸入“emp”,點(diǎn)擊【完成】按鈕結(jié)束創(chuàng)建邏輯流75單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 在“資源管理器”中,展開“EOSTrippingcom.primeton.empmgr構(gòu)件 ponentType”,在“ponentType”構(gòu)件上點(diǎn)擊右鍵,在彈出的菜單中選擇“創(chuàng)建邏輯流”76單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例
37、開發(fā)邏輯流開發(fā) 在彈出的“創(chuàng)建邏輯流向?qū)А睂?duì)話框中的“文件名”項(xiàng)中輸入“queryEmp”,點(diǎn)擊【完成】按鈕結(jié)束創(chuàng)建邏輯流77單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 展開右邊“構(gòu)件庫(kù)”視圖中的“com.eos.foundation運(yùn)算邏輯DatabaseExt”,選中“queryEntitiesByCriteriaEntityWithPage(String,DataObject,DataObject)”運(yùn)算邏輯,它是用于根據(jù)查詢條件實(shí)體進(jìn)行分頁(yè)/指定查詢的構(gòu)件。按住鼠標(biāo)左鍵,將該運(yùn)算邏輯拖拽到邏輯流“queryEmp”編輯器中78單表維護(hù)單
38、表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 雙擊邏輯流的空白處,在彈出的“邏輯流屬性設(shè)置”對(duì)話框中,設(shè)置邏輯流的相關(guān)參數(shù)。在這個(gè)邏輯流中要傳入2個(gè)參數(shù):查詢條件對(duì)象criteria,分頁(yè)信息page。返回1個(gè)值,查詢所得的員工列表emps,它是SDO對(duì)象的數(shù)組。具體設(shè)置如圖所示參數(shù),點(diǎn)擊【確定】按鈕完成設(shè)置79單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 雙擊“查詢”運(yùn)算邏輯圖元,在彈出的“運(yùn)算邏輯屬性設(shè)置”對(duì)話框中,設(shè)置該方法的參數(shù)。這個(gè)方法有三個(gè)參數(shù):數(shù)據(jù)源默認(rèn)為default,查詢條件對(duì)象criter
39、ia和分頁(yè)信息page是上圖中定義的傳入邏輯流中的參數(shù)。一個(gè)返回值表示查出并返回符合條件的員工列表emps,與上圖設(shè)置的返回值名稱一致,即用邏輯流的返回值emps來接收運(yùn)算邏輯的返回值,也可以理解成為將運(yùn)算邏輯的返回值存放在emps中,并作為整個(gè)邏輯流的返回值返回到頁(yè)面流中。具體設(shè)置如圖所示,點(diǎn)擊【確定】后,保存邏輯流80單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā)81單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 打開邏輯流編輯器上的“選用板”,選擇“連接線”,依次連接各圖元。修改運(yùn)算邏輯的顯示名稱
40、,并拖拽“注釋”圖元。最終的邏輯流如圖82單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)邏輯流開發(fā)83單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)完善頁(yè)面流開發(fā) 打開empmgr.flowx,在頁(yè)面流編輯器中雙擊“查詢”圖元,在彈出的“調(diào)用邏輯流屬性設(shè)置”對(duì)話框中輸入如圖上圖所示參數(shù)。在參數(shù)配置表中“名稱”列是在邏輯流中設(shè)置的輸入?yún)?shù)和返回值,“值”列中的輸入?yún)?shù)值表示將頁(yè)面流中的criteria和page傳入邏輯流中,返回值表示頁(yè)面流中的emps來接收邏輯流的返回值emps,用于頁(yè)面的顯示。點(diǎn)擊【確定】按鈕完成設(shè)置84
41、單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 雙擊“結(jié)束”圖元,在彈出的“結(jié)束屬性設(shè)置”對(duì)話框中點(diǎn)擊【瀏覽】按鈕,選擇查詢頁(yè)面empmgr_view0.jsp作為返回頁(yè)面,點(diǎn)擊【確定】按鈕并保存85單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)完善頁(yè)面開發(fā) 在頁(yè)面流中返回頁(yè)面指向了查詢頁(yè)面,也就是說要在查詢頁(yè)面中顯示查詢結(jié)果。打開empmgr_view0.jsp,利用“選用板”中的“組合控件”下的“ViewList”來顯示查詢結(jié)果。選中“ViewList”,將其拖拽到QueryForm生成的代碼之后86單表維護(hù)單
42、表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 在彈出的“viewlist向?qū)А表?yè)面中,選擇數(shù)據(jù)實(shí)體Emp,其他參數(shù)設(shè)置如圖所示。其中除了設(shè)置顯示查詢結(jié)果的相關(guān)設(shè)置外,還提供了事件函數(shù),包括新增、修改、刪除等。用戶可以根據(jù)業(yè)務(wù)需求對(duì)其進(jìn)行添加、修改和刪除87單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -測(cè)試運(yùn)行測(cè)試運(yùn)行測(cè)試運(yùn)行 啟動(dòng)服務(wù) 復(fù)制URL IE瀏覽 執(zhí)行查詢88單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -測(cè)試運(yùn)行測(cè)試運(yùn)行啟動(dòng)服務(wù) 在EOS Studio的工具欄上,點(diǎn)擊“ ”,啟動(dòng)EOS Server,如圖89
43、單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -測(cè)試運(yùn)行測(cè)試運(yùn)行復(fù)制URL 在啟動(dòng)成功后,在資源管理器視圖,展開“EOSTripping-com.primeton.empmgr-展現(xiàn)-頁(yè)面流”,選中下面的empmgr.flowx,右鍵單擊,在彈出的菜單中選擇“復(fù)制URL”90單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -測(cè)試運(yùn)行測(cè)試運(yùn)行IE瀏覽 打開IE瀏覽器,在整個(gè)地址欄中右鍵粘貼,顯示“:8080/eos-default/com.primeton.empmgr.empmgr.flow”,回車91單表維護(hù)單表維護(hù)- -手工實(shí)
44、現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -測(cè)試運(yùn)行測(cè)試運(yùn)行執(zhí)行查詢 點(diǎn)擊查詢后,顯示結(jié)果如圖所示,則程序運(yùn)行正確92單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析案例分析 設(shè)置斷點(diǎn) 復(fù)制URL IE瀏覽 DEBUG93單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析設(shè)置斷點(diǎn) 打開頁(yè)面流empmgr.flowx,右鍵點(diǎn)擊“查詢”圖元,在彈出菜單中選擇“設(shè)置斷點(diǎn)”,或者選中“查詢”圖元,使用F4快捷鍵設(shè)置斷點(diǎn)94單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析復(fù)制URL 在啟動(dòng)成功后,在資源管理器視
45、圖,展開“EOSTripping-com.primeton.empmgr-展現(xiàn)-頁(yè)面流”,選中下面的empmgr.flowx,右鍵單擊,在彈出的菜單中選擇“復(fù)制URL”95單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析IE瀏覽 打開IE瀏覽器,在整個(gè)地址欄中右鍵粘貼,顯示“:8080/eos-default/com.primeton.empmgr.empmgr.flow”,回車96單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析DEBUG 在查詢條件輸入頁(yè)面的“員工姓名”中輸入“張”,然后點(diǎn)擊“
46、查詢”按鈕,之后Studio會(huì)打開如圖所示的“調(diào)試透視圖”,同時(shí)程序會(huì)暫停在斷點(diǎn)處,這時(shí)可以在“EOS變量”視圖區(qū)查看數(shù)據(jù)97單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析DEBUG 在“EOS變量”視圖中,我們可以看到頁(yè)面?zhèn)鬟f的查詢條件criteria,被頁(yè)面流引擎轉(zhuǎn)換成criteria(類型是com.primeton.das.criteria.criteriaType)對(duì)象,存放在requestContext中,如圖所示。同樣,查詢分頁(yè)信息page也被傳入到requestContext中98單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢-
47、-案例分析案例分析DEBUG 點(diǎn)擊單步跳入按鈕“ ”,運(yùn)行到邏輯流中的“開始”圖元處,產(chǎn)生bizContext和MUOContext,頁(yè)面流中的criteria和page也傳到了bizContext中。此時(shí)返回值emps為空,page對(duì)象里也只有部分屬性有值,如圖99單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析DEBUG 在點(diǎn)擊兩次跳入按鈕“ ”后,執(zhí)行完“查詢”運(yùn)算邏輯,可以看到bizContext中員工列表emps已經(jīng)被賦值,page對(duì)象的信息也相應(yīng)被更新,如圖100單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析DE
48、BUG 點(diǎn)擊單步跳入按鈕“ ”,邏輯流執(zhí)行完畢,返回到頁(yè)面流中。在“EOS變量”中可以看到邏輯流bizContext中的emps傳到頁(yè)面流requestContext區(qū)的員工列表emps中,而requestContext區(qū)中的page對(duì)象信息也被更新。此時(shí)切換到IE瀏覽器窗口可以看到程序回到查詢頁(yè)empmgr_view0.jsp,并顯示滿足查詢條件的記錄列表101單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表查詢單表查詢- -案例分析案例分析DEBUG 在“EOS變量”視圖中,我們可以看到頁(yè)面?zhèn)鬟f的查詢條件criteria,被頁(yè)面流引擎轉(zhuǎn)換成criteria(類型是com.primeton.
49、das.criteria.criteriaType)對(duì)象,存放在requestContext中,如圖所示。同樣,查詢分頁(yè)信息page也被傳入到requestContext中102單表維護(hù)單表維護(hù)手工實(shí)現(xiàn)單表刪除案例描述案例開發(fā)案例部署案例分析103單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例描述案例描述功能描述 當(dāng)用戶通過查詢得到了一個(gè)信息列表后,勾選要?jiǎng)h除的記錄前的復(fù)選框 點(diǎn)擊該“刪除”按鈕,系統(tǒng)將該記錄在數(shù)據(jù)庫(kù)里刪除 數(shù)據(jù)刪除后返回至查詢界面104單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例描述案例描述相關(guān)表結(jié)構(gòu)105單表維護(hù)單表維護(hù)-
50、-手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)案例開發(fā) 開發(fā)流程 頁(yè)面流開發(fā) 頁(yè)面開發(fā) 邏輯流開發(fā) 完善頁(yè)面流開發(fā)106單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)開發(fā)流程107單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā) 在左邊的資源管理器中,展開“EOSTrippingcom.primeton.empmgr展現(xiàn)頁(yè)面流com.primeton.empmgr”,雙擊打開下面的empmgr.flowx。根據(jù)需求,在查詢列表頁(yè)面進(jìn)行刪除操作時(shí),用戶將勾選所要?jiǎng)h除的記錄,然后調(diào)用刪除邏輯,最后返回至
51、初始查詢頁(yè)面。根據(jù)這個(gè)流程,頁(yè)面流設(shè)計(jì)如圖108單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā) 雙擊頁(yè)面流中的“查詢”視圖,在彈出的對(duì)話框里增加頁(yè)面的輸出參數(shù)“selectedObjects”,參數(shù)類型設(shè)置為“com.primeton.empmgr.emp.Emp”,刪除時(shí)有可能是多條記錄,所以參數(shù)要設(shè)置成“數(shù)組”,從而實(shí)現(xiàn)刪除操作的數(shù)組傳遞109單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā) 在打開查詢頁(yè)面empmgr_view0.jsp,在頁(yè)面尾部的javascript代碼里將刪除操作的相關(guān)代碼進(jìn)行修
52、改,主要是指定請(qǐng)求的頁(yè)面流里要執(zhí)行的action,在頁(yè)面流里,我們已經(jīng)設(shè)定了指向刪除操作的action為“delete”,所以在此處將_eosFlowAction的value設(shè)置為“delete”110單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)頁(yè)面開發(fā)在生成的JSP代碼里面,可以看到下面兩個(gè)預(yù)定義隱藏域111單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 在“資源管理器”中,展開“EOSTripping-com.primeton.empmgr-構(gòu)件- com.primeton.empmgr-ponentTyp
53、e”,在“ponentType”構(gòu)件上點(diǎn)擊右鍵,在彈出的菜單中選擇“創(chuàng)建-邏輯流”,彈出的“創(chuàng)建邏輯流向?qū)А睂?duì)話框,在“文件名”項(xiàng)中輸入“deleteEmp”,點(diǎn)擊【完成】按鈕結(jié)束創(chuàng)建邏輯流”112單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 左鍵雙擊deleteEmp構(gòu)件編輯器的空白處,在彈出的“邏輯流屬性設(shè)置”中,設(shè)置邏輯流的相關(guān)參數(shù)。在這個(gè)方法要傳入1個(gè)參數(shù):數(shù)組對(duì)象emps(頁(yè)面上復(fù)選框選擇的刪除記錄)。另外設(shè)置一個(gè)參數(shù)類型為“com.primeton.empmgr.emp.Emp”的變量,我們這里設(shè)置變量名稱為temp(可自行定義,只要
54、將其與循環(huán)開始條件里設(shè)置的循環(huán)迭代變量一致就可以)113單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 對(duì)數(shù)組進(jìn)行刪除,可以利用循環(huán)操作實(shí)現(xiàn)。從選用板拖拽“循環(huán)”圖元至deleteEmp編輯器中114單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 在“構(gòu)件庫(kù)”中展開“com.eos.foundation-運(yùn)算邏輯-DatabaseUtil”,選中根據(jù)主鍵刪除一條記錄的運(yùn)算邏輯“deleteEntity(String,DataObject)”115單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪
55、除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 按住鼠標(biāo)左鍵,將該運(yùn)算邏輯“deleteEntity(String,DataObject)”拖拽到“deleteEmp”編輯器中“循環(huán)”圖元的內(nèi)部116單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 為了避免在刪除過程中因?yàn)閿?shù)據(jù)庫(kù)連接或數(shù)據(jù)問題導(dǎo)致對(duì)某條數(shù)據(jù)無法刪除,我們通常需要添加事務(wù),一旦出錯(cuò),事務(wù)回滾,記錄均不會(huì)被刪除。從選用板拖拽“事務(wù)開始”、“事務(wù)提交”、“事務(wù)回滾”圖元,并用“連接線”將圖元依次連接起來(注意連接“事務(wù)回滾”所用的是“異常線”),最終的邏輯流如圖,點(diǎn)擊【完成】按鈕結(jié)束創(chuàng)建邏輯流”117
56、單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 雙擊“循環(huán)”圖元,設(shè)置循環(huán)迭代變量temp,和被迭代元素emps,表示:循環(huán)emps數(shù)組,每循環(huán)一次,數(shù)組中的一個(gè)對(duì)象賦值給temp對(duì)象,循環(huán)中的業(yè)務(wù)處理就可以直接對(duì)temp進(jìn)行操作118單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)邏輯流開發(fā) 雙擊“刪除”運(yùn)算邏輯圖元,在彈出的“運(yùn)算邏輯屬性設(shè)置”對(duì)話框中,設(shè)置該方法的參數(shù)。這個(gè)方法要傳入2個(gè)參數(shù):數(shù)據(jù)源默認(rèn)為default,要?jiǎng)h除的對(duì)象temp,執(zhí)行時(shí)根據(jù)temp的主鍵進(jìn)行刪除119單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)
57、手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例開發(fā)案例開發(fā)完善頁(yè)面流開發(fā) 在“資源管理器”中,打開empmgr.flowx,在頁(yè)面流編輯器中雙擊“刪除”圖元,在彈出的“調(diào)用邏輯流屬性設(shè)置”中首先選擇【瀏覽】,選擇邏輯流deleteEmp,然后在參數(shù)配置輸入如圖3-46所示參數(shù),表示將從頁(yè)面上傳到頁(yè)面流中的用戶勾選的刪除信息作為數(shù)組對(duì)象傳入邏輯流中120單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -測(cè)試運(yùn)行測(cè)試運(yùn)行測(cè)試運(yùn)行 啟動(dòng)服務(wù) 復(fù)制URL IE瀏覽 執(zhí)行查詢121單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -測(cè)試運(yùn)行測(cè)試運(yùn)行啟動(dòng)服務(wù) 在EOS Studio
58、的工具欄上,點(diǎn)擊“ ”,啟動(dòng)EOS Server,如圖122單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -測(cè)試運(yùn)行測(cè)試運(yùn)行復(fù)制URL 在啟動(dòng)成功后,在資源管理器視圖,展開“EOSTripping-com.primeton.empmgr-展現(xiàn)-頁(yè)面流”,選中下面的empmgr.flowx,右鍵單擊,在彈出的菜單中選擇“復(fù)制URL”123單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -測(cè)試運(yùn)行測(cè)試運(yùn)行IE瀏覽 打開IE瀏覽器,在整個(gè)地址欄中右鍵粘貼,顯示“:8080/eos-default/com.primeton.empmgr.
59、empmgr.flow”,回車124單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -測(cè)試運(yùn)行測(cè)試運(yùn)行執(zhí)行查詢 點(diǎn)擊查詢后,顯示結(jié)果如圖所示125單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -測(cè)試運(yùn)行測(cè)試運(yùn)行執(zhí)行查詢 勾選員工信息列表的第一條記錄,點(diǎn)擊【刪除】按鈕,頁(yè)面跳轉(zhuǎn)至查詢初始頁(yè)面,點(diǎn)擊【查詢】按鈕,查詢結(jié)果沒有剛才刪除的記錄,則程序運(yùn)行正確126單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案例分析案例分析案例分析 設(shè)置斷點(diǎn) 復(fù)制URL IE瀏覽 DEBUG127單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表刪除單表刪除- -案
60、例分析案例分析設(shè)置斷點(diǎn) 打開頁(yè)面流empmgr.flowx,右鍵點(diǎn)擊“查詢”圖元,在彈出菜單中選擇“設(shè)置斷點(diǎn)”,或者選中“查詢”圖元,使用F4快捷鍵設(shè)置斷點(diǎn)128單表維護(hù)單表維護(hù)手工實(shí)現(xiàn)單表新增案例描述案例開發(fā)案例部署案例分析129單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表新增單表新增- -案例開發(fā)案例開發(fā)案例開發(fā) 開發(fā)流程 頁(yè)面流開發(fā) 頁(yè)面開發(fā) 邏輯流開發(fā) 完善頁(yè)面流開發(fā)130單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表新增單表新增- -案例開發(fā)案例開發(fā)開發(fā)流程131單表維護(hù)單表維護(hù)- -手工實(shí)現(xiàn)手工實(shí)現(xiàn)- -單表新增單表新增- -案例開發(fā)案例開發(fā)頁(yè)面流開發(fā) 在左邊的資源管理器中,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 清明節(jié)安全家長(zhǎng)會(huì)
- 醫(yī)藥制造業(yè)仿制藥市場(chǎng)分析考核試卷
- 《管家婆云》課件
- 2024不動(dòng)產(chǎn)抵押擔(dān)保合同抵押擔(dān)保合同
- 塑料制品在娛樂休閑中的應(yīng)用考核試卷
- 學(xué)生詐騙安全班會(huì)
- SCH-34343-sodium-生命科學(xué)試劑-MCE
- 關(guān)于培訓(xùn)的目的和意義
- 電商企業(yè)制度規(guī)劃
- 2023年首都醫(yī)科大學(xué)附屬北京胸科醫(yī)院(含社會(huì)人員等)招聘筆試真題
- GB/T 28268-2012滾動(dòng)軸承沖壓保持架技術(shù)條件
- 學(xué)生處處長(zhǎng)競(jìng)聘演講競(jìng)職演講
- GB/T 15425-2014商品條碼128條碼
- GB/T 14258-2003信息技術(shù)自動(dòng)識(shí)別與數(shù)據(jù)采集技術(shù)條碼符號(hào)印制質(zhì)量的檢驗(yàn)
- FZ/T 93092-2014紡織機(jī)械高速繞線機(jī)
- -A letter of advice 建議信寫作教案- 高三英語(yǔ)一輪復(fù)習(xí)
- 海綿城市大數(shù)據(jù)一體化管控平臺(tái)建設(shè)綜合解決方案
- 第五章人體工程學(xué)及辦公空間設(shè)計(jì)課件
- 高中生物人教版必修一動(dòng)畫大全課件
- SPECTRO MAX直讀光譜儀安全操作規(guī)程
- 工程缺陷責(zé)任期終止證書
評(píng)論
0/150
提交評(píng)論