亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

舊有應(yīng)用的移植的制作方法

文檔序號(hào):6477789閱讀:353來(lái)源:國(guó)知局

專利名稱::舊有應(yīng)用的移植的制作方法
技術(shù)領(lǐng)域
:本發(fā)明總體上涉及將業(yè)務(wù)規(guī)則和數(shù)據(jù)從舊有應(yīng)用移植到指定的應(yīng)用。
背景技術(shù)
:商業(yè)和政府機(jī)構(gòu)經(jīng)常投資于應(yīng)用,并且其多年的成功運(yùn)營(yíng)依賴于應(yīng)用。應(yīng)用(通常稱為舊有(legacy)應(yīng)用)必須進(jìn)行維護(hù);然而,在某些時(shí)間點(diǎn),維護(hù)舊有應(yīng)用變得困難。由此,商業(yè)或者政府機(jī)構(gòu)可能希望將舊有應(yīng)用移植到可以包含新硬件和軟件的目標(biāo)應(yīng)用。通常,重點(diǎn)在于促進(jìn)該移植,以降低對(duì)運(yùn)營(yíng)的破壞。作為上述情況的示例,多個(gè)政府機(jī)構(gòu)使用Accenture稅務(wù)管理系統(tǒng)(TaxAdministrativeSystem,TAS),以從稅務(wù)管轄權(quán)內(nèi)的個(gè)體和商家征收稅收。盡管稅務(wù)管理系統(tǒng)(對(duì)應(yīng)于舊有應(yīng)用)按照原始設(shè)計(jì)需求執(zhí)行,但是政府機(jī)構(gòu)可能發(fā)現(xiàn)該系統(tǒng)的維護(hù)正變得日益困難,因?yàn)榕f有應(yīng)用是通過(guò)稱為COBOL的較為初級(jí)軟件語(yǔ)言編寫的。而且,#斤的(目才示)應(yīng)用(例^口,SAPPublicSectorCollectionandDisbursement(PSCD)軟件和/或MicrosoftBizTalk業(yè)務(wù)規(guī)則引擎)可以提供相對(duì)于舊有應(yīng)用的增強(qiáng)。毫無(wú)疑問(wèn),對(duì)稅收的任何破壞對(duì)于政府職能的運(yùn)行而言代價(jià)都可能是非常高的。上述現(xiàn)有技術(shù)的示例說(shuō)明管理廣大市場(chǎng)(strongmarket)需要促進(jìn)從舊有應(yīng)用到目標(biāo)應(yīng)用的移植。
發(fā)明內(nèi)容本發(fā)明的各方面提供用于從舊有應(yīng)用獲得第一組件并隨后根據(jù)該第一組件的舊有元素生成中間狀態(tài)元素的裝置、計(jì)算機(jī)介質(zhì)和方法。該中間狀態(tài)元素被轉(zhuǎn)換為目標(biāo)應(yīng)用所使用的目標(biāo)元素。根據(jù)本發(fā)明的一個(gè)方面,從舊有應(yīng)用獲得規(guī)則組件,其包含以第一軟件語(yǔ)言指定的舊有源代碼。根據(jù)包含在規(guī)則組件中的舊有規(guī)則來(lái)生成中間狀態(tài)表達(dá)。將中間狀態(tài)表達(dá)轉(zhuǎn)換為目標(biāo)規(guī)則,其被配置為由執(zhí)行目標(biāo)規(guī)則的目標(biāo)應(yīng)用所執(zhí)行。目標(biāo)應(yīng)用可以包含以第二軟件語(yǔ)言指定的目標(biāo)源代碼。而且,從舊有應(yīng)用獲得數(shù)據(jù)組件,并且根據(jù)舊有數(shù)據(jù)元素生成中間數(shù)據(jù)元素。將中間數(shù)據(jù)元素轉(zhuǎn)換為目標(biāo)應(yīng)用在沖丸行目標(biāo)少見(jiàn)則時(shí)可以訪問(wèn)的目標(biāo)數(shù)據(jù)元素。根據(jù)本發(fā)明的另一方面,從規(guī)則組件中提取詞匯表表項(xiàng)。利用中間狀態(tài)表達(dá)對(duì)詞匯表表項(xiàng)進(jìn)行聚集,以形成目標(biāo)規(guī)則。隨后將目標(biāo)規(guī)則部署到目標(biāo)應(yīng)用。根據(jù)另一方面,從舊有應(yīng)用獲得其他組件,例如,對(duì)應(yīng)關(guān)系、接口或者報(bào)表組件,并且生成相應(yīng)的中間元素。將中間元素轉(zhuǎn)換為目標(biāo)應(yīng)用。根據(jù)本發(fā)明的一個(gè)方面,舊有系統(tǒng)涉及使用COBOL源軟件的稅務(wù)管理系統(tǒng)。在附圖中以示例而非限制的方式示出了本發(fā)明,其中相似的標(biāo)號(hào)指示類似的元素,其中圖1示出了按照本發(fā)明一個(gè)實(shí)施方式的在其中將舊有應(yīng)用移植到指定應(yīng)用的架構(gòu)。圖2示出了按照本發(fā)明一個(gè)實(shí)施方式的稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換器的架構(gòu)。圖3示出了按照本發(fā)明一個(gè)實(shí)施方式的從TAS到AERS(AccentureEnterpriseRevenueSolution,即Accenture企業(yè)4文益解;夾方案)規(guī)則引擎轉(zhuǎn)換的高層流程。圖4示出了按照本發(fā)明一個(gè)實(shí)施方式的用于轉(zhuǎn)換規(guī)則組件的架構(gòu)。圖5示出了按照本發(fā)明一個(gè)實(shí)施方式的用于執(zhí)行形成規(guī)則轉(zhuǎn)換的高層流程。圖6示出了按照本發(fā)明一個(gè)實(shí)施方式的用于執(zhí)行后端規(guī)則轉(zhuǎn)換的高層流程。圖7示出了按照本發(fā)明一個(gè)實(shí)施方式的數(shù)據(jù)移植過(guò)程。圖8示出了按照本發(fā)明一個(gè)實(shí)施方式的稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換器過(guò)程。圖9示出了按照本發(fā)明一個(gè)實(shí)施方式的用于從稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換收入賬目表的高層流程。圖10示出了按照本發(fā)明一個(gè)實(shí)施方式的用于從稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換數(shù)據(jù)組件的高層流程。圖11示出了按照本發(fā)明一個(gè)實(shí)施方式的用于從稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換對(duì)應(yīng)關(guān)系組件的高層流程。圖12示出了按照本發(fā)明一個(gè)實(shí)施方式的用于從稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換接口組件的高層流程。圖13示出了按照本發(fā)明一個(gè)實(shí)施方式的用于從稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換報(bào)表組件的高層流程。圖14示出了按照本發(fā)明實(shí)施方式的TAS人口統(tǒng)計(jì)表結(jié)構(gòu)。具體實(shí)施方式束橫森迷圖1示出了按照本發(fā)明一個(gè)實(shí)施方式的在其中將舊有應(yīng)用(對(duì)應(yīng)于COBOL程序101和數(shù)據(jù)源103)移才直到指定應(yīng)用(對(duì)應(yīng)于SQL服務(wù)器113和SAP⑧服務(wù)器115)的架構(gòu)100。(SAPAG是最大的歐洲軟件公司,其總部位于德國(guó)的沃爾多夫市。SQL(結(jié)構(gòu)化查詢語(yǔ)言)是一種計(jì)算機(jī)語(yǔ)言,用來(lái)創(chuàng)建、檢索、更新和刪除來(lái)自關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的數(shù)據(jù)。SQL已由ANSI和ISO二者標(biāo)準(zhǔn)化。)AccentureTAStoAERSMigrationTool(AccentureTAS到AERS移植工具)旨在為AccentureTAS(稅務(wù)管理系統(tǒng))系統(tǒng)實(shí)現(xiàn)已經(jīng)就位的那些客戶端降低部署AERS(AccentureEnterpriseRevenueSolution)的負(fù)擔(dān),由此提供竟?fàn)巸?yōu)勢(shì)。AccentureTAStoAERSMigrationToo!開(kāi)發(fā)的第一階段主要關(guān)注于業(yè)務(wù)規(guī)則提取和轉(zhuǎn)換,以及舊有數(shù)據(jù)移植。期望客戶端提供包含與待處理的所有表單定義有關(guān)的COBOL程序101的所有文件。(COSO丄是一種第三代編程語(yǔ)言,并且是目前仍在使用的最老的編程語(yǔ)言之一。其名稱是COmmonBusiness-OrientedLanguage的縮寫,將其主要領(lǐng)域定義為乂〉司和政府的業(yè)務(wù)、財(cái)政以及管理系統(tǒng)。COBOL最初由ShortRangeCommittee在1959年創(chuàng)建,其中ShortRangeCommittee是在1959年5月28曰和29日在五角大樓舉行的會(huì)議上提出的三個(gè)委員會(huì)之一。)需要3個(gè)文件■編輯模塊程序■行項(xiàng)目信息模塊■提交日期模塊期望客戶端提供包含將要移植到AERS目標(biāo)數(shù)據(jù)庫(kù)115的數(shù)據(jù)的所有數(shù)據(jù)源103。基于業(yè)務(wù)需求,可以將業(yè)務(wù)規(guī)則移植過(guò)程分解為以下任務(wù)1.從源代碼提取詞匯表項(xiàng)2.創(chuàng)建和部署模態(tài)(schema)3.對(duì)提取的詞匯表進(jìn)行分類4.將詞匯表部署到業(yè)務(wù)規(guī)則引擎數(shù)據(jù)庫(kù)5.從源代碼提取業(yè)務(wù)邏輯6.對(duì)^見(jiàn)則與詞匯表進(jìn)行相關(guān)107.導(dǎo)出業(yè)務(wù)規(guī)則引擎數(shù)據(jù)庫(kù)中的已提取策略8.測(cè)試策略9.發(fā)布和部署策略10.記錄處理狀態(tài)下文討論提供了對(duì)上述任務(wù)的附加描述,從而示出設(shè)計(jì)考慮和權(quán)衡。雙源/七竭炎承坊,4資目前,表單定義僅僅包含在COBOL源代碼101中。COBOL程序101通常組織在三個(gè)文件的集合中,這三個(gè)文件結(jié)合起來(lái)定義舊有FDF實(shí)現(xiàn)中的單個(gè)稅務(wù)表/財(cái)年定義。文件名稱是XnnnYYrr,其中X=程序時(shí)間(E是行編輯;L是行項(xiàng)目定義;F是提交日期)nnn=表單類型代碼(特定于客戶端安裝,當(dāng)討論P(yáng)OC和DC代碼時(shí),將給出完整的列表)YY=財(cái)年,其中05=2005rr=修訂號(hào),其中OO指示初始定義,01、02…等以此類推例如,用于定義2005年的銷售和使用稅月退稅(表單類型=350)的3個(gè)所需文件是E3000500.txt參L3000500.txtF3000500.txt按照本發(fā)明的實(shí)施方式,期望詞匯表提取過(guò)程與用戶之間的可選同步交互。這表示,客戶端將進(jìn)行等待,直到詞匯表提取器105返回有關(guān)提取過(guò)程的狀態(tài),并且可選地為用戶呈現(xiàn)所有已提取詞匯表的詳盡列表。這包括從所提供的源代碼中提取行項(xiàng)目定義、提交日期定義以及行編輯。奇建和絲縱在從源代碼提取詞匯表并且建立其結(jié)構(gòu)之后,必須根據(jù)所創(chuàng)建的XML推導(dǎo)出才莫態(tài),對(duì)其強(qiáng)命名(stronglynamed),繼而將其部署到GAC(全局組裝緩存)。#濕?;^建河,r4義伴一旦從源代碼中提取了詞匯表,必須按照類型對(duì)詞匯表進(jìn)行分類。其可以是常量、XML元素、.NET組件或者數(shù)據(jù)庫(kù)字段。繼而必須使用詞匯表來(lái)填入規(guī)則引擎所能理解的詞匯表模態(tài)。4,摔河f或舉署i^A#說(shuō)身f/將步驟3中創(chuàng)建的詞匯表XML導(dǎo)入到規(guī)則引擎數(shù)據(jù)庫(kù),并且發(fā)布詞匯表,使其可被需要使用它們的業(yè)務(wù)規(guī)則所訪問(wèn)。#黎5,^C源/t'竭炎承遂身邏禪規(guī)則包含在行編輯COBOL代碼中。規(guī)則提取器107提取規(guī)則,并且將其重新組織在結(jié)構(gòu)中,該結(jié)構(gòu)使邏輯更易操縱和映像到規(guī)則引擎所期待的結(jié)構(gòu)。在提取基礎(chǔ)規(guī)則之后,從代碼提取規(guī)則編輯,并將其應(yīng)用于所提取的規(guī)則。摔說(shuō)i^和'^r》遽/^^^在此過(guò)程中,提取的業(yè)務(wù)規(guī)則所使用詞匯表必須與已經(jīng)提取的詞匯表進(jìn)行相關(guān)。該過(guò)程由聚集器組件109來(lái)處理。某些需要的字段可能是缺失的,并且可以從客戶端要求更多信息。由此,規(guī)則提取器107可能需要通知客戶端缺少詞匯表。#嚴(yán)'7,摔6爽承的,^#^^止#說(shuō)身//,凝^岸一旦從源代碼中提取了規(guī)則,必須通過(guò)策略對(duì)其進(jìn)行分組。意在使每個(gè)表單和每年具有一個(gè)策略。策略的命名規(guī)范是"TAS匪YYrr"。#潔&^試衷婆每個(gè)策略版本必須在開(kāi)發(fā)期間或者是在其被發(fā)布、部署和運(yùn)行之后進(jìn)4于測(cè)試。在保存策略之后、但是尚未部署之前執(zhí)行測(cè)試。在部署策略之后,可能難以修改規(guī)則集。發(fā)'有和舉,衷略在測(cè)試策略之后,通常部署策略。僅在部署之后,策略及其規(guī)則集才能夠被外部應(yīng)用訪問(wèn)。記z秀^理炎,悉將TAS轉(zhuǎn)換器(例如,轉(zhuǎn)換器200)執(zhí)行的所有步驟捕獲和包括到日志中,該日志被發(fā)送回給用戶。如果存在多個(gè)確認(rèn),則必須將其連4妄(concatenate)在一起??梢允褂镁奂鹘M件109來(lái)收集和存儲(chǔ)與用于規(guī)則轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)換的轉(zhuǎn)換過(guò)程中的每個(gè)步驟有關(guān)的相關(guān)信息以及各個(gè)響應(yīng)。聚集器109隨后創(chuàng)建根據(jù)所捕獲的各個(gè)消息和信息片段得出的單個(gè)日志。炎蕃移潛按照本發(fā)明的實(shí)施方式,DB2到SAP數(shù)據(jù)移植(對(duì)應(yīng)于數(shù)據(jù)源103到SAP服務(wù)器113)是通過(guò)SQL服務(wù)器整合服務(wù)(SSIS)來(lái)執(zhí)行的。變換和ETL(提取、變換和加載)由SSIS來(lái)處理。對(duì)SAP服務(wù)器的批量插入將使用iDocs以及在將數(shù)據(jù)批量插入到"公共部分收入和支出"(PSCD)中之前執(zhí)行確認(rèn)而通過(guò)SAP程序執(zhí)行的。(SAP"公共部門收入和支出"提供退稅申報(bào)、支付處理、征收、客戶輔助以及財(cái)務(wù)管理。SAPPSCD可以在不同的環(huán)境中使用,包括學(xué)生賬戶)。^/^#^按照本發(fā)明的實(shí)施方式,包括錯(cuò)誤處理。附加的架構(gòu)組件充當(dāng)響應(yīng)信息的收集者。由此,錯(cuò)誤處理的一種形式是重試該動(dòng)作。如果無(wú)法執(zhí)行轉(zhuǎn)換或者轉(zhuǎn)變,則需要適當(dāng)?shù)赝ㄖ脩?。TAS轉(zhuǎn)換器應(yīng)當(dāng)提供對(duì)導(dǎo)出參數(shù)進(jìn)行改變的能力,并且用戶應(yīng)當(dāng)簡(jiǎn)單地能夠重試該請(qǐng)求。可以在所有組件之間使用同步交互,以便使交互模型盡可能簡(jiǎn)單。簡(jiǎn)單是由于以下事實(shí)可以較為容易地進(jìn)行測(cè)試和調(diào)試,因?yàn)橛脩粼趩蝹€(gè)執(zhí)行線程中執(zhí)行。,g潛*見(jiàn)則移植工具支持以下方面,將會(huì)進(jìn)一步對(duì)其進(jìn)行詳細(xì)討論。提供用于退出TAS客戶端的升級(jí)路徑*降低ITS升級(jí)的成本降低ITS升級(jí)的風(fēng)險(xiǎn)降低內(nèi)核升級(jí)的時(shí)間*快速轉(zhuǎn)換已有的表單規(guī)則和后端業(yè)務(wù)規(guī)則中央規(guī)則存儲(chǔ)庫(kù)*通過(guò)表單類型對(duì)規(guī)則進(jìn)行分組一易于檢索*易于管理表單規(guī)則轉(zhuǎn)換提取已有的表單規(guī)則,并且不需要經(jīng)常伴隨ITS升級(jí)的綠色字段表單定義努力計(jì)劃在于還要提取與懲罰和利息及退款有關(guān)的TAS后端業(yè)務(wù)規(guī)則目標(biāo)在于提取這些規(guī)則并且將其合并成公共規(guī)則集、轉(zhuǎn)譯和標(biāo)準(zhǔn)化這些規(guī)則以便導(dǎo)入一旦對(duì)規(guī)則進(jìn)行了標(biāo)準(zhǔn)化,可以將這些規(guī)則導(dǎo)入到BizTalkTM中以便滿足規(guī)則執(zhí)行*TAS內(nèi)的后端規(guī)則嵌入在應(yīng)用層和數(shù)據(jù)庫(kù)層。該努力將合并14這些層、將規(guī)則轉(zhuǎn)變?yōu)楣矘I(yè)務(wù)規(guī)則語(yǔ)言并導(dǎo)入到BizTalk根據(jù)從COBOL代碼提取的有意義的元素來(lái)創(chuàng)建數(shù)據(jù)結(jié)構(gòu)提取和轉(zhuǎn)換通過(guò)FDF創(chuàng)建并繼而作為COBOL轉(zhuǎn)義生成的規(guī)則以下領(lǐng)域?qū)⒈籘AS轉(zhuǎn)換器覆蓋>數(shù)據(jù)轉(zhuǎn)換>表單規(guī)則轉(zhuǎn)換>接口轉(zhuǎn)換>對(duì)應(yīng)關(guān)系轉(zhuǎn)換>后端規(guī)則轉(zhuǎn)換>賬戶的收入賬目表的移植>已有TAS報(bào)表的轉(zhuǎn)換按照本發(fā)明的實(shí)施方式,可以在Accenture稅務(wù)管理系統(tǒng)的上下文之外使用TAS轉(zhuǎn)換器的組件。例如,規(guī)則轉(zhuǎn)換器包含允許從任何適當(dāng)格式化的COBOL應(yīng)用中提取規(guī)則的通用能力。只要規(guī)則存儲(chǔ)在舊有應(yīng)用的已定義區(qū)域中,則用于規(guī)則轉(zhuǎn)換的TAS轉(zhuǎn)換器將能夠?yàn)榉荰AS應(yīng)用提取和轉(zhuǎn)換規(guī)則。類似的情況對(duì)于TAS數(shù)據(jù)轉(zhuǎn)換器同樣適用。隨著TAS數(shù)據(jù)轉(zhuǎn)換器將數(shù)據(jù)庫(kù)組件從TAS中提取到去正則化的數(shù)據(jù)中并繼而將該信息加載到目標(biāo)應(yīng)用中,可以對(duì)任何舊有數(shù)據(jù)集簡(jiǎn)單地應(yīng)用去正則化的數(shù)據(jù)提取。一旦數(shù)據(jù)處于預(yù)定的格式,TAS轉(zhuǎn)換器便可以使用預(yù)定的例程和過(guò)程將信息加載到目標(biāo)應(yīng)用中。圖2示出了按照本發(fā)明一個(gè)實(shí)施方式的稅務(wù)管理系統(tǒng)(TAS)轉(zhuǎn)換器200的架構(gòu)。舊有應(yīng)用201(例如,稅務(wù)管理系統(tǒng))包括多個(gè)組件,包括表單規(guī)則組件、后端規(guī)則組件、人口統(tǒng)計(jì)組件、財(cái)務(wù)組件、賬目表組件、對(duì)應(yīng)關(guān)系組件、接口組件,以及報(bào)表組件。移植應(yīng)用215通過(guò)中間(staging)數(shù)據(jù)庫(kù)203來(lái)將舊有組件轉(zhuǎn)換和移植到目標(biāo)應(yīng)用217。規(guī)則組件可以包括表單規(guī)則組件和后端規(guī)則組件二者。表單規(guī)則與用于表單的對(duì)應(yīng)行的規(guī)則相關(guān)聯(lián),而后端規(guī)則與用于進(jìn)一步處理表單行中的信息的規(guī)則相關(guān)聯(lián)。例如,后端規(guī)則可以涉及按照機(jī)構(gòu)內(nèi)的稅務(wù)表單和策略應(yīng)用所提供信息的懲罰、利息和退款計(jì)算。數(shù)據(jù)組件可以包括人口統(tǒng)計(jì)組件、財(cái)務(wù)組件和賬目表組件。人口統(tǒng)計(jì)組件與個(gè)人、商家或者有關(guān)實(shí)體(例如,納稅者)的人口統(tǒng)計(jì)信息相關(guān)聯(lián)。財(cái)務(wù)組件與之前提交的之前年份的表單或者納稅義務(wù)的開(kāi)放時(shí)間相關(guān)聯(lián),而賬目表組件指示用來(lái)將財(cái)務(wù)事務(wù)與所征收的收入對(duì)不同政府機(jī)構(gòu)的分發(fā)合并的賬戶。規(guī)則提取器205從舊有應(yīng)用201提取規(guī)則組件,并且生成中間表達(dá)(例如,XML文件207)。規(guī)則部署器209將中間表達(dá)轉(zhuǎn)換為目標(biāo)規(guī)則,并且將目標(biāo)規(guī)則部署在包含在目標(biāo)應(yīng)用217中的業(yè)務(wù)規(guī)則引擎(BRE)219上。業(yè)務(wù)規(guī)則引擎219隨后可以在目標(biāo)應(yīng)用217運(yùn)行時(shí)纟丸行目標(biāo)規(guī)則。按照本發(fā)明的實(shí)施方式,業(yè)務(wù)規(guī)則引擎219使用BizTalk頂服務(wù)器,其是用于企業(yè)應(yīng)用整合(EAI)和業(yè)務(wù)過(guò)程管理(BPM)的微軟中央平臺(tái),并且實(shí)現(xiàn)了XML和Web服務(wù)技術(shù)的整合與自動(dòng)化能力。BizTalk服務(wù)器充當(dāng)過(guò)程執(zhí)行引擎,并且充當(dāng)消息收發(fā)和文檔轉(zhuǎn)換的多傳輸集線器。BizTalk服務(wù)器是幫助客戶有效和高效地整合系統(tǒng)、雇員和商業(yè)伙伴的Windows服務(wù)器系統(tǒng)產(chǎn)品。數(shù)據(jù)組件從舊有應(yīng)用201被提取到SQL數(shù)據(jù)庫(kù)211中,并且被轉(zhuǎn)換為中間數(shù)據(jù)元素。中間數(shù)據(jù)元素繼而從平面(flat)文件213被轉(zhuǎn)換和移植到執(zhí)行ABAP的SAP服務(wù)器221(其包含在目標(biāo)應(yīng)用217中)。ABAP(高級(jí)業(yè)務(wù)應(yīng)用編程)是由SAP創(chuàng)建的高級(jí)編程語(yǔ)言。與最近引入的Java—道,其目前定位為用于對(duì)SAP的Web應(yīng)用服務(wù)器進(jìn)行編程的語(yǔ)言。盡管未在圖2中明確示出,但是轉(zhuǎn)換器200還可以將對(duì)應(yīng)關(guān)系、接口和報(bào)表組件轉(zhuǎn)換和移植到目標(biāo)應(yīng)用217。本發(fā)明覆蓋兩種類型的對(duì)應(yīng)關(guān)系轉(zhuǎn)換。第一種是對(duì)應(yīng)關(guān)系模板的轉(zhuǎn)換,所述模板通常存在于舊有系統(tǒng)中。這些模板將經(jīng)歷與數(shù)據(jù)和規(guī)則類似的提取和加載過(guò)程?;旧?,對(duì)應(yīng)關(guān)系模板被提取,并被放置在目標(biāo)應(yīng)用的模板生成區(qū)域中。同樣,簡(jiǎn)單的映射動(dòng)作將預(yù)先存在的定義數(shù)據(jù)元素從舊有應(yīng)用轉(zhuǎn)換為目標(biāo)系統(tǒng)中的XML參考。第二,對(duì)應(yīng)關(guān)系包括舊有系統(tǒng)內(nèi)的歷史文檔的轉(zhuǎn)換。從舊有系統(tǒng)周期性地向納稅者發(fā)送通知或者對(duì)應(yīng)關(guān)系。不同于保存整個(gè)文檔,TAS保存對(duì)應(yīng)關(guān)系模板和進(jìn)入該對(duì)應(yīng)關(guān)系的數(shù)據(jù)元素。歷史對(duì)應(yīng)關(guān)系可以轉(zhuǎn)換和保存在目標(biāo)應(yīng)用中,以備將來(lái)參考和訪問(wèn)。報(bào)表和接口轉(zhuǎn)換按照類似的概念執(zhí)行。假設(shè)基礎(chǔ)舊有應(yīng)用(TAS)中的數(shù)據(jù)結(jié)構(gòu)在整個(gè)實(shí)現(xiàn)中是一致的,則可以將來(lái)自舊有系統(tǒng)的數(shù)據(jù)元素匹配至目標(biāo)系統(tǒng),并且在目標(biāo)系統(tǒng)的上下文中重新生成4妄口和報(bào)表。這可以作為手動(dòng)匹配過(guò)程來(lái)完成,或者通過(guò)標(biāo)準(zhǔn)服務(wù)和過(guò)程而自動(dòng)完成。報(bào)表組件與舊有應(yīng)用201所生成的報(bào)表相關(guān)聯(lián)。目標(biāo)應(yīng)用217可以通過(guò)數(shù)據(jù)入口223獲得其他數(shù)據(jù)(例如,當(dāng)前年份的稅務(wù)表單)??膳c移植自舊有應(yīng)用201的規(guī)則組件和數(shù)據(jù)組件合作來(lái)處理這些其他數(shù)據(jù)。盡管圖2中所示的架構(gòu)示出了從舊有Accenture^兌務(wù)管理系統(tǒng)到SAP服務(wù)器的移植,但是本發(fā)明的實(shí)施方式也支持到其他目標(biāo)系統(tǒng)的移植。辟炎戎/y#漆^^在一岸一《滋才4'圖3示出了按照本發(fā)明一個(gè)實(shí)施方式的從TAS到AERS規(guī)則引擎轉(zhuǎn)換的高層流程300。流程圖300示出了舊有規(guī)則引擎架構(gòu)的總體高層流程,以1更將COBOL驅(qū)動(dòng)器程序轉(zhuǎn)換為BizTalk(組件319-325)。這是一次性過(guò)程,在此期間,構(gòu)成舊有規(guī)則存儲(chǔ)(組件325)中業(yè)務(wù)規(guī)則的所有數(shù)據(jù)部分由TAS轉(zhuǎn)換器(組件321)標(biāo)識(shí)和提取,并且被轉(zhuǎn)換為業(yè)務(wù)規(guī)則語(yǔ)言XML以便使其成為BizTalk規(guī)則引擎可理解的,繼而其被規(guī)則部署工具(組件317)移植到規(guī)則存儲(chǔ)(組件315)。提供業(yè)務(wù)規(guī)則以執(zhí)行確認(rèn)(組件309-313)。這是在上述一次性過(guò)程中已經(jīng)提取的業(yè)務(wù)規(guī)則。這些規(guī)則以有序的方式組織,按照其相關(guān)的特定稅務(wù)表單進(jìn)行分組。在提取/轉(zhuǎn)換過(guò)程期間,已經(jīng)自動(dòng)構(gòu)建了AERS詞匯表。其目的是按照友好的類似英文的語(yǔ)法給出構(gòu)成規(guī)則的數(shù)據(jù)元素,而不論其源自數(shù)據(jù)庫(kù)查詢、XML元素或類。過(guò)程稅務(wù)表單確認(rèn)。使用規(guī)則引擎API(稱為規(guī)則輔助,其對(duì)應(yīng)于組件303)將稅務(wù)表單輸入301提交至應(yīng)用。規(guī)則輔助303是驅(qū)動(dòng)器組件,其具有根據(jù)稅務(wù)表單輸入和BizTalk規(guī)則引擎API(組件307)提供的模式匹配邏輯應(yīng)調(diào)用哪個(gè)策略(組件305)的有關(guān)知識(shí)。策略是規(guī)則的匯集。下面是該轉(zhuǎn)換所需的不同類型的策略。>簡(jiǎn)單編輯>交叉確i^>行編輯>退出例程>事務(wù)應(yīng)用存在兩種方式來(lái)構(gòu)建策略>單個(gè)策略用于上述類型中的每一個(gè)。>基于tableref或者tableid的多個(gè)策略。下面的組件式轉(zhuǎn)換該應(yīng)用所需的。詞匯表是以類似英文的語(yǔ)法來(lái)封裝業(yè)務(wù)需求的謂詞的列表,雖然BRE支持三種不同的綁定(.NET、SQL和Xml),但是.Net綁定最適合TAS情景。(通常,使用基于.Net類的詞匯表,其中詞匯表作為抽象類。)實(shí)現(xiàn)通常允許不同的LOB復(fù)用規(guī)則和策略。該組件通常稱為TAS詞匯表。這允許將各種獨(dú)立的數(shù)據(jù)元素合并成一個(gè)或多個(gè)XML文檔。將使用XSD.exe將.XSD模態(tài)轉(zhuǎn)換為.Net類。該.Net類用作用于規(guī)則引擎的事實(shí)(并不直接是xml)。該模態(tài)稱為TASTaxFormDocument。/{/A摩#衷略和衷膝瘋/;f標(biāo)識(shí)當(dāng)前數(shù)據(jù)流以及策略執(zhí)行的順序。這被封裝在業(yè)務(wù)組件中。該組件是用于與規(guī)則進(jìn)行通信的主數(shù)據(jù)對(duì)象。該組件稱為TASRuleAssistant。/對(duì)UW《動(dòng)移茲這些組件稱為TASRulesConverter。通常無(wú)法自動(dòng)地上傳較小數(shù)目的規(guī)則的手動(dòng)再聲明。^f移潛/《^"魂iVW卑法本發(fā)明的實(shí)施方式支持以下方面1.標(biāo)識(shí)已有的舊有規(guī)則中的模式,這些模式可以是經(jīng)常重復(fù)的規(guī)則和構(gòu)造(construct)。示例1.1EffectiveData是否在'01-01-1900,和'01-01-2003,之間。1.2ColumnValue是否在列表"1|2|3|4"中。2.創(chuàng)建支持以上模式的詞匯表。publicabstractclassTASVocabularySimpleEditspublicabstractboolinList(TASConverter.DriverFactRuleTypescontext,stringlist);publicabstractboolbetween(TASConverter.DriverFactRuleTypescontext,stringminValue,stringmaxValue);publicabstractboolIsValidMask(TASConverter.DriverFactRuleTypescontext,stringmask);publicabstractbooladdErrorID(stringerrorID);3.-使用上述抽象類來(lái)構(gòu)建BRE詞匯表。示例詞匯表隨同本文檔一起提供。4.利用每個(gè)抽象方法的至少一個(gè)規(guī)則來(lái)創(chuàng)建模板策略。5.使用各種"and"(與)、"or"(或)構(gòu)造來(lái)創(chuàng)建示例模板。如果需要嵌套的"and"或者"or",則使用那些構(gòu)成來(lái)創(chuàng)建規(guī)則。6.使用"規(guī)則引擎部署向?qū)?將模板策略導(dǎo)出到.XML。理解所導(dǎo)出的XML策略的結(jié)構(gòu)。7.將所導(dǎo)出的策略XML分解為各個(gè)較小的文件,每個(gè)文件包含唯一的模式。示例為了添力。成為addErrorID的動(dòng)作<fbnction><vocabularylinkuri="534f50ac-8e6c-4bfe-877f-4e75a0ecf4e2"element^"503f5d7e-c85c-4017-969c-938c291blfca"><classmemberclassre,"TASVocabulary"membe產(chǎn)"addErrorID"sideeffects="true"><argument><constant><string>{0}</string></constant></argument></classmember></function>為了創(chuàng)建版本號(hào)和主報(bào)頭<brlxmlns="http:〃schemas.microsoft.com/businessruleslanguage/2002"><rulesetname="TAS—3000500"〉<versionmajor="{0}"minor="{l}"description-"'modifiedby="RESBT2404VAdministrator"date="2007-02-13T16:20:35.7514080-05:007></ruleset>(configuration/>20為了找到列是否在給定的列表中<predicate><vocabularylinkuri="534f50ac-8e6e-4bfe-877f-4e75a0ecf4e2"element="2cc6fb474-f735-45b5-b9dd-8d60c0f90Aal07><classmemberclassref="TASVocabulary"membe產(chǎn)"inList''sideeffects="true"><argument><argument><referencc〉<vocabularylinkuri=''f5029754-44db-440c-8820-8d55eedfd7bl"element^"7b218bc0-4ac9匿4ee4-b3b9-7606aef40626"/〉<classrefref="TASConverter.DriverFactRuleTypes"/></reference></argument〉<argument><constant><string>{0}</string></constant></argument></classmember></predicate>應(yīng)當(dāng)注意,"{"和"}"用作使用C弁語(yǔ)言的文本替換的占位符。來(lái)自舊有規(guī)則的實(shí)際值將替換大括號(hào)。8.在創(chuàng)建模式之后,程序性的事情是遍歷已有的舊有規(guī)則庫(kù),并替換模板中的舊有值,繼而將模板構(gòu)成為各種規(guī)則和策略,這在下文代碼中示出。classMigrateRulesToBre〃/<summary〉〃/應(yīng)用的主入口點(diǎn)〃/</summary>21[STAThread〗staticvoidMain(string[]args)stringmyConnString=ConfigurationSettings.AppSettings["TASMetaData"];〃讀取舊有數(shù)據(jù)stringmySelectQueiy="SELECT*FROMTCSTVOIOWHEREMINVAL!=""+""。RMAXVAL!="ORVALLIST!="";SqlConnectionmyConnection=newSqlConnection(myConnString);SqlCommandmyCommand=newSqlCommand(mySelectQueiy,myConnection);myConnection.Open();SqlDataReadermyReader;myReader=myCommand.ExecuteReader();〃將"i","2"替換為策略的主版本和輔版本Console.WriteLine(getMain("1","2"));//得到綁定信息Console.WriteLine(getBindings());while(myReader.Read())〃讀取第一舊有規(guī)則stringruleName=myReader["RULENAME"].ToString().Trim();stringelementName=myReader["ELEMENT"].ToString().Trim();stringmessageNum=myReader["MSGNUM"].ToString().Trim();stringdataType=myReader["DATATYPE"].ToString().Trim();stringminVal=myReader["MINVAL"].ToString().Trim();stringmaxVal=myReader["MAXVAL"].ToString().Trim();stringvalList=myReader["VALLIST"].ToString().Trim();stringacf2res=myReader["ACF2RES"].ToString().Trim();stringruleVERS=myReader["RULEVERS"].ToString().Trim();StringBuilderruleText=newStringBuilder();stringruleTag=String.Format("〈rulename=\"{0}\"priority=\"0V'active=\"true\">",ruleName);ruleText.Append(ruleTag);/*這里是所生成的BRE規(guī)則的示例ifCOLNAME=NRC—CAT_CDandnotSIMPUEEDITFACTSisINLIST1|2|3|4thenERRORNUM=TASMA945.其中COLNAME是元素,而SIMPLEEDITFACTS具有類似于列類型的上下文信息,其中包含列值*/ruleText.Append("<if><and>',);〃添加COLNAME檢查。這對(duì)于所有規(guī)則而言是公共的。rule丁ext.Append(getEqual('言COLNAME",elementName));〃如果MINVALorMAXVAL存在,則使用"between"來(lái)創(chuàng)建規(guī)則ruleText.Append("<not>");if(minVal!=""||maxVal!="")ruleText.Append(getBetween(minVal,maxVal));else〃如果"valList"存在,則使用"inlist"來(lái)創(chuàng)建規(guī)則if(valList!=',"){ruleText.Append(getInList(valList));ruleText.Append("</not>");ruleText.Append("</and></ifV);ruleText.Append("<then>");〃基于MSGNUM來(lái)添加少見(jiàn)則動(dòng)作ruleText.Append(AddErrorID(messageNum));ruleText.Append("</then>");ruleText.Append("</rule>");Console.WriteLine(ruleText.ToString());Console.WriteLine("</ruleset></brl>");〃在完成讀:f又時(shí)總是調(diào)用ClosemyReader.Close();〃當(dāng)連接完成時(shí)關(guān)閉連接myConnection.Close();staticstringAddErrorID(stringerrorlD)using(StreamReadersr=newStreamReader("TemplateAddErrorID.xmr'))stringtemplateText=sr.ReadToEnd();returnString.Format(templateText,errorID);staticstringgetBindings()using(StreamReadersr=newStrearnReader("TemplateBindings.xml"))stringtemplateText=sr.ReadToEnd();returntemplateText;staticstringgetBetween(stringfirst,stringsecond)first=first.Trim();second=second.Trim();using(StreamReadersr=newStreamReader("TemplateBetween.xml"))stringtemplateText=sr.ReadToEnd();returnString.Format(templateText,first,seeond);staticstringgetInList(stringlist)list=list.Trim();using(StreamReadersr=newStreamReader("TemplateInList.xmr'))stringtemplateText=sr.ReadToEnd();returnString.Format(templateText,list);staticstringgetMain(stringmajorVersion,stringminorVersion)using(StreamReadersr=newStreamReader("TemplateMain.xml"))stringtemplateText=sr.ReadToEnd();returnString.Format(templateText,majorVersion,minorVersion);staticstringgetEqual(stringlhs,stringrhs)lhs=lhs.Trim();rhs=rhs.Trim();using(StreamReadersr=newStreamReader("TemplateEqual.xmr》stringtemplateText=sr.ReadToEnd();returnString.Format(templateText,lhs,rhs);^于脊^^W付葛^^在一岸二^^才式^/ji衷^;f口河,r《存在多種方式來(lái)創(chuàng)立策略和詞匯表。最常用的方式是使用業(yè)務(wù)規(guī)則組成器工具,該方式由作為基于規(guī)則的處理的主要目標(biāo)的業(yè)務(wù)分析師來(lái)排他地使用。下面討論程序員的創(chuàng)立。這些技術(shù)支持編寫動(dòng)態(tài)創(chuàng)建規(guī)則的應(yīng)用,并且同樣支持創(chuàng)建用于應(yīng)用部署的工具??梢酝ㄟ^(guò)兩種方式在組成器之外創(chuàng)立規(guī)則集。這些方法主要是針對(duì)工具開(kāi)發(fā)和系統(tǒng)管理的。第一是使用XML文檔。這是BizTalk用來(lái)導(dǎo)出和導(dǎo)入策略和詞匯表的方法。另一種是通過(guò).NETAPI和編程。5A丄-z,法ZM丄義—i具有數(shù)據(jù)庫(kù)管理經(jīng)驗(yàn)的程序員可能已經(jīng)執(zhí)行了關(guān)系數(shù)據(jù)庫(kù)到文本文件的批量數(shù)據(jù)轉(zhuǎn)儲(chǔ)。這些通常是平面文件,其格式例如是提供更多結(jié)構(gòu)的CSV.XML,這就是BizTalk如何使數(shù)據(jù)進(jìn)、出SQL服務(wù)器存儲(chǔ)的方式。其還用來(lái)將策略和詞匯表保存在SQL服務(wù)器之外的文件中。盡管不常見(jiàn),但是可以完全利用文件來(lái)運(yùn)行基于規(guī)則的應(yīng)用。微軟為該任務(wù)而建議的XML語(yǔ)法稱為業(yè)務(wù)^L則語(yǔ)言或BRL。請(qǐng)注意,BRL的命名空間聲明為http:〃schemas.microsoft.com/businessruleslanguage/2002。這是專屬于微軟的命名空間。盡管將策略和詞匯表導(dǎo)出到了與業(yè)務(wù)規(guī)則組成器分離的文檔中,但是兩個(gè)文檔具有相同的文檔元素,brl。列表A示出了策略文件(在此稱為規(guī)則集)的開(kāi)始。如下,列表A示出了顯示版本、配置和綁定信息的部分規(guī)則集文檔。<brlxmlns="http:〃schemas.microsoft.com/businessruleslanguage/2002"〉〈rulesetname="RFP"><versionmajo產(chǎn)"l"minor="4"description-""modifiedby="myserver、user"date="2004-02-15T00:29:02.6381024-05:00"/><configuration><factretriever><assembly>DbFactRetriever,Version=1.0.1505.34508,Culture=neutral,PublicKeyToken=d4e488d64afflda4</assembly><class>Que.BizTalk.RFP.myFactRetriever.RFPDbFactRetriever</class></factretriever></configuration)<bindings>〈xmldocumentref="xml—0"doctype:"RFPEstimateXML.RulesRFP"instances="16"selectivity"1"instance="0"><sdector>嚴(yán)[local-nameO'RFP'和命名空間-uri()='http://RFPEstimateXML.RulesRFF]</selector>26<schema>C:\RulesRFP.xsd</schema></xmldocument><datarowref="db—1"server="myserver\Consulting"dataset="Consulting"table-"Rates"instances="16"selectivity="1"isdataconnection="true"instance="0"/〉</bindings>應(yīng)當(dāng)注意,版本元素聲明了策略的主版本和輔版本,以及誰(shuí)修改了策略以及何時(shí)做出的修改。版本控制在規(guī)則開(kāi)發(fā)中是非常重要的。從配置(configuration)元素向下,可以看到,策略被配置為使用數(shù)據(jù)庫(kù)事實(shí)檢索器。指定了封裝和類信息。最后要看的區(qū)域是綁定(binding)部分。binding元素的第一子元素通過(guò)指定.NET類型的合格類名、基于本地名稱和命名空間來(lái)選擇文檔的根的XPath表達(dá)式以及指定模態(tài)的物理文件,來(lái)將XML文檔綁定至策略作為事實(shí)來(lái)源。因?yàn)樽詈笠豁?xiàng)是文件路徑,因此應(yīng)當(dāng)在導(dǎo)出規(guī)則集時(shí)將文件轉(zhuǎn)送到新的服務(wù)器。示例性文檔繼續(xù)使用XML結(jié)構(gòu)來(lái)指定規(guī)則,其中XML結(jié)構(gòu)允許在前綴符號(hào)中表達(dá)條件和動(dòng)作。列表B描繪了具有一個(gè)復(fù)合條件和三個(gè)動(dòng)作的規(guī)則。最后兩個(gè)動(dòng)作已經(jīng)針對(duì)空間進(jìn)行了編輯。如下,列表B以友好形式示出了業(yè)務(wù)規(guī)則IfHoursisgreaterthan160ANDScamequalsServiceThenApprovedTrueCommentsDiscountApprovedCost(0.9*(Hours*HourlyRate))應(yīng)當(dāng)注意,MJ'J元素如何錨定(anchor)MJ'j。這里^[吏用屬性來(lái)給出規(guī)則的名稱、優(yōu)先級(jí)和狀態(tài)。規(guī)則下面的所有內(nèi)容表示了規(guī)則的結(jié)構(gòu)。條件包含在z/元素中。在前綴符號(hào)中,首先是AND元素(其是對(duì)兩個(gè)條件進(jìn)行結(jié)合的邏輯運(yùn)算符)。接下來(lái)是針對(duì)第一謂詞的大于號(hào)運(yùn)算符。詞匯表鏈接(vocabularylink)元素指示該運(yùn)算符在內(nèi)置謂詞詞匯表中。從這里開(kāi)始,在此情況下把XML文檔中的Hours字段綁定到事實(shí)。這形成了謂詞的左側(cè)(lhs)。右側(cè)是常量十進(jìn)制值160。如下,列表C示出了來(lái)自規(guī)則集文檔的規(guī)則定義片段<rulename="DiscountRate"priority="0"active="true"><if><and>〈compareoperator="greaterthan"〉<vocabularylinkuri="3f0e9bcc-6212-4e6a-853c-e517fl57a626"element="b276a0f4-12d9-4380-b242-135bbfc5e2877><lhs><fimction><vocabularylinkuri="8a4906c8-3797-4ae6-a9b6-864c23c81438"element="728b3a0b-b270-4cfa-aac6-b24e3aaad8dd7><xmldocumentmemberxmldocumentre,"xml一O"type="decimarsideeffects="false"〉<field〉*[local-name()='Hours'andnamespace-uri()="]</field><fieldalias>Hours</fieldalias></xmldocumentmember></fUnction></lhs〉<rhs><constant><decimal>160</decimal></constant></rhs></compare><compareoperator="equar'>...<!--detailsomittedforspace-~></comparc></and></if>28<then><fUnction><vocabulaiylinkuri="8a4906c8-3797-4ae6-a9b6-864c23c81438"element="89745202-17d8-412f-bfa3-382d6711la91"/>〈xmldocumentmemberxmldocumentref="xml—0"type="boolean"sideeffects="true"><field〉*Docal-name()='Approved'andnamespace-uri()="]</field><fieldalias>Approved</fieldalias><argument><constant><boolean>true</boolean></constant></argument></xmldocumentmember></fUnction〉<fonction>..,<!--detailsomittedforspace--></fonction><fiinction>...<!—omittedforspace—></function〉</then〉</rule〉可以按此方式繼續(xù),直至到達(dá)Aew元素,其錨定了規(guī)則的動(dòng)作部分。第一動(dòng)作來(lái)自列表B,它為XML文檔的Approved字段指派布爾值true(真)。指派函數(shù)獲得XML文檔綁定和一個(gè)自變量(值)。列表A和C中的詞匯表鏈接將規(guī)則集文檔與兩個(gè)內(nèi)置詞匯表(函數(shù)和謂詞)以及發(fā)明人自己建議的詞匯表相關(guān)聯(lián)。列表D示出了發(fā)明人的詞匯表部分。對(duì)于規(guī)則集文檔,以brl元素開(kāi)始。此后是具有其版本控制信息的詞匯表元素。從這里開(kāi)始,具有一系列的詞匯表定義元素。每一個(gè)將友好名稱綁定至數(shù)據(jù)庫(kù)列或者XML文檔字段。如下,列表D示出了詞匯表BRL文檔。29<brlxmlns="http:〃schemas.microsoft.com/businessruleslanguage/2002''>〈vocabularyid=',8a4906c8-3797-4ae6-a9b6-864c23c81438"name="RFP"uri=""description""><versionmajor='T'mino產(chǎn)"l"description-""modifiedby="myserver\user"date=',2004-02-14T21:57:55.6504144-05:007><vocabularydefmitionicH'693a705f-a6a4-4e37-92b9-06a52a2553c7"name="SvcName"description:""><bindingdefinition><databasecolumnbindingdefinitioncolumn=',rate—name"type="string"><databaseinfoserver="myserver\Consulting"database="Consulting"table="Rates"connection="true"instance="0"/></databasecolumnbindingdefmition></bindingdefinition〉〈formatstringlanguage二"en-US"string:"SvcName"/></vocabularydefinition>〈vocabularydefinitionid="0c2f3a3a-e598-4c96-9bb2-0b0797e9ef3e"name="Cost"description=""><bindingdefinition〉<documentelementbindingdefinitionfield="*[local-nameO='Estimate'andnamespace-uri(K]"fieldalias="Estimate"type="decimar><documentinfoschema=',C:\RulesRFP.xsd',documenttype="RFPEstimateXML.RulesRFP"selector^"/*[local-name()='RFP'andnamespace-uri()=,http://RPPEstimateXML.RulesRFP']"selectoralias-,卩ocal-name():'RFP'andnamespace-uri()='http://RFPEstimateXML.RdesRFP']"instanceyo"/><argumentposition="0"〉<valuedefinitionliteraltype="decimal"><decimal>0</decimal></vauedefinitionliteral></argument></documentelementbindingdefinition></bindingdefmition〉<formatstringlanguage="en-US"string="Cost{0}"delimitei="{+}"><argumentposition="0">〈valuedefinitionlitemltype="deeimar><decimal>0</decimal></valuedefinition1iteral></argument></formatstring></vocabularydefinition></brl>第一定義是名稱SvcName與Consulting(咨詢)數(shù)據(jù)庫(kù)中的Rate(稅率)表中的列rate—name之間的綁定。首先命名databasecolumnbindingdefinition元素中的歹'J,繼而在databaseinfo元素中提供數(shù)據(jù)庫(kù)和表信息。所示的第二定義是名稱Cost與XML文檔中Estimate字)殳的關(guān)聯(lián)。databasecolumnbindingdefmition元素表示對(duì)XML文檔中的元素的綁定,而非對(duì)XML文檔元素的綁定。當(dāng)在該元素中提供了適當(dāng)?shù)腦Path表達(dá)式以選擇字段之后,documentinfo元素提供.NET樣式類型的文檔、物理模態(tài)文件以及顯式定位此特定文檔類的文檔元素的XPath。可以看到,在BRL中創(chuàng)立規(guī)則集和詞匯表是一項(xiàng)精確的任務(wù)。通常,人們不會(huì)希望手工完成這一任務(wù),而是存在模態(tài)。其可以用來(lái)方便地修改已有的導(dǎo)出文件。例如,可以使用XPath來(lái)定位和修改模態(tài)文件路徑,以反映目標(biāo)服務(wù)器環(huán)境。還可以借助于提供正式文檔的方式來(lái)使用XSLT將規(guī)則集顯示為HTML。創(chuàng)立規(guī)則的其他方式是使用用于規(guī)則開(kāi)發(fā)的.NETAPI的類進(jìn)行編程。所需的類可以在Microsoft.RuleEngine包中找到。其實(shí)現(xiàn)在BizTalk服務(wù)器2004安裝文件夾中的Microsoft.RuleEngine.dll組裝中?;痉椒ㄊ莿?chuàng)建LogicalExpresion類的實(shí)例(表示規(guī)則的條件部分),ActionCollection的實(shí)例用以保持規(guī)則的動(dòng)作。在適當(dāng)設(shè)置了兩個(gè)對(duì)象時(shí),將其添加到Rule類的實(shí)例。繼而將規(guī)則添加到RuleSet對(duì)象。當(dāng)希望持續(xù)規(guī)則時(shí),使用FileRuleStore或者SqlRuleStore類之一。為了在開(kāi)發(fā)時(shí)運(yùn)行規(guī)則集,需要PolicyTester對(duì)象。在產(chǎn)生規(guī)則集之后,可以使用較為簡(jiǎn)單的Policy類。這些類僅僅是規(guī)則開(kāi)發(fā)API中的多個(gè)類中的幾個(gè),但是它們是用于創(chuàng)立的主要類。如果希望創(chuàng)建創(chuàng)立工具并且利用.NET類擴(kuò)展地工作,需要詳細(xì)研究產(chǎn)品文檔。然而,可以考慮在基于規(guī)則的應(yīng)用開(kāi)發(fā)中使用的主要類。龍?zhí)芖廁規(guī)則API屬于兩個(gè)包。主包是Microsoft.RuleEngine.dll中實(shí)現(xiàn)的Microsoft.RuleEngine。另一個(gè)是Microsoft.BizTalk.RuleEngineExtensions,其增加了3個(gè)類,以擴(kuò)展基于規(guī)則的系統(tǒng)。兩個(gè)組裝都位于BizTalk服務(wù)器安裝文件夾中。這些包書面上包含多個(gè)類,但是只有幾個(gè)是重要的。應(yīng)當(dāng)認(rèn)為這些類是核心類,例如,policy(策略)。另一個(gè)類PolicyTester在開(kāi)發(fā)期間發(fā)揮其作用,但是策略表示可用于執(zhí)行的、完整的、基于生產(chǎn)知識(shí)的系統(tǒng)。為了執(zhí)行,應(yīng)當(dāng)對(duì)其進(jìn)行配置,但是其應(yīng)當(dāng)加載規(guī)則集。RuleSet(規(guī)則集)類繼而加載和使用Rule類的一個(gè)或多個(gè)實(shí)例。如上所述,Rule對(duì)象包含LogicalExpression對(duì)象和Action對(duì)象。然而,與規(guī)則同樣重要,無(wú)法在沒(méi)有事實(shí)的情況下具有基于知識(shí)的系統(tǒng)。策略的實(shí)例使用所開(kāi)發(fā)的、實(shí)現(xiàn)IFactRetriever接口的類。這是管理長(zhǎng)期事實(shí)和事實(shí)庫(kù)的類。當(dāng)策略加載了規(guī)則和事實(shí)時(shí),其已經(jīng)可以由規(guī)則引擎來(lái)執(zhí)行。規(guī)則引擎可以僅將策略保存在存儲(chǔ)器中,其是感興趣的實(shí)驗(yàn)工具,但可能不適用于企業(yè)應(yīng)用。抽象類RuleStore開(kāi)發(fā)用于策略和詞匯表的可持續(xù)存儲(chǔ)的語(yǔ)義。其由兩個(gè)派生類實(shí)現(xiàn),F(xiàn)ileRuleStore和SqlRuleStore。顧名思義,F(xiàn)ileRuleStore使用盤文件用于存儲(chǔ),而SqlRuleStore使用SQL服務(wù)器關(guān)系引擎。BizTalk策略是規(guī)則集,并且存在與BizTalk規(guī)則引擎對(duì)應(yīng)的類,但是策略類是對(duì)多個(gè)事物的有用封裝。其將程序員與規(guī)則存儲(chǔ)和規(guī)則引擎的具體操作細(xì)節(jié)隔離開(kāi)。這樣,應(yīng)當(dāng)配置策略實(shí)例,并且利用其進(jìn)行工作,就好像它是規(guī)則引擎本身一樣。其加載RuleSet的實(shí)例,因此可以區(qū)分策略類與BizTalk策略的一般性概念。策略類具有兩個(gè)構(gòu)造函數(shù)。一個(gè)采用字符串,該字符串的值命名了想要利用的策略。另一個(gè)具有相同的參數(shù),并且添加了兩個(gè)System.Int32參數(shù)用于主策略版本號(hào)和輔策略版本號(hào)。通過(guò)策略構(gòu)造函數(shù)加載的任何策略必須部署在規(guī)則存儲(chǔ)中。另一類PolicyTester的接口非常類似于Policy,但是其具有附加的構(gòu)造函數(shù),其允許加載已發(fā)布的策略和來(lái)自其他服務(wù)器的策略。相反,策略利用本地存儲(chǔ)來(lái)工作,并且涉及產(chǎn)生就緒的規(guī)則集。Policy具有四個(gè)公共屬性。MinorRevision和MajorRevision—起定義Policy實(shí)例的版本號(hào)。PolicyName是策略的名稱。RuleSetlnfo是重復(fù)祖先信息并且添加關(guān)于誰(shuí)保存以及何時(shí)保存策略的數(shù)據(jù)的類。所有這四個(gè)屬性都是只讀的。策略類具有一個(gè)主要的公共方法Execute(執(zhí)行)。該方法具有四種重載形式。此方法的目的是將事實(shí)加載到策略中并且向其應(yīng)用規(guī)則集。第一種形式采用System.Object參數(shù),其是類的某個(gè)實(shí)例,表示系統(tǒng)中的事實(shí)。第二種形式采用這種參數(shù)的數(shù)組。其余的形式重復(fù)該模式(單個(gè)對(duì)象和對(duì)象數(shù)組),但是添加了第二參數(shù),即實(shí)現(xiàn)IRuleSetTrackinglnterceptor的對(duì)象的實(shí)例。該接口用于實(shí)現(xiàn)規(guī)則引擎的調(diào)試系統(tǒng)。該類具有構(gòu)成其構(gòu)造函數(shù)的8個(gè)版本。第一個(gè)采用字符串參數(shù),其命名規(guī)則集。與策略不同,這并不意味著類從存儲(chǔ)加載所命名的規(guī)則集。其通常初始化類的新實(shí)例,并且給與其指定的名稱。存在另一構(gòu)造函數(shù),其獲取名稱和版本號(hào),并且執(zhí)行相同的初始化。還存在構(gòu)造函數(shù)的兩個(gè)版本,其采用相同的參數(shù),并且添加了類型System.Collections.ICollection的對(duì)象。這是構(gòu)成規(guī)則集的規(guī)則匯集。剩余版本重復(fù)上述所有,還添加了類型VocabularyLink的最終參數(shù)。該參數(shù)確定利用其友好名稱和特定事實(shí)綁定來(lái)提供規(guī)則集的詞匯表。該類具有6個(gè)屬性,其中三個(gè)對(duì)于程序員來(lái)說(shuō)特別重要。其在表1中說(shuō)明。表1:RULESET類的重要屬性屬性含義ExecutionCoiifiguration管理事實(shí)檢索器的類實(shí)例RuleSetExecutionConfiguration的讀/寫屬性,控制規(guī)則執(zhí)行的其他對(duì)象,以及用于存儲(chǔ)器和循環(huán)大小的參數(shù)。這些因素控制規(guī)則引擎中規(guī)則的執(zhí)行。Rules只讀RulesDictionary對(duì)象。該類收集少見(jiàn)則集中的規(guī)則。VocabularyLink相同名稱的類的讀/寫實(shí)例。該屬性將規(guī)則集與名稱和對(duì)事實(shí)的綁定相關(guān)聯(lián)。如果在應(yīng)用中動(dòng)態(tài)綁定規(guī)則集,則將使用該類??梢赃@樣來(lái)構(gòu)建工具,或者可以使用它來(lái)自動(dòng)生成規(guī)則集,其中,具有包括規(guī)律變化的值的基本規(guī)則的已知集合。在這種情況下,可以采用來(lái)自應(yīng)用或數(shù)據(jù)庫(kù)的值并且程序上創(chuàng)建規(guī)則,從而重新生成規(guī)則集。該類34存在6個(gè)構(gòu)造函數(shù)。第,個(gè)采用命名新規(guī)則的System.String。這并不從任何存儲(chǔ)加載規(guī)則。其通常創(chuàng)建空的規(guī)則對(duì)象,并且給與其名稱。下一個(gè)采用名稱參數(shù),并且增加了VocabularyLink對(duì)象作為第二參數(shù)。該構(gòu)造函數(shù)也給出空對(duì)象,但是現(xiàn)在可以具有對(duì)可以在已構(gòu)造規(guī)則中使用的名稱的鏈接。其余構(gòu)造函數(shù)構(gòu)基于傳遞給構(gòu)造函數(shù)的參數(shù)來(lái)構(gòu)造完整的規(guī)則。該組的第一個(gè)構(gòu)造函數(shù)采用用于名稱的System.String,用于規(guī)則條件的LogicalExpression對(duì)象,以及用于動(dòng)作的ActionCollection對(duì)象。下一個(gè)形式采用名稱參數(shù),表示規(guī)貝寸4尤先纟及的System.Int32,以及LogicalExpression和ActionCollection對(duì)象。最后兩個(gè)構(gòu)造函數(shù)重復(fù)如上所述的兩種形式,并且最后增加了VocabularyLink對(duì)象。這兩個(gè)形式的第一個(gè)采用名稱、條件、動(dòng)作和鏈接。最后一個(gè)采用名稱、優(yōu)先級(jí)、條件、動(dòng)作和鏈接。Rule類具有6個(gè)屬性,其所有都是可讀/寫的。屬性描述了規(guī)則對(duì)象的部分和狀態(tài)。Action是包含^L則的動(dòng)作的ActionCollectin。Active是布爾變量,其指示規(guī)則是活躍的還是休眠的。Condition是LogicalExpression。除了名稱之外,規(guī)則僅具有一個(gè)條件,但是其可以是復(fù)合表達(dá)式。Name是字符串,其必須是規(guī)則集內(nèi)唯一的。Priority是lnt32,其具有感興趣的值范圍。該值越大,優(yōu)先級(jí)越高。然而,零(0)既是默認(rèn)值又是中間值。VocabularyLink是最終屬性的名稱及其類型二者。其在規(guī)則與域特定的定義之間建立鏈接。該類只具有一個(gè)方法,即Clone。其產(chǎn)生規(guī)則的深拷貝(deepcopy)。這是生成大量類似規(guī)則的快捷、方便的方法。在調(diào)用Clone之后,可以修改不同于原有部分的那些規(guī)則部分??梢赃M(jìn)行到^L則的內(nèi)部工作和組件。LogicalExpression表示頭見(jiàn)則條件。其具有單個(gè)構(gòu)造函數(shù),該構(gòu)造函數(shù)不具有參數(shù),并且創(chuàng)建空的條件對(duì)象。該類具有兩個(gè)屬性。第一個(gè)是Type,其是System.Type類的只讀屬性。VocabularyLink是分類為具有該名稱的類對(duì)象的讀/寫屬性。與Rule類似,該類具有單個(gè)方法Clone,其進(jìn)行條件的深拷貝。這是類的所有屬性和方法。明顯缺少用于構(gòu)造邏輯表達(dá)式本身的任何類型的方法。已經(jīng)證明存在表示所有謂詞的類,諸如NotEqual,以及用于組成復(fù)合表達(dá)式的三個(gè)邏輯運(yùn)算符及其否定的類LogicalAnd,LogicalOR以及LogicalNot。結(jié)合自己的類或者詞匯表鏈接來(lái)使用它們給出了構(gòu)建規(guī)則條件的靈活性。匯集。該類具有兩個(gè)構(gòu)造函數(shù)。一個(gè)沒(méi)有參數(shù),并且生成空匯集。另一個(gè)采用ICollection的實(shí)例,并且基于已有的動(dòng)作匯集來(lái)創(chuàng)建對(duì)象。該類具有單個(gè)屬性Item,其充當(dāng)C弁中的類索引器。其是可讀/寫屬性,其采用整數(shù)索引,并且得到或設(shè)置Function類的實(shí)例。Function來(lái)自RuleEngine命名空間。它是抽象類,充當(dāng)實(shí)現(xiàn)動(dòng)作的任何類的祖先。該抽象允許ActionCollection處理所有類型的動(dòng)作,而無(wú)需專用代碼。該類具有8個(gè)方法,并且其中的幾個(gè)具有重載形式。這些方法在表2中列出。表2:ActionCollection類方法<table>tableseeoriginaldocumentpage36</column></row><table><table>tableseeoriginaldocumentpage37</column></row><table>類FileRuleStore和SqlRuleStore是從在其頭部具有RuleStore類的繼承樹(shù)派生出的。其他類形成了使規(guī)則可以作為可執(zhí)行內(nèi)容來(lái)工作的類的相關(guān)集合。需要存儲(chǔ)類給出存儲(chǔ)詞匯表和規(guī)則地的場(chǎng)所。多數(shù)程序員將不會(huì)實(shí)現(xiàn)其自己的規(guī)則存儲(chǔ)類,因此并不十分需要覆蓋抽象基類。當(dāng)處理SQL服務(wù)器規(guī)則存儲(chǔ)時(shí),可以使用Policy和PolicyTester的方法來(lái)加栽規(guī)則集。為了簡(jiǎn)潔起見(jiàn),對(duì)于面向規(guī)則存儲(chǔ)的整個(gè)主題的含義,可以查看FileRuleStore的細(xì)節(jié)。FileRuleStore具有四個(gè)構(gòu)造函數(shù),在表3中說(shuō)明?;旧希袠?gòu)造函數(shù)都通過(guò)定位文件存儲(chǔ)來(lái)初始化新創(chuàng)建的對(duì)象。最后三個(gè)構(gòu)造函數(shù)增加了用戶安全和加載方便利的參數(shù)。<table>tableseeoriginaldocumentpage38</column></row><table>FileRuleStore沒(méi)有屬性,但是其具有表4中列出的6個(gè)方法。文件規(guī)則存儲(chǔ)是規(guī)則集和詞匯表的簡(jiǎn)單匯集。這些方法實(shí)現(xiàn)了添加、移除和讀取匯集中項(xiàng)的共享匯集操作。表4:FileRuleStore方法<table>tableseeoriginaldocumentpage39</column></row><table><table>tableseeoriginaldocumentpage40</column></row><table>注意,GeTRuleSets和GetVocabularies并不直接檢索規(guī)則集和詞匯表。相反,他們表示對(duì)規(guī)則存儲(chǔ)的查詢,以找到與這些方法的參數(shù)中指定的特定標(biāo)準(zhǔn)相匹配的規(guī)則集或詞匯表??赡苄枰狦etruleSet或者GetVocabulary來(lái)4全索感興趣的實(shí)際^L則集或者詞匯表。/Fa"/"Wsv6r婆口在編寫實(shí)現(xiàn)該接口的類時(shí),可能需要管理長(zhǎng)期的事實(shí)庫(kù)。該接口包括單個(gè)方法,所以該實(shí)現(xiàn)的復(fù)雜度僅由緩存方案的復(fù)雜性決定??赡苄枰己玫毓烙?jì)事實(shí)庫(kù)將可能多么頻繁地改變,并且針對(duì)從將事實(shí)緩存在存儲(chǔ)器中而獲得的好處來(lái)對(duì)該信息進(jìn)行平衡。UpdateFacts是實(shí)現(xiàn)需要的方法。該方法返回System.Object的實(shí)例,其被規(guī)則引擎用來(lái)處理已更新的事實(shí)。系統(tǒng)將檢查返回的實(shí)際對(duì)象,以確定如何處置它。例如,當(dāng)其遇到ADO數(shù)據(jù)庫(kù)連接時(shí),其理解其應(yīng)當(dāng)使用ADO對(duì)象和方法從所考慮的數(shù)據(jù)庫(kù)檢索事實(shí)。UpdateFacts采用三個(gè)參數(shù)。第一個(gè)參數(shù)是RuleSetlnfo對(duì)象,其描述使用中的規(guī)則集。第二個(gè)是對(duì)執(zhí)行規(guī)則集的RuleEngine對(duì)象的引用。使用這些類的方法來(lái)得到需要什么事實(shí)的線索。第三個(gè)參數(shù)是System.Object實(shí)例。在第一次調(diào)用你的類時(shí),該參數(shù)將是空。此后,該參數(shù)是UpdateFacts的先前調(diào)用的返回值,由此給出甚至比事實(shí)庫(kù)的狀態(tài)更多的有關(guān)信息。^^脊換喬移扭付悉_£^r"^巡i^哞源^7靜,悉才法可以在規(guī)則中直接調(diào)用靜態(tài)函數(shù)。例如,可以在少見(jiàn)則內(nèi)直接調(diào)用DateTime.Now函數(shù)或者其他類似標(biāo)準(zhǔn)函數(shù),而無(wú)需將其作為事實(shí)對(duì)象來(lái)傳遞。為了添加StaticSupport注冊(cè)表4建點(diǎn)擊開(kāi)始;點(diǎn)擊運(yùn)行;鍵入RegEdit,繼而點(diǎn)擊OK。展開(kāi)HKEY—LOCAL—MACHINE,展開(kāi)Software,展開(kāi)Microsoft,展開(kāi)BusinessRules,并選擇3.0。*在右側(cè)面板中,點(diǎn)擊右鍵,指向New(新建),繼而點(diǎn)擊DWORD值。*對(duì)于名牙爾,4建入StaticSupport如果StaticSupport注冊(cè)表鍵已經(jīng)存在,并且需要改變其值,執(zhí)行以下步驟。為了改變StaticSupport注冊(cè)表鍵的值點(diǎn)擊開(kāi)始,點(diǎn)擊運(yùn)行,鍵入RegEdit,點(diǎn)擊OK。展開(kāi)HKEYLOCAL—MACHINE,展開(kāi)Software,展開(kāi)Microsoft、展開(kāi)BusinessRules,繼而展開(kāi)3.0。雙擊StaticSupport注冊(cè)表鍵,或者右鍵點(diǎn)擊它,并繼而點(diǎn)擊修改。上述鍵接受如下所示的三個(gè)有效值0:這是默認(rèn)鍵值,并且該值模擬BizTalk服務(wù)器2004的行為,其中,總是需要對(duì)象的實(shí)例作為輸入事實(shí),并且僅當(dāng)賦值或者執(zhí)行規(guī)則時(shí)才調(diào)用該方法。1:不需要對(duì)象的實(shí)例,并且無(wú)論何時(shí)賦值或者執(zhí)行規(guī)則,都調(diào)用靜態(tài)方法2:不需要對(duì)象的實(shí)例,但是在規(guī)則轉(zhuǎn)譯時(shí)(僅當(dāng)參數(shù)是常量時(shí))。該值基本上作為性能優(yōu)化。然而注意,用作動(dòng)作的靜態(tài)成員將不會(huì)在轉(zhuǎn)譯時(shí)執(zhí)行,而用作參數(shù)的靜態(tài)方法可以執(zhí)行。因此,需要使用1或者2來(lái)啟用靜態(tài)支持以及直接調(diào)用靜態(tài)方法。冉^^^潔fX斧^重我'S#j鍵可以通過(guò)使用應(yīng)用配置文件來(lái)重載注冊(cè)表?xiàng)l目。注冊(cè)表設(shè)置對(duì)于主控規(guī)則引擎實(shí)例的所有應(yīng)用來(lái)說(shuō)是全局的??梢酝ㄟ^(guò)使用應(yīng)用配置文件在應(yīng)用層重載這些注冊(cè)表設(shè)置。對(duì)于BizTalk服務(wù)器應(yīng)用,主控應(yīng)用時(shí)BTSNTSvc.exe,而配置文件是BTSNTSvc.exe.config??赡苄枰缦滤鰹橄M趹?yīng)用配置文件中重載的配置參數(shù)指定值<configuration><configSections><sectionname="Microsoft.RuleEngine"type="System.Configuration.SingleTagSectionHandler"/></configSections><Microsoft.RuleEngineUpdateServiceHost="localhost"UpdateServicePo爐"3132"UpdateServiceName="RemoteUpdateService"CacheEntries="32"CacheTimeout="3600"Pollinglnterval="60"TranslationTimeout="3600''CachePruneInterval="60"DatabaseServer="(localhost)"DatabaseName="BizTalkRuleEngineDb"SqlTimeout="-rStaticSupport='T'/></configuration〉遞過(guò)在,財(cái)5/^9^說(shuō)W可以使用Microsoft.RuleEngine.RuleEngineExtensions命名玄間中的RuleSetDeploymentDriver以及使用RuleEngineComponentConfiguration類來(lái)調(diào)用應(yīng)用內(nèi)部的規(guī)則和策略,從而通過(guò)程序來(lái)部署規(guī)則。下文示例描述了用來(lái)通過(guò)程序部署規(guī)則的代碼stringpolicyName="TAS—E3000500";intmajorRev=Convert.ToIntl6(args卩]);intminorRev=Convert.ToIntl6(args[2]);RuleSetlnforsinfo=newRuleSetInfo(policyName,majorRev,minorRev);Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriverdd;depdriver=newMicrosoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriver();depdriver.Deploy(rsinfo);如果正在向BizTalk服務(wù)器環(huán)境被配置使用的數(shù)據(jù)庫(kù)部署策略,則無(wú)需在代碼中創(chuàng)建RuleSetDeploymentDriver對(duì)象。相反,可以通過(guò)調(diào)用System.RuleEngine命名空間中的Configuration類的GetDeploymentDriver方法,來(lái)請(qǐng)求規(guī)則引擎為其創(chuàng)建RuleSetD叩loymentDriver對(duì)象。下面的代碼示例說(shuō)明了如何調(diào)用GetDeploymentDriver方法Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriverdd;dd=newMicrosoft.RuleEngine.Configuration.GetDeploymentDriver();GetDeploymentDriver方法檢索HKEY—LOCAL_MACHINE\Software\Microsoft\BusinessRules\3.0下的DeploymentDriverAssembly和DeploymentDriverClass的注冊(cè)表鍵的值,并且創(chuàng)建DeploymentDriverClass的實(shí)例。下面是上述4建的兩個(gè)值參DeploymentDriveAssembly-Microsoft.BizTalk.RuleEngineExtensions參DeploymentDriverClass-Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriverRuleSetDeploymentDriver類實(shí)現(xiàn)了IRuleSetDeploymentDriver接口。可以通過(guò)創(chuàng)建實(shí)現(xiàn)IRuleSetDeploymentDriver接口的類來(lái)開(kāi)發(fā)自己的策略部署驅(qū)動(dòng)器,并且適當(dāng)?shù)馗淖內(nèi)缟纤龅淖?cè)表鍵值??梢?吏用上述iw/eEwg7'weCowpowe^Cowj7gwa/7'ow類中的RuleEngineComponentConfiguration方法來(lái)傳遞自定義事實(shí),釹口下面的代碼所示RuleSetExecutionConfigurationreel=newRuleSetExecutionConfiguration();RuleEngineComponentConfigurationrecc1=newRuleEngineComponentConfiguration("FactRetrieverForE3000500","Microsoft.Samples.BizTalk.TASPolicies.FactRetrieverForClaimsProcessing.DbFactRetriever");rec1.FactRetriever=recc1^rsl.ExecutionConfiguration=rec1;除上述之外,已經(jīng)向Policy類添加了稱為C/ear的方法,其重置為了策略的執(zhí)行而創(chuàng)建的規(guī)則引擎實(shí)例的存儲(chǔ)器。而且,為了支持可為空的類型,一般性方法和類是對(duì)BizTalk服務(wù)器2006中的業(yè)務(wù)規(guī)則引擎的其他增強(qiáng)。發(fā)茂5發(fā)'w>7,r4一說(shuō)身與所有軟件開(kāi)發(fā)相似,在事實(shí)詞匯表正確無(wú)誤之前,通常需要它的多個(gè)版本。無(wú)法夸口說(shuō)在使其規(guī)則按照期望工作之前可以容易地處理詞匯表的20-30個(gè)版本。備選方案是不直接在規(guī)則數(shù)據(jù)庫(kù)中發(fā)布詞匯表。該過(guò)程是1.發(fā)布詞匯表2.測(cè)試引用該詞匯表的規(guī)則3.打開(kāi)BizTalkRuleEngineDb中的re—vocabulary表,并且將nStatus字段從1改為0(1=已發(fā)布;0=未發(fā)布)??梢酝ㄟ^(guò)strName字段中保存的名稱來(lái)標(biāo)識(shí)詞匯表。4.將詞匯表信息重新加載到規(guī)則組成器,并且添加/修改事實(shí)。5.保存詞匯表,并繼而將nStatus字段設(shè)置回1:不從規(guī)則組成器重新發(fā)布詞匯表,否則將得到主鍵違規(guī)。6.在規(guī)則組成器中重新加載策略/詞匯表一次,并且重置策略??梢允褂门c策略相同的方法。盡管通常不需要發(fā)布規(guī)則以便使用規(guī)則組成器的測(cè)試工具來(lái)測(cè)試它們,但是如果意欲根據(jù)某個(gè)安排它們,則可以這么^f故。在此過(guò)程中可以找到與單元測(cè)試期間一樣多的錯(cuò)誤??梢愿淖價(jià)e一ruleset表中的nStatus字段來(lái)臨時(shí)不發(fā)布策略以便編輯它,而不是創(chuàng)建策略的新版本。圖4示出了按照本發(fā)明一個(gè)實(shí)施方式的、用于轉(zhuǎn)換規(guī)則組件的架構(gòu)400。通過(guò)規(guī)則提取器405從COBOL代碼401中提取規(guī)則(類似于圖1所示的規(guī)則提取器107提供的功能)。來(lái)自COBOL代碼401的詞匯表(由詞匯表提取器403提取)和所提取的邏輯合并,以形成新的規(guī)則集,其由規(guī)則部署器407導(dǎo)入到業(yè)務(wù)規(guī)則引擎409。^于說(shuō)身逸伴脊^W^;程圖5示出了按照本發(fā)明一個(gè)實(shí)施方式的、用于執(zhí)行表單規(guī)則轉(zhuǎn)換的高層流程500。規(guī)則轉(zhuǎn)換才莫塊503從Accenture稅務(wù)管理系統(tǒng)(TAS)501轉(zhuǎn)換詞匯表和規(guī)則,并將其寫入通用規(guī)則引擎語(yǔ)言(BPEL)。將詞匯表和規(guī)則導(dǎo)入到BizTalk505(對(duì)應(yīng)于圖2所示的目標(biāo)應(yīng)用217的業(yè)務(wù)規(guī)則引擎)。而且,第三方規(guī)則引擎507可被導(dǎo)出到BPEL,并且經(jīng)由所開(kāi)發(fā)的例程來(lái)加載。圖6示出了按照本發(fā)明一個(gè)實(shí)施方式的、用于執(zhí)行后端規(guī)則轉(zhuǎn)換的高層流程600。轉(zhuǎn)換例程605從TAS601和關(guān)聯(lián)的數(shù)據(jù)庫(kù)603提取后端規(guī)則。規(guī)則被標(biāo)準(zhǔn)化為BPEL,并且被導(dǎo)出到BizTalk607以供后端規(guī)則執(zhí)行。炎拔脊換圖7示出了按照本發(fā)明一個(gè)實(shí)施方式的數(shù)據(jù)移植過(guò)程700。旨在實(shí)現(xiàn)更大的客戶端請(qǐng)求的AccentureEnterpriseRevenueSolution(AERS)程序包含TAS轉(zhuǎn)換應(yīng)用703,其轉(zhuǎn)換來(lái)自源服務(wù)器701的規(guī)則和數(shù)據(jù),并且通過(guò)中間服務(wù)器705將經(jīng)過(guò)轉(zhuǎn)換的規(guī)則和數(shù)據(jù)移植到目標(biāo)服務(wù)器709。移植應(yīng)用為TAS客戶提供了到AERS的數(shù)據(jù)轉(zhuǎn)換/轉(zhuǎn)接的快速方法。TAS意在提供以下內(nèi)容■提供用于已有TAS客戶端的升級(jí)路徑■降低ITS升級(jí)的成本■降低ITS升級(jí)的風(fēng)險(xiǎn)■縮短內(nèi)核升級(jí)的時(shí)間TAS轉(zhuǎn)換器703包含用于轉(zhuǎn)換的以下方面數(shù)據(jù)轉(zhuǎn)換、表單規(guī)則轉(zhuǎn)換、接口轉(zhuǎn)換、對(duì)應(yīng)關(guān)系轉(zhuǎn)換、后端規(guī)則轉(zhuǎn)換、賬目的收入賬目表移植,以及已有TAS報(bào)表的轉(zhuǎn)換。在高層,數(shù)據(jù)轉(zhuǎn)換經(jīng)過(guò)5個(gè)步驟,如下所述。1.TAS轉(zhuǎn)換器應(yīng)用703從指定的ITS(整合稅務(wù)系統(tǒng),在此情況下是Accenture稅務(wù)管理系統(tǒng))后端結(jié)構(gòu)701選擇和提取數(shù)據(jù)。該應(yīng)用利用通用SQL"SELECT"和"JOIN"語(yǔ)句來(lái)拉取有關(guān)數(shù)據(jù)。2.應(yīng)用對(duì)所提取的數(shù)據(jù)執(zhí)行任何預(yù)備凈化(cleansing)和格式化操作。此后,ITS數(shù)據(jù)被插入并臨時(shí)存儲(chǔ)到SQL服務(wù)器存儲(chǔ)庫(kù)705中。3.TAS轉(zhuǎn)換器應(yīng)用703使用通用SQL"Select"語(yǔ)句從SQL存儲(chǔ)庫(kù)705提取所有數(shù)據(jù),以便在平面文件導(dǎo)出之前進(jìn)行最終數(shù)據(jù)凈化和格式化。4.通過(guò)TAS轉(zhuǎn)換器應(yīng)用703,所有提取的數(shù)據(jù)進(jìn)行所需的凈化和格式化。此后,將數(shù)據(jù)導(dǎo)出到自動(dòng)生成的平面文件707中,以便批量插入到目標(biāo)系統(tǒng)(SAP或者其他系統(tǒng))709。將平面文件保存在預(yù)先指定的文件系統(tǒng)位置。5.使用Emigall作為批量插入程序,其將所生成的平面文件中的數(shù)據(jù)上傳到SAP后端系統(tǒng)709。TAS轉(zhuǎn)換器703依賴于四層結(jié)構(gòu),其提供用于將ITS數(shù)據(jù)遷移和凈化到SAP系統(tǒng)709中的通用、獨(dú)立和靈活的方法。該結(jié)構(gòu)包括以下層■源"源"層容納客戶的ITS,其維護(hù)將要移植的數(shù)據(jù)的原始集合?!鲋虚g"中間"層提供臨時(shí)結(jié)構(gòu),其接收將要凈化和臨時(shí)存儲(chǔ)的"源"數(shù)據(jù)?!瞿康牡?目的地"層接收和維護(hù)包含已凈化"中間"的已生成平面文件?!鯯AP:"SAP"層是源數(shù)據(jù)的最終目的地。圖8示出了按照本發(fā)明一個(gè)實(shí)施方式的TAS轉(zhuǎn)換器過(guò)程800。多數(shù)移植過(guò)程由TAS轉(zhuǎn)換器過(guò)程800管理。使用SSIS的過(guò)程800執(zhí)行ITS數(shù)據(jù)的提取、轉(zhuǎn)換和加載。而且,過(guò)程800可以提供圖形界面,其繪制移植流程的可視進(jìn)展。下面是TAS轉(zhuǎn)換器過(guò)程800執(zhí)行的步驟。47步驟l:清理中間數(shù)據(jù)庫(kù)表(步驟801)■將中間數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)清理出來(lái)步驟2:提取和加載TAS數(shù)據(jù)(步驟803)■從DB2表TF1ENTITY和TF1BUSDET提取數(shù)據(jù),加載到SQL表TAXPAYERS中■從DB2表TF1ADDR提取數(shù)據(jù),加栽到SQL表ADDRESSES中■從DB2表TF1ID提取數(shù)據(jù),加載到SQL表IDENTIFICATIONS中■從DB2表TF1ACCT提取數(shù)據(jù),加載到SQL表ACCOUNTS■從DB2表TF1RELA提取數(shù)據(jù),加載到SQL表RELATIONSHIPS■從DB2表TFINAME提取數(shù)據(jù),加載到SQL表NAMES步驟3:變換表Taxpayers、Names、Addresses、Identifications(步驟805)■針對(duì)TAXPAYERS執(zhí)行變換和代碼映射,加載到TAXPAYERS—NEW中■針對(duì)ADDRESSES執(zhí)行變換和代碼映射,加栽到ADDRESSES—NEW中■針對(duì)NAMES執(zhí)行變換和代碼映射,加載到NAMES—NEW中■針對(duì)IDENTIFICATIONS執(zhí)行變換和代碼映射,加載到IDENTIFICATIONS—NEW中■針對(duì)TAXPAYERS執(zhí)行變換和代碼映射,加載到TAXPAYERS—NEW中步驟4:變換表Relationships、ContractAccounts、ContractObjects(步驟807)■針對(duì)ACCOUNTS執(zhí)行變換和代碼映射,加載到ACCOUNTS—CA中■針對(duì)ACCOUNTS執(zhí)行變換和代碼映射,加載到ACCOUNTS_CO中■針對(duì)RELATIONSHIPS執(zhí)行變換和代碼映射,加載到RELATIONSHIPS—NEW中步驟5:移除自我關(guān)系(步驟809)■使用SQL移除所有與自己的關(guān)系步驟6:創(chuàng)建平面文件(步驟811)■^卩本生成平面文4牛TaxPayers.txt、ContractAccounts.txt、ContractObjects.txt以及Relationships.txt■使用TASConverter.DataConversion類來(lái)才丸行平面文件創(chuàng)建步驟7-8(在SAPGUI中一未在圖8中明確示出)步驟7:創(chuàng)建用于SAP的導(dǎo)入文件■導(dǎo)航到事務(wù)EMIGALL—〉MigrationObject(移植對(duì)象)_>DataImport(數(shù)據(jù)導(dǎo)入)■創(chuàng)建SAP可以記載的導(dǎo)入文件■Edit(編輯)一〉Data(數(shù)據(jù))一〉Upload(上傳)步驟8:運(yùn)行數(shù)據(jù)導(dǎo)入■從Data(數(shù)據(jù))菜單選擇ImportData(導(dǎo)入數(shù)據(jù))^f伴#^WS悉在圖9示出了按照本發(fā)明一個(gè)實(shí)施方式的、用于從TAS轉(zhuǎn)換收入賬目表的高層流程900。轉(zhuǎn)換例程903從Accenture稅務(wù)管理系統(tǒng)(TAS)901獲得賬目表,并且將賬目表轉(zhuǎn)換為標(biāo)準(zhǔn)格式。一旦處于公共結(jié)構(gòu),便將賬目表導(dǎo)入到SAP服務(wù)器905,以提供更新的結(jié)構(gòu)。圖10示出了按照本發(fā)明一個(gè)實(shí)施方式的、從Accenture稅務(wù)管理系統(tǒng)(TAS)1001轉(zhuǎn)換數(shù)據(jù)組件的高層流程1000。從稅務(wù)管理系統(tǒng)1001獲得數(shù)據(jù)組件的數(shù)據(jù)元素,其中舊有數(shù)據(jù)元素被提取到預(yù)定義的去正則化結(jié)構(gòu)中。用于數(shù)據(jù)元素的去正則化數(shù)據(jù)結(jié)構(gòu)映射到SAP應(yīng)用1005中。/《f^它*斧W脊^W萄^《悉在圖11示出了按照本發(fā)明一個(gè)實(shí)施方式的、從稅務(wù)管理系統(tǒng)1101轉(zhuǎn)換對(duì)應(yīng)關(guān)系組件的高層流程圖1100。轉(zhuǎn)換例程1103將對(duì)應(yīng)關(guān)系數(shù)據(jù)元素從Accenture稅務(wù)管理系統(tǒng)(TAS)1101映射到SAP數(shù)據(jù)元素。對(duì)應(yīng)關(guān)系內(nèi)容和數(shù)據(jù)元素被導(dǎo)入到SAP應(yīng)用1107。而且,第三方模板或者數(shù)據(jù)1105可以映射到轉(zhuǎn)換例程。圖12示出了按照本發(fā)明一個(gè)實(shí)施方式的用于從稅務(wù)管理系統(tǒng)轉(zhuǎn)換接口組件的高層流程1200。接口1205保持不動(dòng),以支持SAP服務(wù)器1201正在進(jìn)行的操作。虛擬數(shù)據(jù)庫(kù)1203是概念化TAS數(shù)據(jù)結(jié)構(gòu),舊有轉(zhuǎn)換例程和接口可以在其上運(yùn)行。圖13示出了按照本發(fā)明一個(gè)實(shí)施方式的用于從稅務(wù)管理系統(tǒng)1301轉(zhuǎn)換報(bào)表組件的高級(jí)流程130。TAS報(bào)表的數(shù)據(jù)元素被映像到SAP系統(tǒng)1305中的數(shù)據(jù)元素,以便向機(jī)構(gòu)報(bào)表提供相同的數(shù)據(jù)輸入。報(bào)表能力1307支持使用數(shù)#元素的相同解釋以及按照類似的呈現(xiàn)來(lái)重新產(chǎn)生報(bào)表。而且,客戶端可以將舊有數(shù)據(jù)結(jié)構(gòu)1303映像到轉(zhuǎn)換例程,以-使映^f象到SAP系統(tǒng)1305。^辦^7^5"乂口^^"《"^迷圖14示出了按照本發(fā)明一個(gè)實(shí)施方式的TAS人口統(tǒng)計(jì)表結(jié)構(gòu)1400。基于選定的行業(yè)ITS以及用作源和目的地后端系統(tǒng)的AERS配置的軟件,來(lái)開(kāi)發(fā)和測(cè)試TAS轉(zhuǎn)換器。作為源ITS系統(tǒng),使用AccentureTAS系統(tǒng),特別地,其具有類似于已有客戶端實(shí)現(xiàn)的后端配置。目的地AERS后端系統(tǒng)是SAPPSCD才莫塊。通過(guò)包含Accenture管理和SME,人口統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu)被選擇為將要移植的第一數(shù)據(jù)序列。TAS系統(tǒng)包括9個(gè)后端表,其維護(hù)人口統(tǒng)計(jì)數(shù)據(jù),并且利用TAS轉(zhuǎn)換器加以處理。TAS人口統(tǒng)計(jì)表詳細(xì)說(shuō)明如下。TAS人口統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu)<table>tableseeoriginaldocumentpage51</column></row><table>rAs乂口婉/,^y多迷TF1ACCT:納稅者可以在該表上記錄其注冊(cè)的每個(gè)稅務(wù)類型,例如,個(gè)體、銷售和使用、公司收入、預(yù)扣等。對(duì)于每一個(gè),該表保存諸如acctid的信息(如果適用,僅銷售和使用以及預(yù)扣賬目),賬目的有效日期、提交頻率等。注意對(duì)于季節(jié)性提交者,存儲(chǔ)關(guān)于他們?cè)谀膸讉€(gè)月提交的信息。TF1ADDR:納稅者可以在此表上具有不止一個(gè)條目,可以具有不同的地址類型,諸如主要地址、通郵地址、位置等,并且這些不同的地址類型可以與整個(gè)納稅者相關(guān)聯(lián),或者與特定的賬目類型相關(guān)聯(lián),例如銷售和使用、預(yù)扣等。TF1ASSET:納稅者在該表可以具有或者不具有信息。該表存儲(chǔ)已經(jīng)收集的關(guān)于納稅者的資產(chǎn)信息,其可以用于收集目的(也即,銀行賬戶、雇主等)。TF1BUSDET:除了該表的名稱之外,包括個(gè)人在內(nèi)的納稅者在該表上將具有條目;盡管某些字段僅與商業(yè)實(shí)體有關(guān),例如NAICS代碼。該表保存諸如業(yè)務(wù)類型、NAICS代碼以及業(yè)務(wù)何時(shí)還是和/或結(jié)束的信息。TF1ENTITY:該表存儲(chǔ)實(shí)體的類型,例如納稅者、相關(guān)方、財(cái)產(chǎn)等,不論他們是否是受限的納稅者,例如,既能由具有特定安全性的用戶查看,并且不論他們?cè)贑RM系統(tǒng)中是否具有服務(wù)請(qǐng)求。TF1EXEMPT:納稅者可以在該表上具有或者不具有信息。該表存儲(chǔ)特定賬目的免除類型,例如非盈利機(jī)構(gòu)在此表上針對(duì)其銷售和使用賬目具有記錄。TF1ID:IDINTERNAL是用于每個(gè)納稅者的唯一標(biāo)識(shí)符;納稅者在此表上可以具有不止一個(gè)條目,因?yàn)槠淇梢跃哂胁恢挂粋€(gè)外部ID類型,但是只有一個(gè)外部ID可以是主ID。TF1NAME:納稅者在該表上可以具有不止一個(gè)條目,因?yàn)槠淇梢跃哂胁恢挂粋€(gè)名稱類型(例如,法律、商業(yè)等)。TF1RELA:納稅者在該表上可以具有或者不具有信息。該表將系統(tǒng)中的實(shí)體彼此鏈接,并且指示關(guān)系是否可用于抵消。本小節(jié)的目的是提供支持AERS的TAS轉(zhuǎn)換器開(kāi)發(fā)基礎(chǔ)架構(gòu)所需的硬件和軟件需求的概況。所列出的軟件對(duì)應(yīng)于所使用的開(kāi)發(fā)和測(cè)試環(huán)境。將這些軟件組件部署和引入到TAS轉(zhuǎn)換器技術(shù)范疇的順序在詳細(xì)部署規(guī)劃小節(jié)中明確說(shuō)明。TAS轉(zhuǎn)換器將在AERS環(huán)境中使用以下操作系統(tǒng)■1Windows2003服務(wù)器-1CPU,2GBRAM(DB2DB)■1Windows2003服務(wù)器-1CPU,2GBRAM(SQLServerDB)■1Windows2003服務(wù)器-1CPU,4GBRAM(ECC6.0)需要下列軟件以便構(gòu)建TAS轉(zhuǎn)換器開(kāi)發(fā)環(huán)境■MicrosoftSQLServer2005EnterpriseEdition■IBMDB2Version9.1■MicrosoftVisualStudio2005ProfessionalEdition■MicrosoftOLEDBProviderforDB2■MicrosoftVisualSourceSafe2005(Optional)■SAPmySAPERP2005(PSCD)^多/遂審署魂W本小節(jié)的目的是詳細(xì)描述建立TAS轉(zhuǎn)換器環(huán)境所需的步驟序列。這應(yīng)當(dāng)充當(dāng)TAS轉(zhuǎn)換器團(tuán)隊(duì)在組裝TAS轉(zhuǎn)換器基礎(chǔ)設(shè)施時(shí)的指南。該小節(jié)是軟件安裝及其組件的高層細(xì)節(jié)。用戶可以參考該小節(jié)作為TAS轉(zhuǎn)換器環(huán)境的順序和概況的指南。1.安裝SAPPSCDa.由Basis團(tuán)隊(duì)安裝任務(wù)2.IBMDB2安裝a.安裝DB2V9b.導(dǎo)入TAS表結(jié)構(gòu)i執(zhí)行SQL插入查詢c.更新TAS數(shù)據(jù)i映射平面文件字段3.安裝MicrosoftOLEDataProviderforDB2a.在開(kāi)發(fā)機(jī)器上安裝DB2Providerb.在運(yùn)行時(shí)機(jī)器上安裝DB2Provider4.安裝MicrosoftSQLServer2005a.在開(kāi)發(fā)機(jī)器上安裝SQLServer2005b.在運(yùn)行時(shí)機(jī)器上安裝SQLServer2005c.導(dǎo)入SQL表結(jié)構(gòu)5.TAS轉(zhuǎn)換器應(yīng)用導(dǎo)入a.拷貝已有的SSIS應(yīng)用b.將SSIS應(yīng)用上傳到VisualSourceSafec.配置應(yīng)用i配置數(shù)據(jù)源證書和位置ii配置文件系統(tǒng)證書和位置盡管已經(jīng)關(guān)于包括執(zhí)行本發(fā)明的優(yōu)選模式的特定示例描述了54本發(fā)明,但是本領(lǐng)域技術(shù)人員將會(huì)理解,在所附權(quán)利要求記載的本發(fā)明的精神和范圍內(nèi),將存在對(duì)上文描述系統(tǒng)和技術(shù)的多種變形和替換。叫T厶989000Jpop戶p'薩dn.qpn.zqp-iuqvuio;3/3!doi/6A/Avriizqp/M9iU330ju!/uiocrurqrj3PFloq.qHqnd.//:d:ni((s叢opu!AV),^,芳W紫今,4紫^:I:乙8G90/0690/c)89o/oOAo/oI9o/"Ao/oA9o/o乙Zo/c^JOliris3"uiunnqqBipBC^/qpTi3qp/30p.。3'qptv乙qp.um.iuo3/3!do:i/8A/Ami2qPA!柳9C)qju!/uio:vuiq卩3pirioq.q!iqrid〃d叫豐,^諒c《驕錄錄.qpn.乙qp'uiq!.uio3/o!doi/8A/Avrii2;qp/j柳3;30ju!/uiocvuiq卩3pirioq.q!iqnd〃d:ni[(SAVopuAV)靠芳g《古務(wù)ff4奪^f辨豫6AZ8dl"^^/4,殺抑。者^(guò)i^4靠芳zaaT^,^^彩(inS008800S附錄B:字母組合和縮寫<table>tableseeoriginaldocumentpage57</column></row><table>附錄C:SQL查詢ZXB2炎承普詢TFIENTITY和TFIBUSDETDB2表"M/C7/H/rF7五臘7T.CD—nT£_£M77T'J7T^jV777T:CD—SOLACE—"尸D」"M/C7/HJ(9/77Z".rF7五脂7r:/z)一服尸丄(9ra:五一c/m47^,c4S7TM/c/^el/ownz".rf7五at/7T:Drj7尸zwr五爿sj^/C7W/po"爿s"r—f/尸zx4(^77,(://^.嫌772"7^7£臘7^窗—"尸^7^5驗(yàn)C股/卿MrMJ7m47^,"M/C/i4五丄.JOi77Z"7^75f/SD五rCD一7T尸五—SL/S/A^S5:58〃m/c7/hjomz〃rF7SV77jr:/£>一餅£酉丑=〃m/ct^虹.j:c^ztz".TF1ADDRDB2表驢C股i卿爿SDr—£FF£Cr,"M/Cii4五U(9i77Z"^djv^Affi^rr五7V77cw;〃M/Ctt4五厶乂(97J7Z"7V^MjD"兄^d一S77^i:r—,"M/Ctt4£Z.J.Oi77Z"rFWDD兄爿Z)一S77五五r—2,"M/Ctt4£Z.■/0/77Z"7T^DDiJZ)—C/7T'"M/C7/感./OmZ".7T^MDZ)/.CD—」朋/—COWV7W'"M/c7/HJO臘Z".rF"DDim—朋她,"M/CHH■/O臘Z".77^£>"義/£)一尸//0厄_6)/^踐"M/c/zujamz".rF"d皿cd一tt尸五—^ccr一狐,"M/C/W五丄.JC^77Z".r尸"DD兄CD—7T尸五J五丄,"ikf/C/Wfi丄.JOi77Z"'營(yíng)C7i4虹.J(9i77Z"7^"""/.乾陋—尸O,"M/C/i^U(9臘Z"7"D/./"—M/M一卿一乾肌TF1IDDB2表"m/o/息jr"瓜cd—s(9Wc^一"m47^,〃m/ct/嵐.j:6^7vz"7,尸爐/"_,尸2:<9鵬一"尸£^r五,C4S7r"M/c7/n.j:c^77z".r尸/瓜:rM一"m4r雄K4ic//^,wrM"尸A4r五,TF1ACCTDB2表:'覽c7/m:o臘z".7F"ccn—d《術(shù)iv一FzscM丄,"m/c7/^zjo臘z".:tf"cctc"一f朋q一孤蕩,"m/C7i4ur尸"ccr.cdj£^cw—"m4r五,rF"ccz/D一服尸丄o鵬一"m4re,C4WM/C7/nJO臘z".rF"ccr力—"mOT爿s隨cz/廚卿xsC4S7Y"M/c/i4五uoi77z"rF"ccr.:rM—t/尸iur五爿s^ic/i4ipo"爿s"M/C/i4E丄.J:Oi77Z"TF"CCr./W—S五尸3TMB五尺61"M/c/wuomz".rF"ccr.cz)一jy尸五一r^o4觸,〃M/C7^虹.乂a/77Z".rccr.z/v一脇y,'"M/C7/感.脂77Z"TF"CC7:/Z)—A4肌"M/C似U0/77Z"r尸"CCrJ"(XT—A4肌C/^2T"M/C別UH'.7F"CCn一"肌J吸W,C7/聘卿wTFIRELADB2表〃M/Ctt4U:Tf7肌ACD—7T尸五一力(XT一愿,"M認(rèn)息.j.o臘z".7T艦".CD一nr五一肌,C4WM/C/^L/Oi77Z〃77^脆ADr一五FFrW隱C股/,W"MC7/息.JC^77Z"7T^纖ACD一5X47T/5"—嵐,"M/C〃H.J0臘Z"rF潔L4.CD一SOWC5J7尸ZX4r五,〃M/C7/H.JO臘Z".,組ACZ)J脇CW—f/尸ZX47E,"M7C/i4虹JO臘Z".rW肌/l/D五M尸IO鵬J7m4r五,TF1NAMEDB2表〃M/C7/H.JOT77Z".rF扁腿/D一/A7^崩丄,"M/C7/息./O臘Z".rF扁感/"一M/M一卿JVJ城"M/CT/HJOmZ".7F扁MECD—7TP£—沼感,W/C7/孤.J:0/77Z〃rF層ME層一F/線"M/C/Z孤.0臘Z〃rF層M五.腹一層7147一M/DD丄五,"M/C/ZH.7(9/7YZ".rF扁腿7/V—""尸丄/C47^一A^鄉(xiāng)〃M/C/i4U6^J7Z"TF濯M五.CD一S0WC五一"m4r五,,c股五丄.jOR77Z".r尸洲mecdjfi4scw一"m4〃M/C///^L■/Oi77Z"TF爐ME/D一五M尸丄0艦一"m4〃M/C股U0臘Z"rF履M5.7/V一細(xì)iG五,〃M7C7/HJ(9i77Z"rF扁M五.層—7Y7X五,C^77Z"7F扁皿廢一sL^ra:用于將表TAXPAYER變換為表TAXPAYER—NEW的SQL提取查詢表ADDRESSES到表ADDRESSES—NEW:v4""腦孤/D—M/M—卿—JDi)/,爿Z)Z)/ES^.CD一7T尸五一v4CCr'爿DDi孤ES1./djeer,爿DD腐鵬.Dr—五f尸五cr,爿d"愿sES."r—fiVAyi"£)/ES^£S.^Z)—A^M£_^rr五iV77CW'v4DDi五5^五S.爿D一S77五五r—7,v4Z^五SSES.乾S77五五r一2,爿Z^五鵬"Z)一C/7T'^DD/^鵬51.CD■」DD腦鵬.^一脇幾—貼r"錢/£>_///認(rèn)五一//0細(xì),v4DD/ES淑/£)一£燈—7^//OM£,尸/ZO厄一OFF線爿朋i孤五51.CD一7T尸五一/4Ccr一尺虹,爿AD愿皿/D—力ccrj五丄,爿DZ^鵬S.Dr一"尸ZX47^,爿,腐雄rM—"m4r五'爿ZIDiES鵬.五M4/丄n/^鵬6W爿""愿鵬./Z)—/AT£m4Z=n/W鵬.乾/AT57A^表NAMES到表NAMES—NEW:;W.層一fiV77rKA7.層—《J^A7.層一尸7^7:iW.層一層r嵐—M/朋仏a7.乾而尸丄/C4r五一M4M五,脫cd一S7MmSms;A7./z)一,尸zora^jym4r五,服r乾r£,"r—t/m4r五,iW.淑一^V7Y7T一《iWU7KE一i^4G尸加M『服i五(W/.CZ)一7T尸五一AW£=廣孤五CTM/AYO)—7T尸五一A64M巧爿SCZ)一7T尸五—崩MEfA7./D一/ATO扁=/D—鮮^嵐,碧D(7W./D一M/M一卿—眉細(xì)卩孤rMiyr/D—m/乾卿—a^滅」w/d一m7m一卿—眉她CD一7T尸五jv贏柳爿M)fw.c/)—nr五—^ccr=(7V〃"一鮮五履^丄=/D一/ATOA^H)fV/.CD一7T尸J^CCr=表IDENTIFICATIONS到表IDENTIFICATIONS—NEW:SELECTIDENTIFICATIONS.ID—INTERNAL,IDENTIFICATIONS.CD_TYPE」D,IDENTIFICATIONS.ID—ENTITY,IDENTIFICATIONS.ID—OCCURRENCE,65IDENTIFICATIONS.INIDPRIMARYFROMTAXPAYERSINNERJOINIDENTIFICATl0NSONTAXPAYERS.ID一烈TERNAL—IDENTIFICATIONS;IDINTERNAL表ACCOUNTS到表ACCOUNTS—CASELECTA1jIDjINTERNAL.A17CD二rYPE』CCZA1.TEMP—ID—ACCT,A1.DTEFFECT,彳■DT—ENDFRoM彳CCOUNTSASAlINNERJOINTAXPAYERSONAl.IDINTERNAl=TAXPAYERS.ID—INTERNALWHERE(Al,DT土FFECT。(SELECTMIN(DTEFFECT)ASDT——EFFECTFROMACCOUNTSASA2WHERE(A1j11)hYTERNAlID~I(xiàn)NTERNAL)AND(A1.CD二rYPEjCCT=CDTYPEACCT)AND(DTEND>=CONVERT(CHAR(IO)lGETDATEO.120))))GROUPBYAl.IDINTERNAl,A1.CD—TYPE—ACCT,A1.TEMP—ID—ACC~AlDT—EFFECT,A1.DT—ENDORDERBYAljIDINTERNALA1jCDJYPE』CCT表ACCOUNTS到表ACCOUNTS—COSELECTACCOUNTS.IDINTERNAL,ACCOUNTS.DT_EFFECT,ACCOUNTS.DT_END,ACCOUNTS.CD_FREQ_FILING,ACCOUNTS.TEMP——ID——ACCT,ACCOUNTS.TEMP——D1——CO,TAXPAYERS.CDTyPEBUSINESSFROMACCOUNTSINNERJOINTAXPAYERSONACCOUNTS.ID_INTERNAL==TAXPAYERS.ID_INTERNALWHERE似CCOUNTS.TEMP—ID—ACCTIN(SELECTA1.TEMPIDACCTfTOM爿CCW愿M"層WJ課W/ffii五/£>/AT£W/^4I=/Z)JATEiA^"爿WD07.CD7TPWCCr=CD7Ti^CCr"」爿M)^7力r一五M)〉=CCW,77C/^,」,g^m4r鄰,72曙表RELATIONSHIPS到RELATIONSHIPS—NEW:/五ncws麼譜/iv環(huán)im,i五"r腹s麼s.cDnr五—^4Ccr'肌v47YCW甜/尸51.CCr'皿J77CW柳尸S./D一/AT五麵丄—肌風(fēng)力r證S/Z/尸S.纖j77cws麼51.Dr一五A/D,脆^r腹紐監(jiān)cd—■ros一皿尸船m7XOW薦CWM"77CW57/"./D—W潔崩丄肌=附錄D:腳本代碼為CA和CO指派TEMP—ID:為ContractAccount和ContractObject創(chuàng)建唯一的數(shù)字PublicClassScriptMainInheritsUserComponentPublicTEMPJDJNTERNALAsDecimalPublicTEMP—ID—ACCOUNTAsIntegerPublicTEMPIDCOAsIntegerPublicIEMP一CD一TYPE一ACCTAsDecimalPublicOverridesSubInputO一ProcessI叩utRow(ByValRowAsI叩utOBuffer)IfTEMPJDACCO潔T-0ThenSetStartValues(Row.IDINTERNAL,Row.CDTYPEACCT)EndIfAssignTempID(Row.I畫TERNAL,Row.CDTYPEACCT,Row.TEMPIDACCT)Row.TEMPIDACCT=TEMPJD一ACCOUNTRow.TEMPIDCO=TEMPJDCOEndSubPrivateSubAssignTempID(ByValinputIDINTERNALAsDecimal,ByValinputCDTYPEACCTAsDecimal,ByValinputTEMPJDACCTAsInteger)Ifi叩utID一INTERNAL=TEMPJDJNTERNALThenIfinputCDTYPEACCTTEMP—CD—TYPE—ACCTThenTEMP—CD—TYPE—ACCT=i叩utCD—TYPE—ACCTTEMPJD—ACCOUNT+=1EndIfElseTEMPJD一INTERNAL=inputIDINTERNALTEMP—CD—TYPE—ACCT=inputCD一TYPE一ACCTTEMPJD—ACCOUNT1EndIfTEMPJD—CO+=68EndSubPrivateSubSetStartValues(ByValinputlDINTERNALAsDecimal,ByValinputCDTYPEACCTAsDecimal)TEMPCD—TYPE—ACCT=inputID—INTERNALTEMP—ID—INTERNAL=inputCDTYPEACCTEndSubEndClass變換日期從日期字段中刪除"-"PublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessI叩utRow(ByValRowAsInputOBuffer)Row.DTSTARTBUS=ConvertDate(Row.DTSTARTBUS)Row.DTENDBUS=ConvertDate(Row.DTENDBUS)EndSubPrivateFunctionConvertDate(ByValinputDateAsString)AsStringinputDate=inputDate.Replace("-","")DimiYearAsIntegeriYear=CInt(i叩utDate.Substring(O,4》IfiYear<1900TheninputDate=""EndIfReturninputDateEndFunctionEndClass變換伙伴類型執(zhí)行代碼映射PublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessInputRow(ByValRowAsInputOBuffer)Row.CDTYPEBUSINESS=ConvertPartnerCategoiy(CInt(Row.CDTYPEBUSINESS))EndSubPrivateFunctionConvertPartnerCategory(ByValcatAsInteger)AsIntegerIfcat=100Orcat=110Orcat=161Orcat=162Orcat=163Orcat=164Orcat=165Orcat=700Thencat=1Elsecat=2EndIfTransformHouse:DeriveshousenumberfromaddressPublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessI叩utRow(ByValRowAsInputOBuffer)Row.HOUSE=ConvertHouse(Row.HOUSE)Row.ADSTREETl=ConvertStreet(Row.ADSTREETl)EndSubPrivateFunctionConvertHouse(ByValvalAsString)AsStringDimiSpaceAsIntegeriSpace=val.IndexOf("")IfNotiSpace=-lThenval=val.Substring(O,iSpace)EndIfReturnvalEndFunctionPrivateFunctionConvertStreet(ByValvalAsString)AsStringDimiSpaceAsIntegeriSpace=val.IndexOf("")IfNotiSpace=-lThenval=val.Remove(O,iSpace)EndIfReturnvalEndFunctionEndClassTransformAddressType:PerformscodemappingPublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessInputRow(ByValRowAsInputOBuffer)Row,CDTYPEADDRSAP誦ConvertAddressType(Row.CDTYPEADDR)EndSubPrivateFunctionConvertAddressType(ByValvalAsDecimal)AsStringDimtypeAsStringtype="XXDEFAULT"Ifval=lOThen'MAILINGtype="MAILING"Elselfval=20Then'PREMISEtype="LOCATION"Elselfval=30Then'LOCATIONtype="LOCATION"Elselfval=40Then'SECONDARYtype="MAILING"Elselfval=50Then'EMAILtype="MAILING"Elselfval=60Then'PRIMARYtype="XXDEFAULT"Elselfval=70Then'RESIDENTtype="0002"Elselfval=90Then'UNKNOWNtype="MAILING"EndIfReturntypeEndFunctionEndClassTransformZip:Removes"-"fromzipcodePublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessInputRow(ByValRowAsInputOBuffer)DimzipAsStringzip=Row.CDADDRZIPIfNotIsNumeric(zip.Replaee("-",""))ThenRow.CDADDRSTATE="VA"EndIfRow.CDADDRZIP=ConvertZIP(Row.CDADDRZIP)EndSubPrivateFunctionConvertZIP(ByValvalAsString)AsStringDimtempAsStringtemp="20000-0000"71Ifval.Trim丄ength=0Thenval=tempElselfNotIsNumeric(val.Replace("-",""))Thenval=tempEndIfReturnvaiEndFunctionEndClass變換標(biāo)識(shí)類型執(zhí)行代碼映射PublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessInputRow(ByValRowAsInputOBuffer)Row.CDTYPEIDSAP=ConvertlDTypes(Row.CDTYPEID)EndSubPrivateFunctionConvertIDTypes(ByValvalAsDecimal)AsStringDimtypeAsStringtype="FS001"'IDCARDIfval=lThen'EINtype="EIN"Elselfval=2Then'SSNtype="IBSOOl"Elselfval=4Then'JNTtype="ZTAXID"Elselfval=5Then'BTNtype="ZTAXID"Elselfval=6Then'SSLtype="ZTAXID11Elselfval=7Then'BUYRtype="ZTAXID"Elselfval=100Then'TEMPtype="ZTAXID"EndIfReturntypeEndFunctionEndClass變換賬目類別執(zhí)行代碼映射PublicClassScriptMainInheritsUserComponentPublicOverridesSubI叩utO一ProcessI叩utRow(ByValRowAsInputOBuffer)Row.CDTYPEACCTSAP=ConvertAcctCategories(Row.CDTYPEACCT)EndSubPrivateFunctionConvertAcctCategories(ByValvalAsDecimal)AsStringDimtypeAsStringtypeIfval=100Thentyps="IN"Elselfval-111Thentype="GS"Elselfval:125Thentyps="GS"Elselfval-:150Thentype="IF"Elselfval=161Thentype="GS"Elselfval::162Thentype="GS"Elsdfval=163Thentype="GS"Elselfva卜:164Then"GS"Elselfval=210Then"GS"Elselfval=250Thentypc='CF'Elselfval=260Thentype-'GS"Elselfval二280Thentyps='CF"Elselfval=300Thentype-'麗"Elselfval==310Thentyps='GS"Elselfval=350Then'SU"Elselfval=360Thentyp6='CF'Elselfval=370Thentypc='GS"Elselfval=380Thentypc='CF'Elselfval=400Thentypc='RE"Elselfval=450Thentype="GS"Elselfval=510Thentype="GS"ElselfVal=520Thentyps="GS"ElselfVal=530Thentyp6="GS"ElselfVal=540Thentyps="GS"Elselfval=:550Thentype="GS"Elselfval=:560Thentypc="GS"Elselfval:=565Thentyps="CF"Elselfval=:570Thentypc="GS"Elselfval==575Thentyp6="GS"Elselfval==580Thentyps="GS"Elselfval==585Thentype-"GS"Elselfval=600Thentype="GS"Elselfval=610Thentype="GS"Elselfval=700Thentype="RE"Elselfval=710Thentype="RE"Elselfval=720Thentype="GS"Elselfval=730Thentype="GS"Elselfval=998Thentype="GS"EndIfReturntypeEndFunctionEndClass變換周期執(zhí)行代碼映射PublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessInputRow(ByValRowAsInputOBuffer)Row.CDFREQFILING=ConvertPeriodicity(Row.CDFREQFILING)EndSubPrivateFunctionConvertPeriodicity(ByValvalAsDecimal)AsDecimalIfval=1Then'Annualval=6Elselfval=12Then'Monthlyval=3Elselfval=365Then'Dailyval=1'MustconfigurePSCDforDailyEndIfReturnvalEndFunctionEndClass變換伙伴類別C0:纟丸行代碼映射PublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessInputRow(ByValRowAsInputOBuffer)Row.CONTRACTOBJECTTYPE=ConvertPartnerCategoiy(CInt(Row.CDTYPEBUSINESS))EndSubPrivateFunctionConvertPartnerCategory(ByValcatAsInteger)AsInteger74Ifeat=100Orcat=110Orcat=161Orcat=162Orcat=163Orcat=164Orcat=165Orcat=700Thencat=10Elsecat=20EndIfReturncatEndFunctionEndClass變換關(guān)系執(zhí)行代碼映射PublicClassScriptMainInheritsUserComponentPublicOverridesSubInputO—ProcessI叩utRow(ByValRowAsInputOBuffer)Row.CDTYPERELSAP=ConvertRelTypes(Row.CDTYPEREL)EndSubPrivateFunctionConvertRelTypes(ByValvalAsDecimal)AsStringDimtypeAsStringtype="BUR006"ReturntypeEndFunctionEndClass創(chuàng)建平面文件生成人口統(tǒng)計(jì)平面文件ImportsSystemImportsSystem.DataImportsSystem.MathImportsTASConverter.DataConversionImportsMicrosoft.SqlServer.Dts.RuntimeImportsSystem.DiagnosticsPublicClassScriptMain'Theexecutionenginecallsthismethodwhenthetaskexecutes.'Toaccesstheobjectmodel,usetheDtsobject.Connections,variables,events,'andloggingfeaturesareavailableasstaticmembersoftheDtsclass.'Beforereturningfromthismethod,setthevalueofDts.TaskResulttoindicatesuccessorfailure.'ToopenCodeandTextEditorHelp,pressFl.'ToopenObjectBrowser,pressCtrl+Alt+J.PublicSubMain()'AddyourcodehereDimobAsNewDataConverterDimdbAsStringDimlocPayerAsStringDimlocAccAsStringDimlocCoAsStringDimlocRelAsStringTrydb="DataSource=RESBT2403;InitialCatalog=NEW—EMIGALL—TAS;UserID=tasconverter;pwd=********"locPayer="C:\TAS—Output\TaxPayers.txt"locAcc="C:\TAS_Output\ContractAccounts.txt"locRel="C:\TAS_Output\Relationships.txt"locCo="C:\TASOutput\ConctractObjects.txt'ob.CreateTaxPayersFile(db,locPayer)ob.CreateContractAccountsFile(db,locAcc)ob.CreateRelationshipsFile(db,locRel)ob.CreateContractObjectsFile(db,locCo)CatcheAsExceptionSystem.Diagnostics.EventLog.WriteEntiy("ScriptMain",e.ToStringO)FinallyEndTryDts.TaskResult=Dts.Results.SuccessEndSubEndClass附錄E:SAP人口統(tǒng)計(jì)結(jié)構(gòu)人口統(tǒng)計(jì)結(jié)構(gòu)可以位于與l是取該文件相同的目錄。文件:PARTNER_STRUCT.HTMCONTRACT—ACCOUNTS—STRUCT.HTMCONTRACT—OBJECTS—STRUCT.HTMRELATIONSHIPSSTRUCT.HTM<table>tableseeoriginaldocumentpage78</column></row><table>^T,jya.《I^^C^TJv丄',,-(lgytiqf^MfftlDB2:TFINAME^資,絡(luò)'窗.>:趣',;%頃,《g瞎'l②-yj*;;3£幽toth^MiBHtAfmjatfgtwl'ffyrn^i翻,,,'謂y,隱謂a,nm-*X--.-、-::一".(\..》1、i..v"n際"〕r:、豐,二".1「々.一么;,43"......ts,v、、v々v79<image>imageseeoriginaldocumentpage80</image><table>tableseeoriginaldocumentpage81</column></row><table><image>imageseeoriginaldocumentpage82</image><image>imageseeoriginaldocumentpage83</image>FLATFILE:TAXPAYERRJsE孕Pwr^一疇—■…一—一.____P*UcncnK抓P"U《e2柳0-0鵬FREEDOMMIV£WSVAOO50103SrtM,YO貼CO,"tM加O-OOOODOtPHIWLAMEUS84<image>imageseeoriginaldocumentpage85</image>SAP:NAME,gi^veWf"afwf£抑狄豕&-gn^onm柳詠tem改&…效':「二」二二二m^'^使,邁屋!g-^M^,gjC鞋逸儸^.—",^"〉pg眺陶yPerson:700加191沐foleT狄Parmeir圓圓國(guó)鈔齢翻靡v'1》、;r^r-:^FTr,:......j脇a—hT,顧7'隱R^Sliwi國(guó)L謹(jǐn)■—*-!'襲.扭'沐'二:,".'b、.bw「晰,my啤gy加—沐—鄉(xiāng)t^c-'〕-鵬'■'、,"86SAP:ADDRESS:'^fefSS,矚徵^i!^il^^^^ja^^g^:虛l^^^^^jllglpy^j^1^^i)逸"短'短:惑#^|輸!3'(@'"'—:,DisplayPerson:7卿01&1兆roleT抓Partne二畫Butinf,,P,柳&柳P似,,呢ST加VH2E^&0,B^JjUfctS^beg、I國(guó)畫丄曙l國(guó)HJJlJJMUr4屬lL亂—丄亂rl顯f]「:,^V"r^5^i:Tr、U^M^H^iA'Sir"必—FfjBliep離5Bagfaw,',>luS,ytiC》"頓^:奶《)0^頓3,^535疏0恥節(jié).粘"5!下lfi5:^s^^fflgf^^':■*■':」」...::'■':.■::-:二'-,丄-:.:服函0t幼1卿t,的,敏的fRKDOMDWVE'RESTOW賴卿XM)0的,噸,,^魯雄",稀^:4''',線碟燕,':','______抓■l鑫g^^鑀^^^lt拔^^^^^安',;讖Em整'、"….、'、》、,^87<image>imageseeoriginaldocumentpage88</image>權(quán)利要求1.一種方法,包括(a)從舊有應(yīng)用獲得第一組件;(b)根據(jù)舊有元素生成中間狀態(tài)元素,所述舊有元素包含在所述第一組件中;以及(c)將所述中間狀態(tài)元素轉(zhuǎn)換為目標(biāo)元素,目標(biāo)應(yīng)用被配置為使用所述目標(biāo)元素。2.如權(quán)利要求1的方法,其中所述第一組件包括規(guī)則組件,并且所述方法進(jìn)一步包括(d)從所述舊有應(yīng)用獲得所述規(guī)則組件,所述舊有應(yīng)用包含以第一軟件語(yǔ)言指定的舊有源代碼;(e)根據(jù)舊有規(guī)則生成中間狀態(tài)表達(dá),所述舊有規(guī)則包含在所述規(guī)則組件中;以及(f)將所述中間狀態(tài)表達(dá)轉(zhuǎn)換為目標(biāo)規(guī)則,目標(biāo)應(yīng)用被配置為執(zhí)行所述目標(biāo)規(guī)則,所述目標(biāo)應(yīng)用包含以第二軟件語(yǔ)言指定的目標(biāo)源代碼。3.如權(quán)利要求2的方法,進(jìn)一步包括(g)從所述舊有應(yīng)用獲得數(shù)據(jù)組件;以及(h)根據(jù)舊有數(shù)據(jù)元素生成中間數(shù)據(jù)元素,所述舊有數(shù)據(jù)元素包含在所述數(shù)據(jù)組件中;以及(i)將所述中間數(shù)據(jù)元素轉(zhuǎn)換為目標(biāo)數(shù)據(jù)元素。4.如權(quán)利要求3的方法,進(jìn)一步包括(j)在執(zhí)行所述目標(biāo)規(guī)則時(shí),訪問(wèn)所述目標(biāo)數(shù)據(jù)元素。5.如權(quán)利要求2的方法,其中所述第一軟件語(yǔ)言和所述第二軟件語(yǔ)言是不同的軟件語(yǔ)言。6.如權(quán)利要求2的方法,其中所述第一軟件語(yǔ)言和所述第二軟件語(yǔ)言是相同的軟件語(yǔ)言。7.如權(quán)利要求l的方法,進(jìn)一步包括(d)從所述舊有應(yīng)用獲得對(duì)應(yīng)關(guān)系組件;(e)根據(jù)舊有數(shù)據(jù)元素生成中間對(duì)應(yīng)關(guān)系元素,所述舊有對(duì)應(yīng)關(guān)系元素包含在所述對(duì)應(yīng)關(guān)系組件中;以及(f)將所述中間對(duì)應(yīng)關(guān)系元素轉(zhuǎn)換為由所述目標(biāo)應(yīng)用使用的目標(biāo)對(duì)應(yīng)關(guān)系元素。8.如權(quán)利要求l的方法,進(jìn)一步包括(d)從所述舊有應(yīng)用獲得接口組件;(e)根據(jù)舊有接口元素生成中間接口元素,所述舊有接口元素包含在所述接口組件中;以及口元素。9.如權(quán)利要求l所述的方法,進(jìn)一步包括(d)從所述舊有應(yīng)用獲得報(bào)表組件;(e)根據(jù)舊有報(bào)表元素生成中間報(bào)表元素,所述舊有報(bào)表元素包含在所述報(bào)表組件中;以及表元素。10.如權(quán)利要求l的方法,進(jìn)一步包括(d)在從所述舊有應(yīng)用移植到所述目標(biāo)應(yīng)用時(shí),對(duì)所述第一組件與其他組件進(jìn)行同步。11.如權(quán)利要求l的方法,進(jìn)一步包括(d)當(dāng)在將所述舊有元素移植到所述目標(biāo)元素時(shí)檢測(cè)到錯(cuò)誤的時(shí)候,調(diào)用錯(cuò)誤恢復(fù)過(guò)程。12.如權(quán)利要求2的方法,其中所述第一軟件語(yǔ)言由COBOL規(guī)范指定。13.如權(quán)利要求1的方法,其中所述舊有應(yīng)用涉及稅務(wù)管理系統(tǒng)。14.如權(quán)利要求2的方法,進(jìn)一步包括(g)從所述規(guī)則組件提取詞匯表項(xiàng),所述詞匯表項(xiàng)與所述舊有規(guī)則相關(guān)聯(lián);(h)將所述中間狀態(tài)表達(dá)與所述詞匯表項(xiàng)進(jìn)行聚集,以形成所述目標(biāo)規(guī)則;(i)將所述目標(biāo)規(guī)則部署到所述目標(biāo)應(yīng)用。15.—種裝置,包括存儲(chǔ)器;以及處理器,其訪問(wèn)所述存儲(chǔ)器以獲得計(jì)算機(jī)可執(zhí)行指令,并且執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令,以完成(a)從舊有應(yīng)用獲得規(guī)則組件,所述舊有應(yīng)用包含以第一軟件語(yǔ)言指定的舊有源代碼;(b)根據(jù)舊有規(guī)則生成中間狀態(tài)表達(dá),所述舊有規(guī)則包含在所述規(guī)則組件中;以及(c)將所述中間狀態(tài)表達(dá)轉(zhuǎn)換為目標(biāo)規(guī)則,目標(biāo)應(yīng)用被配置為執(zhí)行所述目標(biāo)規(guī)則。16.如權(quán)利要求15的裝置,所述處理器進(jìn)一步執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令,以完成(d)從所述舊有應(yīng)用獲得數(shù)據(jù)組件;(e)根據(jù)舊有數(shù)據(jù)元素生成中間數(shù)據(jù)元素,所述舊有數(shù)據(jù)元素包含在所述數(shù)據(jù)組件中;以及(f)將所述中間數(shù)據(jù)元素轉(zhuǎn)換為目標(biāo)數(shù)據(jù)元素,所述目標(biāo)應(yīng)用被配置為在執(zhí)行所述目標(biāo)規(guī)則時(shí)使用所述目標(biāo)數(shù)據(jù)元素。17.如權(quán)利要求15的裝置,所述處理器進(jìn)一步執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令,以完成(d)從所述規(guī)則組件提取詞匯表項(xiàng),所述詞匯表項(xiàng)與所述舊有規(guī)則相關(guān)聯(lián);(e)將所述中間狀態(tài)表達(dá)與所述詞匯表項(xiàng)進(jìn)行聚集;以及(f)將所述目標(biāo)規(guī)則部署到所述目標(biāo)應(yīng)用。18.—種有形計(jì)算機(jī)可讀介質(zhì),具有計(jì)算機(jī)可執(zhí)行指令,用以執(zhí)行(a)從舊有應(yīng)用獲得規(guī)則組件,所述舊有應(yīng)用包含以第一軟件語(yǔ)言指定的舊有源代碼;(b)根據(jù)舊有規(guī)則生成中間狀態(tài)表達(dá),所述舊有規(guī)則包含在所述,見(jiàn)則組件中;以及(c)將所述中間狀態(tài)表達(dá)轉(zhuǎn)換為目標(biāo)規(guī)則,目標(biāo)應(yīng)用被配置為執(zhí)行所述目標(biāo)規(guī)則。19.如權(quán)利要求18的有形計(jì)算機(jī)可讀介質(zhì),進(jìn)一步配置用于執(zhí)行(d)從所述舊有應(yīng)用獲得數(shù)據(jù)組件;以及(e)根據(jù)舊有數(shù)據(jù)元素生成中間數(shù)據(jù)元素,所述舊有數(shù)據(jù)元素包含在所述數(shù)據(jù)組件中;以及(f)將所述中間數(shù)據(jù)元素轉(zhuǎn)換為目標(biāo)數(shù)據(jù)元素,所述目標(biāo)應(yīng)用被配置為使用所述目標(biāo)數(shù)據(jù)元素。20.如權(quán)利要求18的有形計(jì)算機(jī)可讀介質(zhì),進(jìn)一步配置用于(d)從所述規(guī)則組件提取詞匯表項(xiàng),所述詞匯表項(xiàng)與所述舊有規(guī)則相關(guān)聯(lián);(e)將所述中間狀態(tài)表達(dá)與所述詞匯表項(xiàng)進(jìn)行聚集;以及(f)將所述目標(biāo)規(guī)則部署到所述目標(biāo)應(yīng)用。21.—種轉(zhuǎn)換器,包括規(guī)則提取器,其從舊有應(yīng)用的規(guī)則組件獲得舊有規(guī)則,并將所述舊有規(guī)則轉(zhuǎn)換為中間狀態(tài)表達(dá);規(guī)則部署器,其將所述中間狀態(tài)表達(dá)轉(zhuǎn)換為目標(biāo)規(guī)則,并且將所述目標(biāo)規(guī)則部署在目標(biāo)應(yīng)用;數(shù)據(jù)提取器,其從所述舊有應(yīng)用的數(shù)據(jù)組件獲得舊有數(shù)據(jù)元素,并將所述舊有數(shù)據(jù)元素轉(zhuǎn)換為中間數(shù)據(jù)元素;以及數(shù)據(jù)部署器,其將所述中間數(shù)據(jù)元素轉(zhuǎn)換為目標(biāo)數(shù)據(jù)元素,并且將所述目標(biāo)數(shù)據(jù)元素部署在目標(biāo)應(yīng)用。22.如權(quán)利要求21的轉(zhuǎn)換器,進(jìn)一步包括詞匯表提取器,其從所述規(guī)則組件提取詞匯表項(xiàng),所述詞匯表項(xiàng)與所述舊有^見(jiàn)則相關(guān)聯(lián);聚集器,其將所述中間狀態(tài)表達(dá)與所述詞匯表項(xiàng)進(jìn)行聚集,以形成所述目標(biāo)^L則。23.如權(quán)利要求21的轉(zhuǎn)換器,所述中間狀態(tài)表達(dá)包含在XML文件中。全文摘要本發(fā)明實(shí)施方式的各方面提供一種裝置、計(jì)算機(jī)介質(zhì)和方法,用于從舊有應(yīng)用獲得規(guī)則組件,隨后根據(jù)包含在規(guī)則模塊中的舊有規(guī)則生成中間狀態(tài)表達(dá)。將中間狀態(tài)表達(dá)轉(zhuǎn)換為目標(biāo)規(guī)則,其被目標(biāo)應(yīng)用所執(zhí)行。而且,從舊有應(yīng)用獲得數(shù)據(jù)組件,并且根據(jù)舊有數(shù)據(jù)元素生成中間數(shù)據(jù)元素。將中間數(shù)據(jù)元素轉(zhuǎn)換為目標(biāo)應(yīng)用在執(zhí)行目標(biāo)規(guī)則時(shí)可以訪問(wèn)的目標(biāo)數(shù)據(jù)元素。從規(guī)則組件提取詞匯表項(xiàng)。將詞匯表項(xiàng)與中間狀態(tài)表達(dá)進(jìn)行聚集以形成目標(biāo)規(guī)則。隨后將目標(biāo)規(guī)則部署到目標(biāo)應(yīng)用。文檔編號(hào)G06Q10/00GK101689259SQ200880023789公開(kāi)日2010年3月31日申請(qǐng)日期2008年6月9日優(yōu)先權(quán)日2007年6月8日發(fā)明者J·多伊勒申請(qǐng)人:埃森哲環(huán)球服務(wù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1