版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、使用 BPEL構(gòu)建 Web服務(wù)網(wǎng)絡(luò)【2005-12-27 09:47】【】【Oracle】受不斷成熟的 Web服務(wù)標(biāo)準(zhǔn)的鼓舞,越來越多的組織正在協(xié)作環(huán)境中使用 Web服務(wù)。BPEL正快速成為為實(shí)現(xiàn)企業(yè)間協(xié)作而編排這些 Web服務(wù)的平臺(tái)。BPEL為構(gòu)建在線市場或協(xié)作網(wǎng)絡(luò)的公司提供了引人矚目的好處,即基于標(biāo)準(zhǔn)的方法和松散耦合的流程集成。而 Web服務(wù)提供的激動(dòng)人心的新功能卻隱藏著某些風(fēng)險(xiǎn)。在許多情況下,如果在設(shè)計(jì)時(shí)未解決某些技術(shù)和管理難題,則合作伙伴關(guān)系將會(huì)破裂或集成成本飆升:合作伙伴必須事先進(jìn)行充分的協(xié)商,約定根據(jù)特定標(biāo)準(zhǔn)開展業(yè)務(wù)。傳輸協(xié)議、交互目的、消息格式以及業(yè)務(wù)約束必須實(shí)現(xiàn)清晰地通信。連接
2、網(wǎng)絡(luò)必須是一個(gè)簡單的過程;協(xié)作網(wǎng)絡(luò)主要通過不斷壯大取得成功。用戶必須在運(yùn)行時(shí)輕松地找到業(yè)務(wù)服務(wù),否則將在很大程度上無法實(shí)現(xiàn)面向服務(wù)體系結(jié)構(gòu) (SOA)這一承諾。(服務(wù)信息庫在這方面很有用。)如果開發(fā)人員無法輕松地找到和重用服務(wù),則這些服務(wù)本質(zhì)上就算不存在。合作伙伴應(yīng)能夠?qū)崟r(shí)監(jiān)控 Web服務(wù)。最終用戶應(yīng)能跟蹤特定訂單的進(jìn)度,并且貿(mào)易合作伙伴應(yīng)能診斷業(yè)務(wù)流程中的特定瓶頸。如果協(xié)作網(wǎng)絡(luò)在托管環(huán)境中運(yùn)行,這些難題將變得更為棘手。在該模型中,合作伙伴將他們原有應(yīng)用程序提供的功能公開到 Web服務(wù)中,并將此 Web服務(wù)發(fā)布到集中的信息庫中。主機(jī)負(fù)責(zé)編排復(fù)雜的業(yè)務(wù)流程,后者反過來利用合作伙伴的 Web服務(wù)。
3、在 BPEL指南的這一部分中,我將把歐洲航天局 (ESA)項(xiàng)目(來自 Spacebel s.a.的小組參與了該項(xiàng)目)作為一個(gè)案例分析,介紹與這些挑戰(zhàn)相關(guān)的體系結(jié)構(gòu)注意事項(xiàng)。此外,我還將介紹該項(xiàng)目如何利用 BPEL作用域、BPEL域和 Oracle BPEL流程管理器 API構(gòu)建一個(gè)“易于合作伙伴使用的”協(xié)作網(wǎng)絡(luò)。ESA網(wǎng)絡(luò)概述ESA已著手制定一個(gè)戰(zhàn)略性計(jì)劃,旨在完全基于開放標(biāo)準(zhǔn)創(chuàng)建一個(gè) BPEL驅(qū)動(dòng)的服務(wù)提供商協(xié)作網(wǎng)絡(luò)。該網(wǎng)絡(luò)稱作服務(wù)支持環(huán)境 (SSE)網(wǎng)絡(luò),它組合第三方的地球觀測 (EO)和地理信息系統(tǒng) (GIS)服務(wù),提供增值的復(fù)合型服務(wù)。SSE是一個(gè)不斷壯大的網(wǎng)絡(luò),目前包括遍布 9個(gè)不同
4、國家/地區(qū)的 20多個(gè)合作伙伴。如圖 1所示,SSE是一個(gè)支持 BPEL的網(wǎng)絡(luò)的簡單實(shí)現(xiàn)。ESA充當(dāng)中介,它使用各種 Web服務(wù)標(biāo)準(zhǔn)(如 SOAP、WSDL、WS-Addressing、WS-Inspection等)為不同合作伙伴之間基于流程的協(xié)作提供支持。該網(wǎng)絡(luò)在集中星型拓?fù)洵h(huán)境中運(yùn)行:服務(wù)提供商使用 Oracle BPEL Designer將不同類型的地球觀測和 GIS服務(wù)集中到一個(gè)信息庫中,從而創(chuàng)建了一個(gè)不斷擴(kuò)大的服務(wù)目錄。圖 1 SSE體系結(jié)構(gòu)SSE提供執(zhí)行以下任務(wù)所必需的基礎(chǔ)架構(gòu)承載和管理充當(dāng)可用服務(wù)目錄的中央信息庫在中央目錄內(nèi)部注冊和搜索服務(wù)在 Oracle BPEL引擎內(nèi)部執(zhí)行短
5、期和長期的業(yè)務(wù)流程使合作伙伴能夠使用 Oracle BPEL流程管理器控制臺(tái)監(jiān)控 Web服務(wù)的執(zhí)行最終用戶通過瀏覽可用服務(wù)目錄請求特定服務(wù)。SSE根據(jù)請求調(diào)用相關(guān)的業(yè)務(wù)流程。該業(yè)務(wù)流程調(diào)用 Web服務(wù)(運(yùn)行在服務(wù)提供商處)來完成請求。SSE支持同步和異步的交互模型。ESA廣泛使用 Oracle BPEL流程管理器 API來為提供商和最終用戶提供最大程度的靈活性和易用性體驗(yàn)。設(shè)計(jì) Web服務(wù)網(wǎng)絡(luò)開放標(biāo)準(zhǔn)正在不斷改變集成的規(guī)則。BPEL提供了一個(gè)以流程為中心的跨企業(yè)集成方法,因此可以使用 BPEL流程流定義合作伙伴集成。SOA與 BPEL的這一組合為構(gòu)建松散耦合的協(xié)作網(wǎng)絡(luò)提供了一個(gè)前所未有的良機(jī)。
6、集中星型(SSE采用的方法)是一個(gè)廣泛使用的網(wǎng)絡(luò)拓?fù)洌M織通過它與各種合作伙伴建立連接。網(wǎng)絡(luò)也可以采用單向?qū)Φ饶P?。這種情況下,每個(gè)合作伙伴都為 Web服務(wù)安全性和供應(yīng)提供了一個(gè)平臺(tái)。現(xiàn)在,我們來看網(wǎng)絡(luò)設(shè)計(jì)的四個(gè)方面:設(shè)置接口關(guān)系簡化合作伙伴支持創(chuàng)建集中的服務(wù)注冊表為合作伙伴和最終用戶提供自助監(jiān)視功能設(shè)置接口關(guān)系。協(xié)作網(wǎng)絡(luò)設(shè)計(jì)從定義參與規(guī)則開始。這些規(guī)則指定在業(yè)務(wù)流程中交換的消息、這些消息的交換順序以及該消息的物理屬性。要正確通信,所有合作伙伴都必須能夠回答以下問題。交互的目的是請求報(bào)價(jià)還是訂單?消息格式 -消息是如何編碼的?詞匯應(yīng)如何構(gòu)造消息,以便其他各方可以理解和處理它們?業(yè)務(wù)約束 -應(yīng)在
7、多長時(shí)間內(nèi)響應(yīng)請求?通信渠道 -是否應(yīng)把消息加密?為幫助合作伙伴回答以上問題,ESA公布了一個(gè)接口控制文檔來定義這些術(shù)語。本文檔正式確定了在多個(gè) ESA贊助的項(xiàng)目中建立、改進(jìn)和驗(yàn)證的技術(shù)集成規(guī)則?;谙⒌?SOAP(通過 HTTP或 HTTPS實(shí)現(xiàn)安全通信)是 SSE服務(wù)器與服務(wù)提供商之間采用的通信協(xié)議。(對于本文檔,我們將分析 WS-Security的用法。)Web服務(wù)定義語言(WSDL)是唯一一個(gè)綁定了所有實(shí)體的接口協(xié)定;服務(wù)提供商必須創(chuàng)建一個(gè) WSDL文件,用于描述它的 SOAP接口并使其他合作伙伴可以訪問該接口。WSDL文件中包含的某些信息是固定的,但必須提供以下信息:根據(jù)選定的交互
8、模型(搜索、RFQ、訂購)選擇的操作服務(wù)的物理位置服務(wù) XSD模式的導(dǎo)入為便于服務(wù)、一致性和消息轉(zhuǎn)換的比較,ESA要求使用 XSD 模式表示 XML有效載荷。SSE還要求使用主 XSLT文檔來確保表示層中的一致性。必須按如下所示在每個(gè)服務(wù)中導(dǎo)入模板樣式表:xsl:apply-imports使用從 SSE樣式表中導(dǎo)入的模板規(guī)則處理根節(jié)點(diǎn)。注冊該服務(wù)時(shí),服務(wù)提供商提供 XML模式、WSDL和 XSLT文件的 URL。SSE強(qiáng)制使用文檔樣式的 SOAP。該方法允許使用 XML模式對輸入服務(wù)和服務(wù)輸出的數(shù)據(jù)進(jìn)行詳細(xì)的指定并驗(yàn)證傳入和傳出的消息。ESA采用的方法為打算構(gòu)建一個(gè)合作伙伴數(shù)量有限的 Web服
9、務(wù)網(wǎng)絡(luò)的公司提供了一個(gè)便捷解決方案。隨著網(wǎng)絡(luò)規(guī)模的增長,將需要引入新的消息格式、通信規(guī)則、安全性以及傳輸機(jī)制。簡化合作伙伴的參與。任何網(wǎng)絡(luò)的壯大都離不開合作伙伴的輕松參與。下列因素將對此過程產(chǎn)生很大的影響。與集線器的集成 -合作伙伴如何創(chuàng)建和提交他們的 Web服務(wù)?集線器能否支持不同的傳輸協(xié)議?流程管理 -不同合作伙伴流程之間是否有清晰的界限?合作伙伴能否修改它的業(yè)務(wù)流程而不影響整個(gè)網(wǎng)絡(luò)的可靠性?能否使用元數(shù)據(jù)定義即時(shí)生成流程?SSE通過降低對服務(wù)提供商的技術(shù)要求成功穩(wěn)固了與其合作伙伴的聯(lián)系。ESA通過分發(fā)合作伙伴連接軟件、劃分開發(fā)平臺(tái)以及自動(dòng)代表合作伙伴生成流程流實(shí)現(xiàn)了該目標(biāo)。例如,為加快集
10、成流程的速度,ESA分發(fā)了 SSE Toolbox,這是一個(gè)在 SSE與服務(wù)提供商的現(xiàn)有系統(tǒng)間充當(dāng)接口的免費(fèi)工具包?;?Sun Java Web Services Developer Pack的 SSE Toolbox提供了一個(gè)支持各種后端集成機(jī)制(如 FTP、文件交換、JDBC、調(diào)用 Java API、HTTP等)的 XML腳本語言。它還自動(dòng)生成注冊服務(wù)所需的 WSDL文件。不同的合作伙伴將多個(gè)服務(wù)提供給中央信息庫。開發(fā)和部署環(huán)境的劃分使合作伙伴間的更改互不影響。SSE通過在 Oracle BPEL流程管理器中使用 BPEL域有效地利用了劃分功能。BPEL域使開發(fā)人員或管理員能夠?qū)?Ora
11、cle BPEL流程管理器的單個(gè)實(shí)例劃分為多個(gè)虛擬 BPEL沙箱。BPEL域由一個(gè) ID標(biāo)識(shí),并由一個(gè)口令保護(hù)。當(dāng)服務(wù)提供商在 SSE上注冊時(shí),將調(diào)用 Oracle BPEL流程管理器 API自動(dòng)創(chuàng)建一個(gè) BPEL域保存服務(wù)定義文件。以下是一個(gè) createDomain方法示例:/* Create new domain space for a service provider to hold her/his services workflow* definitions files in * param domainName The Id to identify the domain* para
12、m password The password used to login to the corresponding domain* exception RemoteException System communication error* exception WorkflowException Thrown if any error happens on the server that prevent the delete * */public void createDomain(String domainName, String password)throws RemoteExceptio
13、n, WorkflowExceptionif(ml.isDebugEnabled() ml.debug(Enter createDomain(domain = + domainName + password = + password); /* check if the being created domain exist? */ try Locator locator = new Locator(domainName, password);(Stop creating domain: + domainName + because it has already existed.);throw n
14、ew WorkflowException(1019); catch (com.oracle.bpel.client.ServerException e) ; try /obtain the domain admin password from the system configuration SSE.properties fileString domainAdminPassword = SystemConfigurationInfo.getProperty(WorkflowConstant.BPEL_DOMAIN_ADMIN_PASSWORD);ServerAuth auth = Server
15、AuthFactory.authenticate( domainAdminPassword, localhost );if(ml.isDebugEnabled() ml.debug(obtain authentication ok);/ Create server object . this is our service interface /Server server = new Server( auth );/ Domain id is newDomain, the password is myPasswordif(ml.isDebugEnabled() ml.debug(create s
16、erver instance ok); / Map domainProperties = new HashMap(); domainProperties.put( Configuration.DATASOURCE_JNDI, SystemConfigurationInfo.getProperty(CommonConstant.DEFAULT_BPELDOMAIN_DS_JNDI); domainProperties.put( Configuration.TX_DATASOURCE_JNDI, SystemConfigurationInfo.getProperty(CommonConstant.
17、DEFAULT_BPELDOMAIN_DS_JNDI); if(ml.isDebugEnabled() ml.debug(create domain - ds jndi property key/value: + Configuration.DATASOURCE_JNDI + / + SystemConfigurationInfo.getProperty(CommonConstant.DEFAULT_BPELDOMAIN_DS_JNDI); if(ml.isDebugEnabled() ml.debug(create domain - tx_ds jndi property key/value
18、: + Configuration.TX_DATASOURCE_JNDI + / +SystemConfigurationInfo.getProperty(CommonConstant.DEFAULT_BPELDOMAIN_DS_JNDI);server.createDomain(domainName, password, domainProperties); if(ml.isDebugEnabled() ml.debug(Enter createDomain(domain = + domainName + password = + password); catch( com.oracle.b
19、pel.client.ServerException se )ml.error(se.getMessage();if(ml.isDebugEnabled() se.printStackTrace();throw new WorkflowException(1018, se.getCause(); 在下面 runBuildScript方法的實(shí)現(xiàn)中,通過一個(gè) Ant構(gòu)建腳本訪問 Oracle bpelc 函數(shù)。runBuildScript方法調(diào)用一個(gè) Ant項(xiàng)目文件,后者隨后調(diào)用 bpelc編譯和部署服務(wù)提供商的 BPEL流程。/* execute the ant script to build
20、an Oracle BPEL process that implements the workflow.* The script also deploys the workflow to the service domains.* All input information is provided under the props at the input param.* param props Contain all necessary properties used to build/deploy the workflow BPEL process* throws WorkflowExcep
21、tion */private void runBuildScript(String buildFilename, Properties props) throws WorkflowExceptionif(ml.isDebugEnabled()ml.debug(Enter runBuildScript(buildFileName = + buildFilename +, properties = .);try Project project = new Project();project.init();File buildFile = new File(buildFilename);if (!b
22、uildFile.exists() throw new WorkflowException(1015);if(ml.isDebugEnabled() ml.debug(ant build file: + buildFile.getAbsolutePath();ProjectHelper.configureProject(project, buildFile);/prepare logger for the project buildPrintStream out = System.out;BuildLogger logger = new DefaultLogger();logger.setMe
23、ssageOutputLevel(Project.MSG_DEBUG);logger.setOutputPrintStream(out);logger.setErrorPrintStream(out);project.addBuildListener(logger);/set project propertiesEnumeration keys = props.keys();while(keys.hasMoreElements()String key = keys.nextElement().toString();project.setProperty(key, props.getProper
24、ty(key); / test /excute default targetproject.executeTarget(project.getDefaultTarget(); if(ml.isDebugEnabled()ml.debug(Exit runBuildScript(buildFileName = + buildFilename + , properties = .); catch (Exception ex) ml.error(ex.getMessage();if(ml.isDebugEnabled() ex.printStackTrace();throw new Workflow
25、Exception(1002,ex.getCause(); 在 Web服務(wù)網(wǎng)絡(luò)設(shè)計(jì)中,應(yīng)考慮使用 BPEL域?yàn)樗邢嚓P(guān)各方劃分流程設(shè)計(jì)和部署平臺(tái)。以下是一些可能的應(yīng)用:將單個(gè) Oracle BPEL流程管理器實(shí)例劃分為多開發(fā)人員環(huán)境。這種情況下,域 ID通常標(biāo)識(shí)擁有該域的開發(fā)人員。將單個(gè) Oracle BPEL流程管理器實(shí)例劃分為開發(fā)環(huán)境和 QA環(huán)境。這種情況下,域 ID可能為“test”和“QA”。將單個(gè) Oracle BPEL流程管理器實(shí)例劃分為一個(gè)可以由多個(gè)部門或合作伙伴使用的環(huán)境。這些情況下,域 ID是部門或合作伙伴的名稱。創(chuàng)建中央服務(wù)信息庫。定義了網(wǎng)絡(luò)關(guān)系后,合作伙伴便可以免費(fèi)加入并
26、提供他們的服務(wù)。當(dāng)然,發(fā)布和搜索這些服務(wù)的功能是 SOA平臺(tái)的一個(gè)基礎(chǔ)功能。在該流程中,合作伙伴將他們的 Web服務(wù)發(fā)布到一個(gè)中央信息庫,有關(guān)該服務(wù)的所有信息都在這里進(jìn)行管理。這個(gè)中央框架提高了服務(wù)的可重用性,最大限度地降低了定位服務(wù)所需的工作量和時(shí)間。沒有中央信息庫將導(dǎo)致不一致和混亂。這反過來會(huì)降低網(wǎng)絡(luò)的靈活性和開放性。SSE網(wǎng)絡(luò)頻繁使用中央 Web服務(wù)信息庫;合作伙伴使用 Web服務(wù)檢查語言 (WSIL)發(fā)現(xiàn)可用服務(wù)。服務(wù)提供商可以通過選擇相應(yīng)的 WSDL文件重用現(xiàn)有的 Web服務(wù)(由網(wǎng)絡(luò)中的其他提供商提供)??梢栽?Oracle BPEL Designer工具配置文件 UDDIProvi
27、derList.xml中添加 WS-Inspection URL /inspection.wsil來完成此任務(wù),如下所示。 ESA SSE Portal wsil /inspection.wsil 位于服務(wù)提供商處的 Oracle BPEL Designer連接到 SSE服務(wù)器并使用 WS-Inspection協(xié)議發(fā)現(xiàn)可用服務(wù)及其 WSDL文件。連接到 WS-Inspection服務(wù)器后,將顯示所有可用服務(wù)列表,如圖 2中所示。圖 2可用 SSE服務(wù)列表對于每個(gè)服務(wù),將提供相應(yīng)的 WSDL文件和簡短的文字描述??梢酝ㄟ^選擇 WSDL文件為該服務(wù)添加一個(gè)合作伙伴鏈接。構(gòu)建流程流后,可以使用 BP
28、EL控制臺(tái)將其部署在 SSE門戶上。(在它的下個(gè)版本中,SSE將實(shí)現(xiàn) UDDI注冊表與 Oracle BPEL的集成。注冊新服務(wù)時(shí),還將在此 UDDI注冊表中自動(dòng)注冊該服務(wù)。該集成將簡化使用外部工具的服務(wù)發(fā)現(xiàn),目前僅當(dāng)這些工具支持 WS-Inspection時(shí)才能發(fā)現(xiàn)服務(wù)。)盡管您不必建立服務(wù)信息庫即可構(gòu)建 SOA并獲得它的眾多好處,但從長遠(yuǎn)來看,信息庫是不可或缺的。如果服務(wù)的作用域只是一個(gè)項(xiàng)目,則架構(gòu)師不用信息庫也能處理。但大多數(shù)企業(yè)都擁有各種服務(wù)和合作伙伴,并且這些服務(wù)和合作伙伴的大部分都在不斷變化。提供自助式監(jiān)視。在多方參與業(yè)務(wù)流程的協(xié)作網(wǎng)絡(luò)中,對業(yè)務(wù)流程執(zhí)行情況的監(jiān)視非常關(guān)鍵,因此可以
29、將圍繞業(yè)務(wù)流程的關(guān)鍵性能指標(biāo)與服務(wù)級(jí)協(xié)議相聯(lián)系。(例如,加入網(wǎng)絡(luò)的關(guān)鍵要求之一可能是確認(rèn)兩小時(shí)內(nèi)的報(bào)價(jià)請求。)監(jiān)視業(yè)務(wù)流程可以更好地獲知特定業(yè)務(wù)流程實(shí)例執(zhí)行的時(shí)間、出現(xiàn)延遲的原因以及如何為未來事務(wù)修復(fù)此問題。應(yīng)向合作伙伴和最終用戶提供該級(jí)別的診斷。通過創(chuàng)建自助式環(huán)境,合作伙伴和最終用戶可以跟蹤他們的單個(gè)流程,從而減輕中央監(jiān)視框架檢測到的問題??梢允褂?Oracle BPEL控制臺(tái)監(jiān)視和調(diào)試業(yè)務(wù)流程(參見圖 3)。ESA和服務(wù)提供商利用 BPEL控制臺(tái)跟蹤正在運(yùn)行和已經(jīng)完成的 BPEL流程實(shí)例數(shù)量、流程實(shí)例的平均持續(xù)時(shí)間(從而細(xì)分流程中消耗的時(shí)間)以及文本格式的流程實(shí)例審計(jì)線索,從而使合作伙伴可
30、以查看中間結(jié)果。圖 3使用 Oracle BPEL控制臺(tái)監(jiān)視業(yè)務(wù)流程此外,訂購了特定服務(wù)的最終用戶可以跟蹤其訂單的狀態(tài)??梢允褂?Oracle BPEL流程管理器 API在 BPEL控制臺(tái)的外部顯示該信息。建議服務(wù)提供商在他們的 BPEL流程中使用有意義的作用域名稱;在運(yùn)行時(shí),門戶使用 IInstanceHandle.getStatus() API提取當(dāng)前 BPEL“作用域”的名稱向最終用戶顯示該進(jìn)度的信息。作用域按層次結(jié)構(gòu)組織,一個(gè)復(fù)雜的業(yè)務(wù)流程可以分為幾個(gè)作用域。它們?yōu)榛顒?dòng)提供了行為上下文。通過在 BPEL流程中使用有意義的作用域名稱,合作伙伴可以跟蹤“短期”和“長期”業(yè)務(wù)流程的狀態(tài)。例如
31、以下getOrderSubstatus方法的實(shí)現(xiàn)。該方法使 ESS合作伙伴可以使用在 bpel文件中執(zhí)行的作用域的名稱獲取 BPEL流程實(shí)例的當(dāng)前狀態(tài)。* call the Oracle BPEL API to get current status of the workflow instance, corresponding to* the ordered supplied at the input* param ordered The order identified* param workflowId The workflow name (or Id) that is processin
32、g the order stage.* Normally, there are two stages of an order:send(process)rfq and send(process) order* param domain The domain that the order workflow belongs to* param password The password used to login to the workflow domain* return the current status of the workflow instance - particularly, it is the name of the current* active scope in the workflow BPEL file. * throws RemoteException* throws WorkflowException*/public String getOrderSubstatus(String ordered, String workflowId, String domain, String pa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化旅游景區(qū)運(yùn)營承包合同3篇
- 2025年度車輛質(zhì)押借款業(yè)務(wù)操作規(guī)范合同3篇
- 個(gè)人承包水溝工程合同
- 二零二五年度文化資產(chǎn)存貨質(zhì)押擔(dān)保與銷售合同4篇
- 二零二五年度國際貿(mào)易出口合同法律風(fēng)險(xiǎn)防范手冊3篇
- 二零二四年度展覽搭建與多媒體互動(dòng)體驗(yàn)合同3篇
- 二零二五年度場建筑鋼材行業(yè)信用體系建設(shè)合同4篇
- 二零二五年度衛(wèi)生間清潔效果評估與改進(jìn)合同2篇
- 二零二五年度商鋪?zhàn)赓U合同結(jié)合2025年新興業(yè)態(tài)的多元化租賃協(xié)議4篇
- 人事勞動(dòng)合同簡易版
- GB/T 44890-2024行政許可工作規(guī)范
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 2024年滬教版一年級(jí)上學(xué)期語文期末復(fù)習(xí)習(xí)題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學(xué)英語六年級(jí)下冊全冊教案
- 汽車噴漆勞務(wù)外包合同范本
- 微項(xiàng)目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學(xué)選擇性必修第一冊(魯科版)
- 廣東省廣州市黃埔區(qū)2024-2025學(xué)年八年級(jí)物理上學(xué)期教學(xué)質(zhì)量監(jiān)測試題
- 2024年重慶南開(融僑)中學(xué)中考三模英語試題含答案
- 財(cái)務(wù)管理學(xué)(第10版)課件 第1章 總論
評論
0/150
提交評論