CN101689259A - 旧有应用的移植 - Google Patents

旧有应用的移植 Download PDF

Info

Publication number
CN101689259A
CN101689259A CN200880023789A CN200880023789A CN101689259A CN 101689259 A CN101689259 A CN 101689259A CN 200880023789 A CN200880023789 A CN 200880023789A CN 200880023789 A CN200880023789 A CN 200880023789A CN 101689259 A CN101689259 A CN 101689259A
Authority
CN
China
Prior art keywords
rule
old
application
ortiz
michael
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200880023789A
Other languages
English (en)
Other versions
CN101689259B (zh
Inventor
J·多伊勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Accenture Global Services Ltd
Accenture International LLC
Original Assignee
Accenture Global Services GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=40096826&utm_source=***_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101689259(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Accenture Global Services GmbH filed Critical Accenture Global Services GmbH
Publication of CN101689259A publication Critical patent/CN101689259A/zh
Application granted granted Critical
Publication of CN101689259B publication Critical patent/CN101689259B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施方式的各方面提供一种装置、计算机介质和方法,用于从旧有应用获得规则组件,随后根据包含在规则模块中的旧有规则生成中间状态表达。将中间状态表达转换为目标规则,其被目标应用所执行。而且,从旧有应用获得数据组件,并且根据旧有数据元素生成中间数据元素。将中间数据元素转换为目标应用在执行目标规则时可以访问的目标数据元素。从规则组件提取词汇表项。将词汇表项与中间状态表达进行聚集以形成目标规则。随后将目标规则部署到目标应用。

Description

旧有应用的移植
本申请要求2007年6月8日提交的美国专利申请No.60/942,789和2008年3月19日提交的美国专利申请No.12/051,401的优先权,在此通过引用并入上述两个申请的全部内容。
技术领域
本发明总体上涉及将业务规则和数据从旧有应用移植到指定的应用。
背景技术
商业和政府机构经常投资于应用,并且其多年的成功运营依赖于应用。应用(通常称为旧有(legacy)应用)必须进行维护;然而,在某些时间点,维护旧有应用变得困难。由此,商业或者政府机构可能希望将旧有应用移植到可以包含新硬件和软件的目标应用。通常,重点在于促进该移植,以降低对运营的破坏。
作为上述情况的示例,多个政府机构使用AccentureTM税务管理***(Tax Administrative System,TAS),以从税务管辖权内的个体和商家征收税收。尽管税务管理***(对应于旧有应用)按照原始设计需求执行,但是政府机构可能发现该***的维护正变得日益困难,因为旧有应用是通过称为COBOL的较为初级软件语言编写的。而且,新的(目标)应用(例如,
Figure G2008800237895D00011
Public Sector Collection andDisbursement(PSCD)软件和/或Microsoft BizTalkTM业务规则引擎)可以提供相对于旧有应用的增强。毫无疑问,对税收的任何破坏对于政府职能的运行而言代价都可能是非常高的。
上述现有技术的示例说明管理广大市场(strong market)需要促进从旧有应用到目标应用的移植。
发明内容
本发明的各方面提供用于从旧有应用获得第一组件并随后根据该第一组件的旧有元素生成中间状态元素的装置、计算机介质和方法。该中间状态元素被转换为目标应用所使用的目标元素。
根据本发明的一个方面,从旧有应用获得规则组件,其包含以第一软件语言指定的旧有源代码。根据包含在规则组件中的旧有规则来生成中间状态表达。将中间状态表达转换为目标规则,其被配置为由执行目标规则的目标应用所执行。目标应用可以包含以第二软件语言指定的目标源代码。而且,从旧有应用获得数据组件,并且根据旧有数据元素生成中间数据元素。将中间数据元素转换为目标应用在执行目标规则时可以访问的目标数据元素。
根据本发明的另一方面,从规则组件中提取词汇表表项。利用中间状态表达对词汇表表项进行聚集,以形成目标规则。随后将目标规则部署到目标应用。
根据另一方面,从旧有应用获得其他组件,例如,对应关系、接口或者报表组件,并且生成相应的中间元素。将中间元素转换为目标应用。
根据本发明的一个方面,旧有***涉及使用COBOL源软件的税务管理***。
附图说明
在附图中以示例而非限制的方式示出了本发明,其中相似的标号指示类似的元素,其中:
图1示出了按照本发明一个实施方式的在其中将旧有应用移植到指定应用的架构。
图2示出了按照本发明一个实施方式的税务管理***(TAS)转换器的架构。
图3示出了按照本发明一个实施方式的从TAS到AERS(Accenture Enterprise Revenue Solution,即Accenture企业收益解决方案)规则引擎转换的高层流程。
图4示出了按照本发明一个实施方式的用于转换规则组件的架构。
图5示出了按照本发明一个实施方式的用于执行形成规则转换的高层流程。
图6示出了按照本发明一个实施方式的用于执行后端规则转换的高层流程。
图7示出了按照本发明一个实施方式的数据移植过程。
图8示出了按照本发明一个实施方式的税务管理***(TAS)转换器过程。
图9示出了按照本发明一个实施方式的用于从税务管理***(TAS)转换收入账目表的高层流程。
图10示出了按照本发明一个实施方式的用于从税务管理***(TAS)转换数据组件的高层流程。
图11示出了按照本发明一个实施方式的用于从税务管理***(TAS)转换对应关系组件的高层流程。
图12示出了按照本发明一个实施方式的用于从税务管理***(TAS)转换接口组件的高层流程。
图13示出了按照本发明一个实施方式的用于从税务管理***(TAS)转换报表组件的高层流程。
图14示出了按照本发明实施方式的TAS人口统计表结构。
具体实施方式
架构概述
图1示出了按照本发明一个实施方式的在其中将旧有应用(对应于COBOL程序101和数据源103)移植到指定应用(对应于SQL服务器113和
Figure G2008800237895D00031
服务器115)的架构100。(SAP AG是最大的欧洲软件公司,其总部位于德国的沃尔多夫市。SQL(结构化查询语言)是一种计算机语言,用来创建、检索、更新和删除来自关系数据库管理***的数据。SQL已由ANSI和ISO二者标准化。)Accenture TAS to AERS Migration Tool(Accenture TAS到AERS移植工具)旨在为Accenture TAS(税务管理***)***实现已经就位的那些客户端降低部署AERS(Accenture Enterprise RevenueSolution)的负担,由此提供竞争优势。Accenture TAS to AERSMigration Tool开发的第一阶段主要关注于业务规则提取和转换,以及旧有数据移植。期望客户端提供包含与待处理的所有表单定义有关的COBOL程序101的所有文件。(COBOL是一种第三代编程语言,并且是目前仍在使用的最老的编程语言之一。其名称是COmmonBusiness-Oriented Language的缩写,将其主要领域定义为公司和政府的业务、财政以及管理***。COBOL最初由Short Range Committee在1959年创建,其中Short Range Committee是在1959年5月28日和29日在五角大楼举行的会议上提出的三个委员会之一。)需要3个文件:
■编辑模块程序
■行项目信息模块
■提交日期模块
期望客户端提供包含将要移植到AERS目标数据库115的数据的所有数据源103。
转换任务
基于业务需求,可以将业务规则移植过程分解为以下任务:
1.从源代码提取词汇表项
2.创建和部署模态(schema)
3.对提取的词汇表进行分类
4.将词汇表部署到业务规则引擎数据库
5.从源代码提取业务逻辑
6.对规则与词汇表进行相关
7.导出业务规则引擎数据库中的已提取策略
8.测试策略
9.发布和部署策略
10.记录处理状态
下文讨论提供了对上述任务的附加描述,从而示出设计考虑和权衡。
步骤1:从源代码提取词汇表项
目前,表单定义仅仅包含在COBOL源代码101中。COBOL程序101通常组织在三个文件的集合中,这三个文件结合起来定义旧有FDF实现中的单个税务表/财年定义。文件名称是XnnnYYrr,其中:
●X=程序时间(E是行编辑;L是行项目定义;F是提交日期)
●nnn=表单类型代码(特定于客户端安装,当讨论POC和DC代码时,将给出完整的列表)
●YY=财年,其中05=2005
●rr=修订号,其中00指示初始定义,01、02...等以此类推例如,用于定义2005年的销售和使用税月退税(表单类型=350)的3个所需文件是:
●E3000500.txt
●L3000500.txt
●F3000500.txt
按照本发明的实施方式,期望词汇表提取过程与用户之间的可选同步交互。这表示,客户端将进行等待,直到词汇表提取器105返回有关提取过程的状态,并且可选地为用户呈现所有已提取词汇表的详尽列表。这包括从所提供的源代码中提取行项目定义、提交日期定义以及行编辑。
步骤2:创建和部署模态
在从源代码提取词汇表并且建立其结构之后,必须根据所创建的XML推导出模态,对其强命名(strongly named),继而将其部署到GAC(全局组装缓存)。
步骤3:创建词汇表文件
一旦从源代码中提取了词汇表,必须按照类型对词汇表进行分类。其可以是常量、XML元素、.NET组件或者数据库字段。继而必须使用词汇表来填入规则引擎所能理解的词汇表模态。
步骤4:将词汇表部署到业务规则引擎数据库
将步骤3中创建的词汇表XML导入到规则引擎数据库,并且发布词汇表,使其可被需要使用它们的业务规则所访问。
步骤5:从源代码提取规则逻辑
规则包含在行编辑COBOL代码中。规则提取器107提取规则,并且将其重新组织在结构中,该结构使逻辑更易操纵和映像到规则引擎所期待的结构。在提取基础规则之后,从代码提取规则编辑,并将其应用于所提取的规则。
步骤6:将规则和词汇表进行相关
在此过程中,提取的业务规则所使用词汇表必须与已经提取的词汇表进行相关。该过程由聚集器组件109来处理。某些需要的字段可能是缺失的,并且可以从客户端要求更多信息。由此,规则提取器107可能需要通知客户端缺少词汇表。
步骤7:将已提取的策略导出到业务规则引擎数据库
一旦从源代码中提取了规则,必须通过策略对其进行分组。意在使每个表单和每年具有一个策略。策略的命名规范是“TAS_nnnYYrr”。
步骤8:测试策略
每个策略版本必须在开发期间或者是在其被发布、部署和运行之后进行测试。在保存策略之后、但是尚未部署之前执行测试。在部署策略之后,可能难以修改规则集。
步骤9:发布和部署策略
在测试策略之后,通常部署策略。仅在部署之后,策略及其规则集才能够被外部应用访问。
步骤10:记录处理状态
将TAS转换器(例如,转换器200)执行的所有步骤捕获和包括到日志中,该日志被发送回给用户。如果存在多个确认,则必须将其连接(concatenate)在一起。可以使用聚集器组件109来收集和存储与用于规则转换和数据转换的转换过程中的每个步骤有关的相关信息以及各个响应。聚集器109随后创建根据所捕获的各个消息和信息片段得出的单个日志。
数据移植
按照本发明的实施方式,DB2到SAP数据移植(对应于数据源103到SAP服务器113)是通过SQL服务器整合服务(SSIS)来执行的。变换和ETL(提取、变换和加载)由SSIS来处理。对SAP服务器的批量***将使用iDocs以及在将数据批量***到“公共部分收入和支出”(PSCD)中之前执行确认而通过SAP程序执行的。(SAP“公共部门收入和支出”提供退税申报、支付处理、征收、客户辅助以及财务管理。SAP PSCD可以在不同的环境中使用,包括学生账户)。
其他考虑
按照本发明的实施方式,包括错误处理。附加的架构组件充当响应信息的收集者。由此,错误处理的一种形式是重试该动作。如果无法执行转换或者转变,则需要适当地通知用户。TAS转换器应当提供对导出参数进行改变的能力,并且用户应当简单地能够重试该请求。
实现策略
可以在所有组件之间使用同步交互,以便使交互模型尽可能简单。简单是由于以下事实:可以较为容易地进行测试和调试,因为用户在单个执行线程中执行。
总结
规则移植工具支持以下方面,将会进一步对其进行详细讨论。
●提供用于退出TAS客户端的升级路径
●降低ITS升级的成本
●降低ITS升级的风险
●降低内核升级的时间
●快速转换已有的表单规则和后端业务规则
●中央规则存储库
●通过表单类型对规则进行分组-易于检索
●易于管理
●表单规则转换提取已有的表单规则,并且不需要经常伴随ITS升级的绿色字段表单定义努力
●计划在于还要提取与惩罚和利息及退款有关的TAS后端业务规则
●目标在于提取这些规则并且将其合并成公共规则集、转译和标准化这些规则以便导入
●一旦对规则进行了标准化,可以将这些规则导入到BizTalkTM中以便满足规则执行
●TAS内的后端规则嵌入在应用层和数据库层。该努力将合并这些层、将规则转变为公共业务规则语言并导入到BizTalk
●根据从COBOL代码提取的有意义的元素来创建数据结构
●提取和转换通过FDF创建并继而作为COBOL转义生成的规则
●以下领域将被TAS转换器覆盖:
数据转换
Figure G2008800237895D00092
表单规则转换
Figure G2008800237895D00093
接口转换
Figure G2008800237895D00094
对应关系转换
Figure G2008800237895D00095
后端规则转换
Figure G2008800237895D00096
账户的收入账目表的移植
Figure G2008800237895D00097
已有TAS报表的转换
按照本发明的实施方式,可以在Accenture税务管理***的上下文之外使用TAS转换器的组件。例如,规则转换器包含允许从任何适当格式化的COBOL应用中提取规则的通用能力。只要规则存储在旧有应用的已定义区域中,则用于规则转换的TAS转换器将能够为非TAS应用提取和转换规则。类似的情况对于TAS数据转换器同样适用。随着TAS数据转换器将数据库组件从TAS中提取到去正则化的数据中并继而将该信息加载到目标应用中,可以对任何旧有数据集简单地应用去正则化的数据提取。一旦数据处于预定的格式,TAS转换器便可以使用预定的例程和过程将信息加载到目标应用中。
图2示出了按照本发明一个实施方式的税务管理***(TAS)转换器200的架构。旧有应用201(例如,税务管理***)包括多个组件,包括:表单规则组件、后端规则组件、人口统计组件、财务组件、账目表组件、对应关系组件、接口组件,以及报表组件。移植应用215通过中间(staging)数据库203来将旧有组件转换和移植到目标应用217。
规则组件可以包括表单规则组件和后端规则组件二者。表单规则与用于表单的对应行的规则相关联,而后端规则与用于进一步处理表单行中的信息的规则相关联。例如,后端规则可以涉及按照机构内的税务表单和策略应用所提供信息的惩罚、利息和退款计算。数据组件可以包括人口统计组件、财务组件和账目表组件。人口统计组件与个人、商家或者有关实体(例如,纳税者)的人口统计信息相关联。财务组件与之前提交的之前年份的表单或者纳税义务的开放时间相关联,而账目表组件指示用来将财务事务与所征收的收入对不同政府机构的分发合并的账户。
规则提取器205从旧有应用201提取规则组件,并且生成中间表达(例如,XML文件207)。规则部署器209将中间表达转换为目标规则,并且将目标规则部署在包含在目标应用217中的业务规则引擎(BRE)219上。业务规则引擎219随后可以在目标应用217运行时执行目标规则。
按照本发明的实施方式,业务规则引擎219使用BizTalkTM服务器,其是用于企业应用整合(EAI)和业务过程管理(BPM)的微软中央平台,并且实现了XML和Web服务技术的整合与自动化能力。BizTalk服务器充当过程执行引擎,并且充当消息收发和文档转换的多传输集线器。BizTalk服务器是帮助客户有效和高效地整合***、雇员和商业伙伴的WindowsTM服务器***产品。
数据组件从旧有应用201被提取到SQL数据库211中,并且被转换为中间数据元素。中间数据元素继而从平面(flat)文件213被转换和移植到执行ABAP的SAP服务器221(其包含在目标应用217中)。ABAP(高级业务应用编程)是由SAP创建的高级编程语言。与最近引入的Java一道,其目前定位为用于对SAP的Web应用服务器进行编程的语言。
尽管未在图2中明确示出,但是转换器200还可以将对应关系、接口和报表组件转换和移植到目标应用217。本发明覆盖两种类型的对应关系转换。第一种是对应关系模板的转换,所述模板通常存在于旧有***中。这些模板将经历与数据和规则类似的提取和加载过程。基本上,对应关系模板被提取,并被放置在目标应用的模板生成区域中。同样,简单的映射动作将预先存在的定义数据元素从旧有应用转换为目标***中的XML参考。第二,对应关系包括旧有***内的历史文档的转换。从旧有***周期性地向纳税者发送通知或者对应关系。不同于保存整个文档,TAS保存对应关系模板和进入该对应关系的数据元素。历史对应关系可以转换和保存在目标应用中,以备将来参考和访问。
报表和接口转换按照类似的概念执行。假设基础旧有应用(TAS)中的数据结构在整个实现中是一致的,则可以将来自旧有***的数据元素匹配至目标***,并且在目标***的上下文中重新生成接口和报表。这可以作为手动匹配过程来完成,或者通过标准服务和过程而自动完成。报表组件与旧有应用201所生成的报表相关联。
目标应用217可以通过数据入口223获得其他数据(例如,当前年份的税务表单)。可与移植自旧有应用201的规则组件和数据组件合作来处理这些其他数据。
尽管图2中所示的架构示出了从旧有Accenture税务管理***到SAP服务器的移植,但是本发明的实施方式也支持到其他目标***的移植。
转换规则的高层流程-第一实施方式
图3示出了按照本发明一个实施方式的从TAS到AERS规则引擎转换的高层流程300。流程图300示出了旧有规则引擎架构的总体高层流程,以便:
●将COBOL驱动器程序转换为BizTalkTM(组件319-325)。这是一次性过程,在此期间,构成旧有规则存储(组件325)中业务规则的所有数据部分由TAS转换器(组件321)标识和提取,并且被转换为业务规则语言XML以便使其成为BizTalk规则引擎可理解的,继而其被规则部署工具(组件317)移植到规则存储(组件315)。
●提供业务规则以执行确认(组件309-313)。这是在上述一次性过程中已经提取的业务规则。这些规则以有序的方式组织,按照其相关的特定税务表单进行分组。在提取/转换过程期间,已经自动构建了AERS词汇表。其目的是按照友好的类似英文的语法给出构成规则的数据元素,而不论其源自数据库查询、XML元素或类。
●过程税务表单确认。使用规则引擎API(称为规则辅助,其对应于组件303)将税务表单输入301提交至应用。规则辅助303是驱动器组件,其具有根据税务表单输入和BizTalk规则引擎API(组件307)提供的模式匹配逻辑应调用哪个策略(组件305)的有关知识。策略是规则的汇集。下面是该转换所需的不同类型的策略。
Figure G2008800237895D00121
简单编辑
Figure G2008800237895D00122
交叉确认
Figure G2008800237895D00123
行编辑
Figure G2008800237895D00124
退出例程
Figure G2008800237895D00125
事务应用
存在两种方式来构建策略:
单个策略用于上述类型中的每一个。
Figure G2008800237895D00127
基于tableref或者tableid的多个策略。
下面的组件式转换该应用所需的。
公共词汇表
词汇表是以类似英文的语法来封装业务需求的谓词的列表,虽然BRE支持三种不同的绑定(.NET、SQL和Xml),但是.Net绑定最适合TAS情景。(通常,使用基于.Net类的词汇表,其中词汇表作为抽象类。)实现通常允许不同的LOB复用规则和策略。该组件通常称为TAS词汇表。
针对事实的XML模态
这允许将各种独立的数据元素合并成一个或多个XML文档。将使用XSD.exe将.XSD模态转换为.Net类。该.Net类用作用于规则引擎的事实(并不直接是xml)。该模态称为TASTaxFormDocument。
列出所有策略和策略执行的顺序
标识当前数据流以及策略执行的顺序。这被封装在业务组件中。该组件是用于与规则进行通信的主数据对象。该组件称为TASRuleAssistant。
旧有规则的自动移植
这些组件称为TASRulesConverter。通常无法自动地上传较小数目的规则的手动再声明。
用于移植旧有规则的算法:
本发明的实施方式支持以下方面:
1.标识已有的旧有规则中的模式,这些模式可以是经常重复的规则和构造(construct)。
示例:
1.1EffectiveData是否在‘01-01-1900’和‘01-01-2003’之间。
1.2ColumnValue是否在列表“1|2|3|4”中。
2.创建支持以上模式的词汇表。
public abstract class TASVocabularySimpleEdits
{
   public abstract bool inList(TASConverter.DriverFactRuleTypes context,
                string list);
   public abstract bool between(TASConverter.DriverFactRuleTypes context,
                string min Value,string max Value);
   public abstract bool IsValidMask(TASConverter.DriverFactRuleTypes context,
                string mask);
public abstract bool addErrorID(string errorID);
}
3.使用上述抽象类来构建BRE词汇表。示例词汇表随同本文档一起提供。
4.利用每个抽象方法的至少一个规则来创建模板策略。
5.使用各种“and”(与)、“or”(或)构造来创建示例模板。如果需要嵌套的“and”或者“or”,则使用那些构成来创建规则。
6.使用“规则引擎部署向导”将模板策略导出到.XML。理解所导出的XML策略的结构。
7.将所导出的策略XML分解为各个较小的文件,每个文件包含唯一的模式。
示例:
为了添加成为addErrorID的动作:
<function>
     <vocabularylink uri=″534f50ac-8e6c-4bfe-877f-4e75a0ecf4e2″
     element=“503f5d7e-c85c-4017-969c-938c291b1fca″/>
     <classmember classref=″TASVocabulary″
       member=″addErrorID″sideeffects=″true″>
         <argument>
            <constant>
                <string>{0}</string>
              </constant>
           </argument>
       </classmember>
</function>
为了创建版本号和主报头:
<brl xmlns=″http://schemas.microsoft.com/businessruleslanguage/2002″>
      <ruleset name=″TAS_3000500″>
             <version major=″{0}″minor=″{1}″description=″′
modifiedby=″RESBT2404\Administrator″date=″2007-02-13T16:20:35.7514080-05:00″/>
      </ruleset>
      <configuration/>
 </brl>
为了找到列是否在给定的列表中:
<predicate>
 <vocabularylink uri=″534f50ac-8e6c-4bfe-877f-4e75a0ecf4e2″
   element=″2cC6fb474-f735-45b5-b9dd-8d60c0f90Aa10″/>
<classmember classref=″TASVocabulary″
member=″inList″sideeffects=″true″><argument>
         <argument>
           <reference>
            <vocabularylink uri=″f5029754-44db-440c-8820-8d55eedfd7bl″
                 element=″7b218bc0-4ac9-4ee4-b3b9-7606aef40626″/>
               <classref ref=″TASConverter.DriverFactRuleTypes″/>
             </reference>
           </argument>
           <argument>
            <constant>
               <string>{0}</string>
           </constant>
        </argument>
    </classmember>
 </predicate>
应当注意,“{”和“}”用作使用C#语言的文本替换的占位符。来自旧有规则的实际值将替换大括号。
8.在创建模式之后,程序性的事情是遍历已有的旧有规则库,并替换模板中的旧有值,继而将模板构成为各种规则和策略,这在下文代码中示出。
class MigrateRulesToBre
{
      ///<summary>
      ///应用的主入口点
      ///</summary>
[STAThread]
static void Main(string[] args)
{
  string myConnString=ConfigurationSettings.AppSettings[″TASMetaData″];
//读取旧有数据
string mySelectQuery=″SELECT*FROM TCSTV010 WHERE MINVAL!=″″+″″OR MAXVAL!=″ORVALLIST!=″″;
SqlConnection myConnection=new SqlConnection(myConnString);
SqlCommand myCommand=new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader=myCommand.ExecuteReader();
//将″1″,″2″替换为策略的主版本和辅版本
Console.WriteLine(getMain(″1″,″2″));
//得到绑定信息
Console.WriteLine(getBindings());
while(myReader.Read())
{
//读取第一旧有规则
   string ruleName=myReader[″RULENAME″].ToString().Trim();
   string elementName=myReader[″ELEMENT″].ToString().Trim();
   string messageNum=myReader[″MSGNUM″].ToString().Trim();
   string dataType=myReader[″DATATYPE″].ToString().Trim();
   string minVal=myReader[″MINVAL″].ToString().Trim();
   string maxVal=myReader[″MAXVAL″].ToString().Trim();
   string valList=myReader[″VALLIST″].ToString().Trim();
   string acf2res=myReader[″ACF2RES″].ToString().Trim();
   string ruleVERS=myReader[″RULEVERS″].ToString().Trim();
   StringBuilder ruleText=new StringBuilder();
   string ruleTag=String.Format(″<rule name=\″{0}\″
           priority=″0\″active=\″true\″>″,
   ruleName);
ruleText.Append(ruleTag);
/*这里是所生成的BRE规则的示例
if COLNAME=NRC_CAT_CD
     and not SIMPLEEDITFACTS is INLIST 1|2|3|4
then
ERRORNUM=TASMA945.
其中COLNAME是元素,而SIMPLEEDITFACTS具有类似于列类型的上下文信息,其中包含列值*/
ruleText.Append(″<if><and>″);
//添加COLNAME检查。这对于所有规则而言是公共的。
ruleText.Append(getEqual(″COLNAME″,elementName));
//如果MINVAL or MAXVAL存在,则使用″between″来创建规则
ruleText.Append(″<not>″);
if(min Val!=″″||maxVal !=″″)
{
       ruleText.Append(getBetween(minVal,maxVal));
}
else
//如果″valList″存在,则使用″inlist″来创建规则
if(valList!=″″)
{
 ruleText.Append(getInList(valList));
 ruleText.Append(″</not>″);
 ruleText.Append(″</and></if>″);
 ruleText.Append(″<then>″);
//基于MSGNUM来添加规则动作
  ruleText.Append(AddErrorID(messageNum));
  ruleText.Append(″</then>″);
  ruleText.Append(″</rule>″);
  Console.WriteLine(ruleText.ToString());
}
Console.WriteLine(″</ruleset></brl>″);
     //在完成读取时总是调用Close
     myReader.Close();
     //当连接完成时关闭连接
      myConnection.Close();
}
      static string AddErrorID(string errorlD)
     {
         using(StreamReader sr=new StreamReader(″TemplateAddErrorID.xml″))
         {
           string templateText=sr.ReadToEnd();
           return String.Format(templateText,errorID);
         }
     }
     static string getBindings()
     {
         using(StreamReader sr=new StrearnReader(″TemplateBindings.xml″))
         {
          string templateText=sr.ReadToEnd();
          return templateText;
      }
}
      static string getBetween(string first,string second)
      {
            first=first.Trim();
            second=second.Trim();
            using(StreamReader sr=new StreamReader(″TemplateBetween.xml″))
            {
                    string templateText=sr.ReadToEnd();
                    return String.Format(templateText,first,second);
           }
        }
   static string getInList(string list)
   {
          list=list.Trim();
          using(StreamReader sr=new StreamReader(″TemplateInList.xml″))
          {
              string templateText=sr.ReadToEnd();
              return String.Format(templateText,list);
          }
   }
   static string getMain(string majorVersion,string minorVersion)
   {
          using(StreamReader sr=new StreamReader(″TemplateMain.xml″))
          {
            string templateText=sr.ReadToEnd();
            return String.Format(templateText,majorVersion,minorVersion);
         }
   }
   static string getEqual(string lhs,string rhs)
   {
           lhs=lhs.Trim();
           rhs=rhs.Trim();
           using(StreamReader sr=new StreamReader(″TemplateEqual.xml″))
           {
             string templateText=sr.ReadToEnd();
             return String.Format(templateText,lhs,rhs);
           }
       }
  }
用于转换规则的高层流程-第二实施方式
创立策略和词汇表
存在多种方式来创立策略和词汇表。最常用的方式是使用业务规则组成器工具,该方式由作为基于规则的处理的主要目标的业务分析师来排他地使用。下面讨论程序员的创立。这些技术支持编写动态创建规则的应用,并且同样支持创建用于应用部署的工具。可以通过两种方式在组成器之外创立规则集。这些方法主要是针对工具开发和***管理的。第一是使用XML文档。这是BizTalk用来导出和导入策略和词汇表的方法。另一种是通过.NET API和编程。
BRL-语法XML文档
具有数据库管理经验的程序员可能已经执行了关系数据库到文本文件的批量数据转储。这些通常是平面文件,其格式例如是提供更多结构的CSV.XML,这就是BizTalk如何使数据进、出SQL服务器存储的方式。其还用来将策略和词汇表保存在SQL服务器之外的文件中。尽管不常见,但是可以完全利用文件来运行基于规则的应用。微软为该任务而建议的XML语法称为业务规则语言或BRL。请注意,BRL的命名空间声明为http://schemas.microsoft.com/businessruleslanguage/2002。这是专属于微软的命名空间。尽管将策略和词汇表导出到了与业务规则组成器分离的文档中,但是两个文档具有相同的文档元素,brl。列表A示出了策略文件(在此称为规则集)的开始。如下,列表A示出了显示版本、配置和绑定信息的部分规则集文档。
<brl xmlns=″http://schemas.microsoft.com/businessruleslanguage/2002″>
      <ruleset name=″RFP″>
                <version major=″1″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=d4e488d64aff1da4
                   </assembly>
                   <class>
     Que.BizTalk.RFP.myFactRetriever.RFPDbFactRetriever
                    </class>
                </factretriever>
              </configuration>
              <bindings>
                  <xmldocument ref=″xml_0″doctype=″RFPEstimateXML.RulesRFP″
                  instances=″16″selectivity“1″instance=″0″>
              <selector>
                 /*[local-name()=′RFP′和命名空间-
                 uri()=′http://RFPEstimateXML.RulesRFP′]
            </selector>
       <schema>C:\RulesRFP.xsd</schema>
     </xmldocument>
     <datarow ref=″db_1″server=″myserver\Consulting″
                    dataset=″Consulting″table=″Rates″instances=″16″
                    selectivity=″1″isdataconnection=″true″instance=″0″/>
       </bindings>
应当注意,版本元素声明了策略的主版本和辅版本,以及谁修改了策略以及何时做出的修改。版本控制在规则开发中是非常重要的。从配置(configuration)元素向下,可以看到,策略被配置为使用数据库事实检索器。指定了封装和类信息。最后要看的区域是绑定(binding)部分。binding元素的第一子元素通过指定.NET类型的合格类名、基于本地名称和命名空间来选择文档的根的XPath表达式以及指定模态的物理文件,来将XML文档绑定至策略作为事实来源。因为最后一项是文件路径,因此应当在导出规则集时将文件转送到新的服务器。
示例性文档继续使用XML结构来指定规则,其中XML结构允许在前缀符号中表达条件和动作。列表B描绘了具有一个复合条件和三个动作的规则。最后两个动作已经针对空间进行了编辑。如下,列表B以友好形式示出了业务规则:
If Hours is greater than 160 AND Scam equals Service
Then
    Approved True
    Comments Discount Approved
    Cost(0.9*(Hours*Hourly Rate))
应当注意,规则元素如何锚定(anchor)规则。这里使用属性来给出规则的名称、优先级和状态。规则下面的所有内容表示了规则的结构。条件包含在if元素中。在前缀符号中,首先是AND元素(其是对两个条件进行结合的逻辑运算符)。接下来是针对第一谓词的大于号运算符。词汇表链接(vocabulary link)元素指示该运算符在内置谓词词汇表中。从这里开始,在此情况下把XML文档中的Hours字段绑定到事实。这形成了谓词的左侧(lhs)。右侧是常量:十进制值160。如下,列表C示出了来自规则集文档的规则定义片段:
<rule name=″DiscountRate″priority=″0″active=″true″>
     <if>
        <and>
          <compare operator=″greater than″>
             <vocabularylinkuri=″3f0e9bcc-6212-4e6a-853c-e517f157a626″
        element=″b276a0f4-12d9-4380-b242-135bbfc5e287″/>
             <lhs>
                <function>
                   <vocabularylink
        uri=″8a4906c8-3797-4ae6-a9b6-864c23c81438″
        element=″728b3a0b-b270-4cfa-aac6-b24e3aaad8dd″/>
                   <xmldocumentmember xmldocumentref=″xml_0″
type=″decimal″sideeffects=″false″>
                    <field>*[local-name()=′Hours′and namespace-
uri()=″]</field>
                    <fieldalias>Hours</fieldalias>
                 </xmldocumentmember>
              </function>
              </lhs>
              <rhs>
                <constant>
                    <decimal>160</decimal>
                </constant>
             </rhs>
           </compare>
           <compare operator=″equal″>
             ...<!--details omitted for space->
           </compare>
       </and>
</if>
     <then>
       <function>
            <vocabularylink uri=″8a4906c8-3797-4ae6-a9b6-864c23c81438″
     element=″89745202-17d8-412f-bfa3-382d67111a91″/>
           <xmldocumentmember xmldocumentref=″xml_0″type=″boolean″
sideeffects=″true″>
                <field>*[local-name()=′Approved′and namespace-uri()=″]</field>
                <fieldalias>Approved</fieldalias>
                <argument>
                  <constant>
                      <boolean>true</boolean>
                  </constant>
              </argument>
            </xmldocumentmember>
           </function>
           <function>
              ...<!--details omitted for space-->
           </function>
           <function>
              ...<!-omitted for space-->
           </function>
       </then>
</rule>
可以按此方式继续,直至到达then元素,其锚定了规则的动作部分。第一动作来自列表B,它为XML文档的Approved字段指派布尔值true(真)。指派函数获得XML文档绑定和一个自变量(值)。列表A和C中的词汇表链接将规则集文档与两个内置词汇表(函数和谓词)以及发明人自己建议的词汇表相关联。列表D示出了发明人的词汇表部分。对于规则集文档,以brl元素开始。此后是具有其版本控制信息的词汇表元素。从这里开始,具有一系列的词汇表定义元素。每一个将友好名称绑定至数据库列或者XML文档字段。如下,列表D示出了词汇表BRL文档。
<brlxmlns=″http://schemas.microsoft.com/businessruleslanguage/2002″>
      <vocabulary id=″8a4906c8-3797-4ae6-a9b6-864c23c81438″name=″RFP″
                           uri=″″description″″>
           <version major=″1″minor=″1″description=″″
                   modifiedby=″myserver\user″
                   date=″2004-02-14T21:57:55.6504144-05:00″/><vocabularydefmition
           id=″693a705f-a6a4-4e37-92b9-06a52a2553c7″
                     name=″SvcName″description=″″>
                     <bindingdefinition>
                         <databasecolumnbindingdefinition column=″rate_name″
                                   type=″string″>
                                 <databaseinfo server=″myserver\Consulting″
                                        database=″Consulting″table=″Rates″
                                        connection=″true″instance=″0″/>
                        </databasecolumnbindingdefinition>
                  </bindingdefinition>
                  <formatstring language=″en-US″string=″SvcName″/>
         </vocabularydefinition>
         <vocabularydefinition id=″0c2f3a3a-e598-4c96-9bb2-0b0797e9ef3e″
                 name=″Cost″description=″″>
                 <bindingdefinition>
                     <documentelementbindingdefinition
                                    field=″*[local-name()=′Estimate′and namespace-
uri()=″]″
                                    fieldalias=″Estimate″type=″decimal″>
                                    <documentinfo schema=″C:\RulesRFP.xsd″
documenttype=″RFPEstimateXML.RulesRFP″
                                                      selector=″/*[local-name()=′RFP′and
            namespace-uri()=′http://RPPEstimateXML.RulesRFP′]″
                                                      selectoralias=*/*[local-name()=′RFP′
and
            namespace-uri()=′http://RFPEstimateXML.RulesRFP′]″
                                                   instance=″0″/>
                                       <argument position=″0″>
                                           <valuedefinitionliteral type=″decimal″>
                            <decimal>0</decimal>
                        </valuedefinitionliteral>
                 </argument>
           </documentelementbindingdefinition>
        </bindingdefinition>
        <formatstring language=″en-US″string=″Cost{0}″
                            delimiter=″{[0-9]+}″>
              <argument position=″0″>
                  <valuedefinitionliteral type=″decimal″>
                      <decimal>0</decimal>
                  </valuedefinitionliteral>
              </argument>
            </formatstring>
          </vocabularydefinition>
          ...
</brl>
第一定义是名称SvcName与Consulting(咨询)数据库中的Rate(税率)表中的列rate_name之间的绑定。首先命名databasecolumnbindingdefinition元素中的列,继而在databaseinfo元素中提供数据库和表信息。所示的第二定义是名称Cost与XML文档中Estimate字段的关联。databasecolumnbindingdefinition元素表示对XML文档中的元素的绑定,而非对XML文档元素的绑定。当在该元素中提供了适当的XPath表达式以选择字段之后,documentinfo元素提供.NET样式类型的文档、物理模态文件以及显式定位此特定文档类的文档元素的XPath。可以看到,在BRL中创立规则集和词汇表是一项精确的任务。通常,人们不会希望手工完成这一任务,而是存在模态。其可以用来方便地修改已有的导出文件。例如,可以使用XPath来定位和修改模态文件路径,以反映目标服务器环境。还可以借助于提供正式文档的方式来使用XSLT将规则集显示为HTML。
用于基于规则的应用开发的.NET API
创立规则的其他方式是使用用于规则开发的.NET API的类进行编程。所需的类可以在Microsoft.RuleEngine包中找到。其实现在BizTalk服务器2004安装文件夹中的Microsoft.RuleEngine.dll组装中。基本方法是创建LogicalExpresion类的实例(表示规则的条件部分),ActionCollection的实例用以保持规则的动作。在适当设置了两个对象时,将其添加到Rule类的实例。继而将规则添加到RuleSet对象。当希望持续规则时,使用FileRuleStore或者SqlRuleStore类之一。为了在开发时运行规则集,需要PolicyTester对象。在产生规则集之后,可以使用较为简单的Policy类。这些类仅仅是规则开发API中的多个类中的几个,但是它们是用于创立的主要类。如果希望创建创立工具并且利用.NET类扩展地工作,需要详细研究产品文档。然而,可以考虑在基于规则的应用开发中使用的主要类。
规则开发API
规则API属于两个包。主包是Microsoft.RuleEngine.dll中实现的Microsoft.RuleEngine。另一个是Microsoft.BizTalk.RuleEngineExtensions,其增加了3个类,以扩展基于规则的***。两个组装都位于BizTalk服务器安装文件夹中。这些包书面上包含多个类,但是只有几个是重要的。应当认为这些类是核心类,例如,policy(策略)。另一个类PolicyTester在开发期间发挥其作用,但是策略表示可用于执行的、完整的、基于生产知识的***。为了执行,应当对其进行配置,但是其应当加载规则集。RuleSet(规则集)类继而加载和使用Rule类的一个或多个实例。如上所述,Rule对象包含LogicalExpression对象和Action对象。然而,与规则同样重要,无法在没有事实的情况下具有基于知识的***。策略的实例使用所开发的、实现IFactRetriever接口的类。这是管理长期事实和事实库的类。当策略加载了规则和事实时,其已经可以由规则引擎来执行。规则引擎可以仅将策略保存在存储器中,其是感兴趣的实验工具,但可能不适用于企业应用。抽象类RuleStore开发用于策略和词汇表的可持续存储的语义。其由两个派生类实现,FileRuleStore和SqlRuleStore。顾名思义,FileRuleStore使用盘文件用于存储,而SqlRuleStore使用SQL服务器关系引擎。
Policy(策略)
BizTalk策略是规则集,并且存在与BizTalk规则引擎对应的类,但是策略类是对多个事物的有用封装。其将程序员与规则存储和规则引擎的具体操作细节隔离开。这样,应当配置策略实例,并且利用其进行工作,就好像它是规则引擎本身一样。其加载RuleSet的实例,因此可以区分策略类与BizTalk策略的一般性概念。策略类具有两个构造函数。一个采用字符串,该字符串的值命名了想要利用的策略。另一个具有相同的参数,并且添加了两个System.Int32参数用于主策略版本号和辅策略版本号。通过策略构造函数加载的任何策略必须部署在规则存储中。另一类PolicyTester的接口非常类似于Policy,但是其具有附加的构造函数,其允许加载已发布的策略和来自其他服务器的策略。相反,策略利用本地存储来工作,并且涉及产生就绪的规则集。Policy具有四个公共属性。MinorRevision和MajorRevision一起定义Policy实例的版本号。PolicyName是策略的名称。RuleSetInfo是重复祖先信息并且添加关于谁保存以及何时保存策略的数据的类。所有这四个属性都是只读的。策略类具有一个主要的公共方法:Execute(执行)。该方法具有四种重载形式。此方法的目的是将事实加载到策略中并且向其应用规则集。第一种形式采用System.Object参数,其是类的某个实例,表示***中的事实。第二种形式采用这种参数的数组。其余的形式重复该模式(单个对象和对象数组),但是添加了第二参数,即实现IRuleSetTrackingInterceptor的对象的实例。该接口用于实现规则引擎的调试***。
RuleSet(规则集)
该类具有构成其构造函数的8个版本。第一个采用字符串参数,其命名规则集。与策略不同,这并不意味着类从存储加载所命名的规则集。其通常初始化类的新实例,并且给与其指定的名称。存在另一构造函数,其获取名称和版本号,并且执行相同的初始化。还存在构造函数的两个版本,其采用相同的参数,并且添加了类型System.Collections.ICollection的对象。这是构成规则集的规则汇集。剩余版本重复上述所有,还添加了类型VocabularyLink的最终参数。该参数确定利用其友好名称和特定事实绑定来提供规则集的词汇表。该类具有6个属性,其中三个对于程序员来说特别重要。其在表1中说明。
Figure G2008800237895D00281
Rule(规则)
如果在应用中动态绑定规则集,则将使用该类。可以这样来构建工具,或者可以使用它来自动生成规则集,其中,具有包括规律变化的值的基本规则的已知集合。在这种情况下,可以采用来自应用或数据库的值并且程序上创建规则,从而重新生成规则集。该类存在6个构造函数。第一个采用命名新规则的System.String。这并不从任何存储加载规则。其通常创建空的规则对象,并且给与其名称。下一个采用名称参数,并且增加了VocabularyLink对象作为第二参数。该构造函数也给出空对象,但是现在可以具有对可以在已构造规则中使用的名称的链接。其余构造函数构基于传递给构造函数的参数来构造完整的规则。该组的第一个构造函数采用用于名称的System.String,用于规则条件的LogicalExpression对象,以及用于动作的ActionCollection对象。下一个形式采用名称参数,表示规则优先级的System.Int32,以及LogicalExpression和ActionCollection对象。最后两个构造函数重复如上所述的两种形式,并且最后增加了VocabularyLink对象。这两个形式的第一个采用名称、条件、动作和链接。最后一个采用名称、优先级、条件、动作和链接。Rule类具有6个属性,其所有都是可读/写的。属性描述了规则对象的部分和状态。Action是包含规则的动作的ActionCollectin。Active是布尔变量,其指示规则是活跃的还是休眠的。Condition是LogicalExpression。除了名称之外,规则仅具有一个条件,但是其可以是复合表达式。Name是字符串,其必须是规则集内唯一的。Priority是Int32,其具有感兴趣的值范围。该值越大,优先级越高。然而,零(0)既是默认值又是中间值。VocabularyLink是最终属性的名称及其类型二者。其在规则与域特定的定义之间建立链接。该类只具有一个方法,即Clone。其产生规则的深拷贝(deep copy)。这是生成大量类似规则的快捷、方便的方法。在调用Clone之后,可以修改不同于原有部分的那些规则部分。
LogicalExpression(逻辑表达式)
可以进行到规则的内部工作和组件。LogicalExpression表示规则条件。其具有单个构造函数,该构造函数不具有参数,并且创建空的条件对象。该类具有两个属性。第一个是Type,其是System.Type类的只读属性。VocabularyLink是分类为具有该名称的类对象的读/写属性。与Rule类似,该类具有单个方法Clone,其进行条件的深拷贝。这是类的所有属性和方法。明显缺少用于构造逻辑表达式本身的任何类型的方法。已经证明存在表示所有谓词的类,诸如NotEqual,以及用于组成复合表达式的三个逻辑运算符及其否定的类:LogicalAnd,LogicalOR以及LogicalNot。结合自己的类或者词汇表链接来使用它们给出了构建规则条件的灵活性。
ActionCollection
如上所述,该类是在规则条件赋值为真时按顺序执行的动作的汇集。该类具有两个构造函数。一个没有参数,并且生成空汇集。另一个采用ICollection的实例,并且基于已有的动作汇集来创建对象。该类具有单个属性Item,其充当C#中的类索引器。其是可读/写属性,其采用整数索引,并且得到或设置Function类的实例。Function来自RuleEngine命名空间。它是抽象类,充当实现动作的任何类的祖先。该抽象允许ActionCollection处理所有类型的动作,而无需专用代码。该类具有8个方法,并且其中的几个具有重载形式。这些方法在表2中列出。
FileRuleStore
类FileRuleStore和SqlRuleStore是从在其头部具有RuleStore类的继承树派生出的。其他类形成了使规则可以作为可执行内容来工作的类的相关集合。需要存储类给出存储词汇表和规则地的场所。多数程序员将不会实现其自己的规则存储类,因此并不十分需要覆盖抽象基类。当处理SQL服务器规则存储时,可以使用Policy和PolicyTester的方法来加载规则集。为了简洁起见,对于面向规则存储的整个主题的含义,可以查看FileRuleStore的细节。FileRuleStore具有四个构造函数,在表3中说明。基本上,所有构造函数都通过定位文件存储来初始化新创建的对象。最后三个构造函数增加了用户安全和加载方便利的参数。
FileRuleStore没有属性,但是其具有表4中列出的6个方法。文件规则存储是规则集和词汇表的简单汇集。这些方法实现了添加、移除和读取汇集中项的共享汇集操作。
Figure G2008800237895D00331
Figure G2008800237895D00341
注意,GeTRuleSets和GetVocabularies并不直接检索规则集和词汇表。相反,他们表示对规则存储的查询,以找到与这些方法的参数中指定的特定标准相匹配的规则集或词汇表。可能需要GetruleSet或者GetVocabulary来检索感兴趣的实际规则集或者词汇表。
IFactRetriever接口
在编写实现该接口的类时,可能需要管理长期的事实库。该接口包括单个方法,所以该实现的复杂度仅由缓存方案的复杂性决定。可能需要良好地估计事实库将可能多么频繁地改变,并且针对从将事实缓存在存储器中而获得的好处来对该信息进行平衡。
UpdateFacts是实现需要的方法。该方法返回System.Object的实例,其被规则引擎用来处理已更新的事实。***将检查返回的实际对象,以确定如何处置它。例如,当其遇到ADO数据库连接时,其理解其应当使用ADO对象和方法从所考虑的数据库检索事实。UpdateFacts采用三个参数。第一个参数是RuleSetInfo对象,其描述使用中的规则集。第二个是对执行规则集的RuleEngine对象的引用。使用这些类的方法来得到需要什么事实的线索。第三个参数是System.Object实例。在第一次调用你的类时,该参数将是空。此后,该参数是UpdateFacts的先前调用的返回值,由此给出甚至比事实库的状态更多的有关信息。
规则转换和移植的配置
可以在规则中调用静态方法
可以在规则中直接调用静态函数。例如,可以在规则内直接调用DateTime.Now函数或者其他类似标准函数,而无需将其作为事实对象来传递。为了添加StaticSupport注册表键:
●点击开始;点击运行;键入RegEdit,继而点击OK。
●展开HKEY_LOCAL_MACHINE,展开Software,展开
Microsoft、展开BusinessRules,并选择3.0。
●在右侧面板中,点击右键,指向New(新建),继而点击DWORD值。
●对于名称,键入StaticSupport
如果StaticSupport注册表键已经存在,并且需要改变其值,执行以下步骤。为了改变StaticSupport注册表键的值:
●点击开始,点击运行,键入RegEdit,点击OK。
●展开HKEY_LOCAL_MACHINE,展开Software,展开Microsoft、展开BusinessRules,继而展开3.0。
●双击StaticSupport注册表键,或者右键点击它,并继而点击修改。
上述键接受如下所示的三个有效值:
0:这是默认键值,并且该值模拟BizTalk服务器2004的行为,其中,总是需要对象的实例作为输入事实,并且仅当赋值或者执行规则时才调用该方法。
1:不需要对象的实例,并且无论何时赋值或者执行规则,都调用静态方法
2:不需要对象的实例,但是在规则转译时(仅当参数是常量时)。该值基本上作为性能优化。然而注意,用作动作的静态成员将不会在转译时执行,而用作参数的静态方法可以执行。因此,需要使用1或者2来启用静态支持以及直接调用静态方法。
利用应用配置文件来重载注册表键
可以通过使用应用配置文件来重载注册表条目。注册表设置对于主控规则引擎实例的所有应用来说是全局的。可以通过使用应用配置文件在应用层重载这些注册表设置。对于BizTalk服务器应用,主控应用时BTSNTSvc.exe,而配置文件是BTSNTSvc.exe.config。可能需要如下所述为希望在应用配置文件中重载的配置参数指定值:
<configuration>
        <configSections>
              <section name=″Microsoft.RuleEngine″
        type=″System.Configuration.SingleTagSectionHandler″/>
        </configSections>
     <Microsoft.RuleEngine
     UpdateServiceHost=″localhost″
    UpdateServicePort=″3132″
    UpdateServiceName=″RemoteUpdateService″
    CacheEntries=″32″
      CacheTimeout=″3600″
      PollingInterval=″60″
    TranslationTimeout=″3600″
    CachePruneInterval=″60″
      DatabaseServer=″(localhost)″
    DatabaseName=″BizTalkRuleEngineDb″
    SqlTimeout=″-1″
      StaticSupport=″1″/>
</configuration>
通过程序部署BRE中的规则
可以使用Microsoft.RuleEngine.RuleEngineExtensions命名空间中的RuleSetDeploymentDriver以及使用
RuleEngineComponentConfiguration类来调用应用内部的规则和策略,从而通过程序来部署规则。下文示例描述了用来通过程序部署规则的代码:
string policyName=″TAS_E3000500″;
int majorRev=Convert.ToIntl6(args[1]);
int minorRev=Convert.ToIntl6(args[2]);
RuleSetlnfo rsinfo=new RuleSetInfo(policyName,majorRev,minorRev);
Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriverdd;
depdriver=new Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriver();
depdriver.Deploy(rsinfo);
如果正在向BizTalk服务器环境被配置使用的数据库部署策略,则无需在代码中创建RuleSetDeploymentDriver对象。相反,可以通过调用System.RuleEngine命名空间中的Configuration类的GetDeploymentDriver方法,来请求规则引擎为其创建RuleSetDeploymentDriver对象。下面的代码示例说明了如何调用GetDeploymentDriver方法:
Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriver dd;
dd=new Microsoft.RuleEngine.Confguration.GetDeploymentDriver();
GetDeploymentDriver方法检索
HKEY_LOCAL_MACHINE\Software\Microsoft\BusinessRules\3.0下的DeploymentDriverAssembly和DeploymentDriverClass的注册表键的值,并且创建DeploymentDriverClass的实例。下面是上述键的两个值:
●DeploymentDriveAssembly-Microsoft.BizTalk.RuleEngineExtensions
●DeploymentDriverClass-Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriver
RuleSetDeploymentDriver类实现了IRuleSetDeploymentDriver接口。可以通过创建实现IRuleSetDeploymentDriver接口的类来开发自己的策略部署驱动器,并且适当地改变如上所述的注册表键值。可以使用上述RuleEngineComponentConfiguration类中的RuleEngineComponentConfiguration方法来传递自定义事实,如下面的代码所示:
RuleSetExecutionConfiguration rec1=new RuleSetExecutionConfiguration();
RuleEngineComponentConfiguration recc 1=new RuleEngineComponentConfiguration
(″FactRetrieverForE3000500″,
″Microsoft.Samples.BizTalk.TASPolicies.FactRetrieverForClaimsProcessing.DbFactRet
riever″);
rec 1.FactRetriever=recc 1;
rsl.ExecutionConfiguration=rec 1;
除上述之外,已经向Policy类添加了称为Clear的方法,其重置为了策略的执行而创建的规则引擎实例的存储器。而且,为了支持可为空的类型,一般性方法和类是对BizTalk服务器2006中的业务规则引擎的其他增强。
修改已发布的词汇表和规则
与所有软件开发相似,在事实词汇表正确无误之前,通常需要它的多个版本。无法夸口说在使其规则按照期望工作之前可以容易地处理词汇表的20-30个版本。备选方案是不直接在规则数据库中发布词汇表。该过程是:
1.发布词汇表
2.测试引用该词汇表的规则
3.打开BizTalkRuleEngineDb中的re_vocabulary表,并且将nStatus字段从1改为0(1=已发布;0=未发布)。可以通过strName字段中保存的名称来标识词汇表。
4.将词汇表信息重新加载到规则组成器,并且添加/修改事实。
5.保存词汇表,并继而将nStatus字段设置回1:不从规则组成器重新发布词汇表,否则将得到主键违规。
6.在规则组成器中重新加载策略/词汇表一次,并且重置策略。
可以使用与策略相同的方法。尽管通常不需要发布规则以便使用规则组成器的测试工具来测试它们,但是如果意欲根据某个安排它们,则可以这么做。在此过程中可以找到与单元测试期间一样多的错误。可以改变re_ruleset表中的nStatus字段来临时不发布策略以便编辑它,而不是创建策略的新版本。
图4示出了按照本发明一个实施方式的、用于转换规则组件的架构400。通过规则提取器405从COBOL代码401中提取规则(类似于图1所示的规则提取器107提供的功能)。来自COBOL代码401的词汇表(由词汇表提取器403提取)和所提取的逻辑合并,以形成新的规则集,其由规则部署器407导入到业务规则引擎409。
用于规则组件转换的高层流程
图5示出了按照本发明一个实施方式的、用于执行表单规则转换的高层流程500。规则转换模块503从Accenture税务管理***(TAS)501转换词汇表和规则,并将其写入通用规则引擎语言(BPEL)。将词汇表和规则导入到BizTalk 505(对应于图2所示的目标应用217的业务规则引擎)。而且,第三方规则引擎507可被导出到BPEL,并且经由所开发的例程来加载。
图6示出了按照本发明一个实施方式的、用于执行后端规则转换的高层流程600。转换例程605从TAS 601和关联的数据库603提取后端规则。规则被标准化为BPEL,并且被导出到BizTalk 607以供后端规则执行。
数据转换
图7示出了按照本发明一个实施方式的数据移植过程700。旨在实现更大的客户端请求的Accenture Enterprise Revenue Solution(AERS)程序包含TAS转换应用703,其转换来自源服务器701的规则和数据,并且通过中间服务器705将经过转换的规则和数据移植到目标服务器709。移植应用为TAS客户提供了到AERS的数据转换/转接的快速方法。TAS意在提供以下内容:
■提供用于已有TAS客户端的升级路径
■降低ITS升级的成本
■降低ITS升级的风险
■缩短内核升级的时间
TAS转换器703包含用于转换的以下方面:数据转换、表单规则转换、接口转换、对应关系转换、后端规则转换、账目的收入账目表移植,以及已有TAS报表的转换。
数据移植过程
在高层,数据转换经过5个步骤,如下所述。
1.TAS转换器应用703从指定的ITS(整合税务***,在此情况下是Accenture税务管理***)后端结构701选择和提取数据。该应用利用通用SQL“SELECT”和“JOIN”语句来拉取有关数据。
2.应用对所提取的数据执行任何预备净化(cleansing)和格式化操作。此后,ITS数据被***并临时存储到SQL服务器存储库705中。
3.TAS转换器应用703使用通用SQL“Select”语句从SQL存储库705提取所有数据,以便在平面文件导出之前进行最终数据净化和格式化。
4.通过TAS转换器应用703,所有提取的数据进行所需的净化和格式化。此后,将数据导出到自动生成的平面文件707中,以便批量***到目标***(SAP或者其他***)709。将平面文件保存在预先指定的文件***位置。
5.使用Emigall作为批量***程序,其将所生成的平面文件中的数据上传到SAP后端***709。
TAS转换器703依赖于四层结构,其提供用于将ITS数据迁移和净化到SAP***709中的通用、独立和灵活的方法。该结构包括以下层:
■源:“源”层容纳客户的ITS,其维护将要移植的数据的原始集合。
■中间:“中间”层提供临时结构,其接收将要净化和临时存储的“源”数据。
■目的地:“目的地”层接收和维护包含已净化“中间”的已生成平面文件。
■SAP:“SAP”层是源数据的最终目的地。
图8示出了按照本发明一个实施方式的TAS转换器过程800。多数移植过程由TAS转换器过程800管理。使用SSIS的过程800执行ITS数据的提取、转换和加载。而且,过程800可以提供图形界面,其绘制移植流程的可视进展。
下面是TAS转换器过程800执行的步骤。
步骤1:清理中间数据库表(步骤801)
■将中间数据库中的所有数据清理出来
步骤2:提取和加载TAS数据(步骤803)
■从DB2表TF1ENTITY和TF1BUSDET提取数据,加载到SQL表TAXPAYERS中
■从DB2表TF1ADDR提取数据,加载到SQL表ADDRESSES中
■从DB2表TF1ID提取数据,加载到SQL表IDENTIFICATIONS中
■从DB2表TF1ACCT提取数据,加载到SQL表ACCOUNTS
■从DB2表TF1RELA提取数据,加载到SQL表RELATIONSHIPS
■从DB2表TF1NAME提取数据,加载到SQL表NAMES
步骤3:变换表Taxpayers、Names、Addresses、Identifications(步骤805)
■针对TAXPAYERS执行变换和代码映射,加载到TAXPAYERS_NEW中
■针对ADDRESSES执行变换和代码映射,加载到ADDRESSES_NEW中
■针对NAMES执行变换和代码映射,加载到NAMES_NEW中
■针对IDENTIFICATIONS执行变换和代码映射,加载到IDENTIFICATIONS_NEW中
■针对TAXPAYERS执行变换和代码映射,加载到TAXPAYERS_NEW中
步骤4:变换表Relationships、Contract Accounts、Contract Objects(步骤807)
■针对ACCOUNTS执行变换和代码映射,加载到ACCOUNTS_CA中
■针对ACCOUNTS执行变换和代码映射,加载到ACCOUNTS_CO中
■针对RELATIONSHIPS执行变换和代码映射,加载到RELATIONSHIPS_NEW中
步骤5:移除自我关系(步骤809)
■使用SQL移除所有与自己的关系
步骤6:创建平面文件(步骤811)
■脚本生成平面文件TaxPayers.txt、ContractAccounts.txt、ContractObjects.txt以及Relationships.txt
■使用TASConverter.DataConversion类来执行平面文件创建
步骤7-8(在SAP GUI中-未在图8中明确示出)
步骤7:创建用于SAP的导入文件
■导航到事务EMIGALL->Migration Object(移植对象)->Data Import(数据导入)
■创建SAP可以记载的导入文件
■Edit(编辑)->Data(数据)->Upload(上传)
步骤8:运行数据导入
■从Data(数据)菜单选择Import Data(导入数据)
用于数据组件转换的高层流程
图9示出了按照本发明一个实施方式的、用于从TAS转换收入账目表的高层流程900。转换例程903从Accenture税务管理***(TAS)901获得账目表,并且将账目表转换为标准格式。一旦处于公共结构,便将账目表导入到SAP服务器905,以提供更新的结构。
图10示出了按照本发明一个实施方式的、从Accenture税务管理***(TAS)1001转换数据组件的高层流程1000。从税务管理***1001获得数据组件的数据元素,其中旧有数据元素被提取到预定义的去正则化结构中。用于数据元素的去正则化数据结构映射到SAP应用1005中。
用于其它组件的转换的高层流程
图11示出了按照本发明一个实施方式的、从税务管理***1101转换对应关系组件的高层流程图1100。转换例程1103将对应关系数据元素从Accenture税务管理***(TAS)1101映射到SAP数据元素。对应关系内容和数据元素被导入到SAP应用1107。而且,第三方模板或者数据1105可以映射到转换例程。
图12示出了按照本发明一个实施方式的用于从税务管理***转换接口组件的高层流程1200。接口1205保持不动,以支持SAP服务器1201正在进行的操作。虚拟数据库1203是概念化TAS数据结构,旧有转换例程和接口可以在其上运行。
图13示出了按照本发明一个实施方式的用于从税务管理***1301转换报表组件的高级流程130。TAS报表的数据元素被映像到SAP***1305中的数据元素,以便向机构报表提供相同的数据输入。报表能力1307支持使用数据元素的相同解释以及按照类似的呈现来重新产生报表。而且,客户端可以将旧有数据结构1303映像到转换例程,以便映像到SAP***1305。
示例性TAS人口统计表描述
图14示出了按照本发明一个实施方式的TAS人口统计表结构1400。基于选定的行业ITS以及用作源和目的地后端***的AERS配置的软件,来开发和测试TAS转换器。作为源ITS***,使用Accenture TAS***,特别地,其具有类似于已有客户端实现的后端配置。目的地AERS后端***是SAP PSCD模块。通过包含Accenture管理和SME,人口统计数据结构被选择为将要移植的第一数据序列。TAS***包括9个后端表,其维护人口统计数据,并且利用TAS转换器加以处理。TAS人口统计表详细说明如下。
Figure G2008800237895D00451
TAS人口统计表描述
TF1ACCT:
纳税者可以在该表上记录其注册的每个税务类型,例如,个体、销售和使用、公司收入、预扣等。对于每一个,该表保存诸如acct id的信息(如果适用,仅销售和使用以及预扣账目),账目的有效日期、提交频率等。注意:对于季节性提交者,存储关于他们在哪几个月提交的信息。
TF1ADDR:
纳税者可以在此表上具有不止一个条目,可以具有不同的地址类型,诸如主要地址、通邮地址、位置等,并且这些不同的地址类型可以与整个纳税者相关联,或者与特定的账目类型相关联,例如销售和使用、预扣等。
TF1ASSET:
纳税者在该表可以具有或者不具有信息。该表存储已经收集的关于纳税者的资产信息,其可以用于收集目的(也即,银行账户、雇主等)。
TF1BUSDET:
除了该表的名称之外,包括个人在内的纳税者在该表上将具有条目;尽管某些字段仅与商业实体有关,例如NAICS代码。该表保存诸如业务类型、NAICS代码以及业务何时还是和/或结束的信息。
TF1ENTITY:
该表存储实体的类型,例如纳税者、相关方、财产等,不论他们是否是受限的纳税者,例如,既能由具有特定安全性的用户查看,并且不论他们在CRM***中是否具有服务请求。
TF1EXEMPT:
纳税者可以在该表上具有或者不具有信息。该表存储特定账目的免除类型,例如非盈利机构在此表上针对其销售和使用账目具有记录。
TF1ID:
ID_INTERNAL是用于每个纳税者的唯一标识符;纳税者在此表上可以具有不止一个条目,因为其可以具有不止一个外部ID类型,但是只有一个外部ID可以是主ID。
TF1NAME:
纳税者在该表上可以具有不止一个条目,因为其可以具有不止一个名称类型(例如,法律、商业等)。
TF1RELA:
纳税者在该表上可以具有或者不具有信息。该表将***中的实体彼此链接,并且指示关系是否可用于抵消。
示例性需求
本小节的目的是提供支持AERS的TAS转换器开发基础架构所需的硬件和软件需求的概况。所列出的软件对应于所使用的开发和测试环境。将这些软件组件部署和引入到TAS转换器技术范畴的顺序在详细部署规划小节中明确说明。
TAS转换器将在AERS环境中使用以下操作***:
■1Windows 2003服务器-1CPU,2GB RAM(DB2DB)
■1Windows 2003服务器-1CPU,2GB RAM(SQL Server DB)
■1Windows 2003服务器-1CPU,4GB RAM(ECC 6.0)
需要下列软件以便构建TAS转换器开发环境:
■Microsoft SQL Server 2005Enterprise Edition
■IBM DB2Version 9.1
■Microsoft Visual Studio 2005Professional Edition
■Microsoft OLE DB Provider for DB2
■Microsoft Visual Source Safe 2005(Optional)
■SAP mySAP ERP 2005(PSCD)
示例性部署规划
本小节的目的是详细描述建立TAS转换器环境所需的步骤序列。这应当充当TAS转换器团队在组装TAS转换器基础设施时的指南。
该小节是软件安装及其组件的高层细节。用户可以参考该小节作为TAS转换器环境的顺序和概况的指南。
1.安装SAP PSCD
a.由Basis团队安装任务
2.IBM DB2安装
a.安装DB2V9
b.导入TAS表结构
i执行SQL***查询
c.更新TAS数据
i映射平面文件字段
3.安装Microsoft OLE Data Provider for DB2
a.在开发机器上安装DB2 Provider
b.在运行时机器上安装DB2Provider
4.安装Microsoft SQL Server 2005
a.在开发机器上安装SQL Server 2005
b.在运行时机器上安装SQL Server 2005
c.导入SQL表结构
5.TAS转换器应用导入
a.拷贝已有的SSIS应用
b.将SSIS应用上传到Visual Source Safe
c.配置应用
i配置数据源证书和位置
ii配置文件***证书和位置
尽管已经关于包括执行本发明的优选模式的特定示例描述了本发明,但是本领域技术人员将会理解,在所附权利要求记载的本发明的精神和范围内,将存在对上文描述***和技术的多种变形和替换。
附录A:DB2安装/配置参考
使用
使用该附录来定位DB2安装和配置向导。
过程
您可以:
·安装和/或配置DB2V9数据库的实例
参考
单分区安装(Windows)
http://publib.boulder.ibm.com/infocenter/db21uw/v8/topic/com.ibm.db2.udb. doc/start/t0007184.htm
将数据加载到表中
http://publib.boulder.ibm.com/infocenter/db21uw/v8/topic/com.ibm.db2.udb. cc.doc/db2u_db/loadtableui.htm?resultof=%22%67%72%61%70%68%69%6 3%61%6c%22%20%22%67%72%61%70%68%69%63%22%20%22%6d%61 %70%70%65%72%22%20
DB2客户端和服务器的安装需求(Windows)
http://publib.boulder.ibm.com/infocenter/db21uw/v9/topic/com.ibm.db2.udb. uprun.doc/doc/r0006867.htm
附录B:字母组合和缩写
  字母组合和缩写   描述
  AERS   Accenture Enterprise Revenue Solution(Accenture企业收益解决方案)
  ITS   Integration Tax System(集成税务***)
  PSCD   Public Sector Collection andDisbursement(公共部门收入和支出)
  SME   Subject Matter Expert(学科问题专家)
  SQL   Structured Query Language(结构化查询语言)
  SSIS   SQL Server Integration Services(SQL服务器集成服务)
  TAS   Tax Administration System(税务管理***)
  TRM   Tax and Revenue Management(税务和收益管理)
  TCODE   Transaction Code(转码)
  BRE   Business Rule Engine(业务规则引擎)
  ABAP   Advanced Business ApplicationProgramming(高级业务应用编程)
附录C:SQL查询
DB2提取查询
TF1ENTITY和TF1BUSDET DB2表:
SELECT
″MICHAEL.J.ORTIZ″.TF1ENTITY.ID_JNTERNA1,
″MICHAEL J.ORTIZ″.TF1ENTITY.CD_TYPE_ENTITY,
″MICHAEL.J.ORTIZ″.TF1ENTITY.ID_TRANS,
″MICHAEL.J.ORTIZ″.TF1ENTITY.CD_SOURCE_UPDA TE,
″MICHAEL.J.ORTIZ″.TF1ENTITY.CD_REASON_UPDA TE,
″MICHAEL.J.ORTIZ″.TF1ENT1TY.ID_EMPLOYEE_UPDATE,
CAST(″MICHAELJ.ORTIZ″.TF1ENTITY.DT_UPDATE AS VARCHAR(20))AS DT_UPDATE,
CAST(″MICHEL.!ORTIZ″.TF1ENTITY.TM_UPDATE AS VARCHAR(20))AS TM_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ENTITY.IN_RES_TAX_ACCESS,
″MICHAEL.J.ORTIZ″.TF1ENTITY.IN_SR V_RQST,
″MICHAEL.J.ORTIZ″.TF1BUSDET.CD_NAICS,
″MICHAEL.J.ORTIZ″.TF1BUSDETCD_TYPE_BUSINESS,
CAST(″MICHAEL.J.ORTIZ″.TF1BUSDET.DT_START_BUS AS VARCHAR(20))ASDT_START_BUS,
CAST(″MICHAEL.J.ORTIZ″.TF1BUSDET.DT_END_BUS AS VARCHAR(20))ASDT_END_BUS,
″MICHAEL.J.ORTIZ″.TF1BUSDET.CD_REASON_END_BUS,
″MICHAEL.J.ORTIZ″.TF1BUSDET.CD_INC_ST,
CAST(″MICHAEL.J.ORTIZ″.TF1BUSDET.DT_INC AS VARCHAR(20))AS DT_INC,
CAST(″MICHAEL.J.ORTIZ″.TF1BUSDET.DT_START_NYC AS VARCHAR(20))ASDT_START_NYC,
CASTC(″MICHAEL.J.ORTIZ″.TF1BUSDET.DT_END_NYC AS VARCHAR(20))ASDT_END_NYC,
″MICHAEL.J.ORTIZ″.TF1BUSDET.CD_REASON_END_NYC,
″MICHAEL.J.ORTIZ″.TF1BUSDET.CD_AGENCY_VEN_CITY,
″MICHAEL.J.ORTIZ″.TF1BUSDET.ID_DC_AGENCY
FROM
″MICHAEL.J.ORTIZ″.TF1ENTITY INNER JOIN
″MICHAEL.J.ORTIZ″.TF1BUSDET ON
″MICHAEL.J.ORTIZ″.TF1ENTITY.ID_INTERNAL=″MICHAEL.J.ORTIZ″.
TF1BUSDET.ID_INTERNAL
TF1ADDR DB2表:
SELECT
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_INTERNAL,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_TYPE_ADDR,
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_NUM_SEQ_ADDR,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_TYPE_ACCT,″MICHAEL.J.ORTIZ″.
TF1ADDR.ID_ACCT,CAST(″MICHAEL.J.ORTIZ″.TF1ADDR.DT_EFFECT AS
VARCHAR(20))AS DT_EFFECT,
CAST(″MICHAEL.J.ORTIZ″.TF1ADDR.DT_END ASVARCHAR(20))AS DT_END,
″MICHAEL.J.ORTIZ″.TF1ADDR.AD_NAME_ATTENTION,
″MICHAEL.J.ORTIZ″.TF1ADDR.AD_STREET_1,
″MICHAEL.J.ORTIZ″.TF1ADR.AD_STREET_2,″MICHAEL.J.ORTIZ″.
TF1ADDR.AD_CITY,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_ADDR_STATE,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_ADDR_ZIP,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_ADDR_COUNTRY,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_STREET,
″MICHAEL.J.ORTIZ″.TF1ADDR.QI_MAIL_RETURN,
″MICHAEL J.ORTIZ″.TF1ADDR.ID_PHONE_HOME,
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_EXT_TEL_HOME,
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_PHONE_OFFICE,
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_EXT_TEL_OFFICE,
″MICHAEL.J.ORTIZ″.TFIADDR.ID_INTERNAL_REL,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_TYPE_ACCT_REL,
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_ACCT_REL,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_TYPEADDR_REL,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_TYPE_REL,″MICHAEL.J.ORTIZ″.TF1ADDR.
ID_TRANS,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_SOURCE_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_REASON_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_EMPLOYEE_UPDATE,
CAST(″MICHAEL.J.ORTIZ″.TF1ADDR.DT_UPDATE AS VARCHAR(20))AS
DT UPDATE,
″MICHAEL.J.ORTIZ″.TF1ADDR.TM_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ADDR.IN_MERGE,
″MICHAEL.J.ORTIZ″.TF1ADDR.IN_VER_PO,
″MICHAEL.J.ORTIZ″.TF1ADDR.ID_NUM_SEQ_AD_REL,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_ROUTE_CARRIER,
″MICHAEL.J.ORTIZ″.TF1ADDR.CD_ADDR_NORM,
″MICHAEL.J.ORTIZ″.TF1ADDR.AD_EMAIL
FROM
″MICHAEL.J.RTIZ″.TF1ADDR
TF1IDDB2表:
SELECT
″MICHAEL.J.ORTIZ″.TF1ID.ID_INTERNAL, ″MICHAEL.J.ORTIZ″.TF1ID.CD_TYPE_ID,
″MICHAEL.J.ORTIZ″.TF1ID.ID_ENTITY,″MICHAEL.J.ORTIZ″.TF1ID.ID_OCCURRENCE,
″MICHAEL.J.ORTIZ″.TF1ID.IN_ID_PRIMARY, ″MICHAEL.J.ORTIZ″.
TF1ID.CD_STATUS,
″MICHAEL.J.ORTIZ″.TF1ID.IN_VER_IRS, ″MICHAEL.J.ORTIZ″.TFIID.ID_TRANS,
″MICHAEL.J.ORTIZ″.TF1ID.CD_SOURCE_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ID.CD_REASON_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ID.ID_EMPLOYEE_UPDATE,
CAST(″MICHAEL.J.ORTIZ″.TF1ID.DT_UPDA TE AS VARCHAR(20))AS DT_UPDA TE,
CAST(″MICHAEL.J.ORTIZ″.TF1ID.TM_UPDATEAS VARCHAR(20))AS TM_UPDATE,
″MICHAEL.J.ORTIZ″.TF ID.IN_MERGE
FROM
″MICHAEL.J.ORTIZ″.TF1ID
TF1ACCT DB2表:
SELECT
″MICHAEL.J.ORTIZ″.TF1ACCT.ID_INTERNAL,
″MICHAEL.J.ORTIZ″.TF1ACCT.CD_TYPE_ACCT,″MICHAEL.J.ORTIZ″.
TF1ACCT.ID_ACCT,
CAST(″MICHAEL.J.ORTIZ″.TF1ACCT.DT_EFFECT AS VARCHAR(20))AS
DT_EFFECT,
CAST(″MICHAEL.J.ORTIZ″.TF1ACCT.DT_END AS VARCHAR(20))AS DT_END,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_FILE_PREV,
″MICHAEL.J.ORTIZ″.TF1ACCT.DT_DAY_MON_FISCAL,
″MICHAEL J.ORTIZ″.TF1ACCT.CD_FREQ_FILING,
CAST(MICHAEL.J.ORTIZ″.TF1ACCT.DT_EFFECT_FIL AS VARCHAR(20))AS
DT EFFECT FIL,″MICHAEL.J.ORTIZ″.TF1ACCT.CD_FREQ_FIL_PREV,
″MICHAEL.J.ORTIZ″.TF1ACCT.ID_TRANS,
″MICHAEL.J.ORTIZ″.TF1ACCT.CD_SOURCE_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ACCT.CD_REASON_UPDATE,
″MICHAEL.J.ORTIZ″.TF1ACCT.ID_EMPLOYEE_UPDATE,
CAST(″MICHAEL.J.ORTIZ″.TF1 ACCT.D_UPDATE AS VARCHAR(20))AS
DT_UPDATE,
CAST(″MICHAEL.J.ORTIZ″.TF1ACCT.TM_UPDATE AS VARCHAR(20))AS
TM_UPDATE,
″MICHAEL.J.ORTIZ″.TFIACCT.IN_MERGE,″MICHAEL.J.ORTIZ″.
TF1ACCT.IN_JANUARY,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_FEBRUARY,″MICHAEL.J.ORTIZ″.
TF1ACCT.IN_MARCH,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_APRIL,″MICHAEL.J.ORTIZ″.TF1ACCT.IN_MAY,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_JUNE,″MICHAEL.J.ORTIZ″.TFIACCT.IN_JULY,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_AUGUST,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_SEPTEMBER,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_OCTOBER,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_NOVEMBER,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_DECEMBER,″MICHAELJ.ORTIZ″.TF1ACCT.IN_FIR,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_PREPARER,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_LOCKBOX,
″MICHAEL.J.ORTIZ″.TF1ACCT.CD_JYPE_TAX_AREA,
″MICHAEL.J.ORTIZ″.TF1ACCT_CD_NAICS,
″MICHAEL.J.ORTIZ″.TF1ACCT.CD_STATUS_ACCT,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_JAN_FF,″MICHAEL.J.ORTIZ″.TF1ACCT.IN_FEB_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_MAR_FF,″MICHAEL.J.ORTIZ″.TF1ACCT.IN_APR_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_MAY_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_JUNE_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN JULY_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_AUG_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_SEPT_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_OCT_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_NOV_FF,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_DEC_FF,
″MICHAEL.!ORTIZ″.TF1ACCT.ID_BANK,
″MICHAEL.J.ORTIZ″.TF1ACCT.ID_ACCT_BANK,
″MICHAEL.J.ORTIZ″.TF1ACCT.CD_TYPE_ACCT_BANK,
″MICHAEL.J.ORTIZ″.TF1ACCT.IN_LABEL_REQ,
CAST(″MICHAEL.J.ORTIZ″.TF1ACCT.DT_LABEL_SEQ AS VARCHAR(20))AS
DT_LABEL_REQ
FROM
″MICHAEL.J.ORTIZ″.TF1ACCT
TF1RELA DB2表:
SELECT
″MICHAEL.J.ORTIZ″.TF1RELA.ID_INTERNAL,
″MICHAEL.J.ORTIZ″.TF1RELA.CD_TYPE_ACCT,
″MICHAEL J.ORTIZ″.TF1RELA.ID_ACCT,
″MICHAEL.J.ORTIZ″.TF1RELA.ID_INTERNAL_REL,
″MICHAEL.J.ORTIZ″.TF1RELA.CD_TYPE_ACCT_REL,
″MICHAEL J.ORTIZ″.TF1RELA.ID_ACCT_REL,
″MICHAEL.J.ORTIZ″.TF1RELA.CD_TYPE_REL,
CAST(″MICHAEL J.ORTIZ″.TF1RELA.DT_EFFECT AS VARCHAR(20))AS
DT_EFFECT,
CASTC′MICHAEL.J.ORTIZ″.TF1RELA.DTEND AS VARCHAR(20))AS DT_END,
″MICHAEL.J.ORTIZ″.TF1RELA.CD_STATUS_REL,
″MICHAEL.J.ORTIZ″.TF1RELA.ID_TRANS,
″MICHAEL.J.ORTIZ″.TF1RELA.CD_SOURCE_UPDAT TE,
″MICHAEL.J.ORTIZ″.TF1RELA.CD_REASON_UPDATE,
″MICHAEL.J.ORTIZ″.TF1RELA.ID_EMPLOYEE_UPDATE,
CASTC′MICHAEL.J.ORTIZ″.TF1RELA.DT_UPDATE AS VARCHAR(20))AS
DT_UPDATE,
CAST(″MICHAELJ.ORTIZ″.TF1RELA.TM_UPDATE AS VARCHAR(20))ASTM_UPDATE,
″MICHAEL.J.ORTIZ″.TF1RELA.IN_MERGE,″MICHAEL.J.ORTIZ″.TF1RELA.AM_WAGE,
″MICHAEL.J.ORTIZ″.TF1RELA.IN_OFFSET,
″MICHAEL J.ORTIZ″.TF1RELA.IN_TSC_REG
FROM″MICHAEL.J.ORTIZ″.TF1RELA
TF1NAME DB2表:
SELECT
″MICHAEL.J.ORTIZ″.TF1NAME.ID_INTERNAL,
″MICHAEL.J.ORTIZ″.TF1NAME.ID_NUM_SEQ_NAME,
″MICHAEL.J.ORTIZ″.TF1NAME.CD_TYPE_NAME,
″MICHAEL.J.ORTIZ″.TF1NAME.NM_ENTITY,″MICHAEL.J.ORTIZ″.
TF1NAME.NM_KEY,
″MICHAEL.J.ORTIZ″.TF1NAME.NM_FIRST,
″MICHAEL.J.ORTIZ″.TF1NAME.NM_INITIA1_MIDDLE,
″MICHAEL.J.ORTIZ″.TF1NAME.IN_DUPLICATE_NAME,
″MICHAEL.J.ORTIZ″.TF1NAME.CD_STATUS,
″MICHAEL.J.ORTIZ″.TF1NAME.ID_TRANS,
″MICHAEL.J.ORTIZ″.TF1NAME.CD_TYPE_TRUST,
″MICHAEL.J.ORTIZ″.TF1NAME.CD_SOURCE_UPDATE,
″MICHAEL.J.ORTIZ″.TF1NAME.CD_REASON_UPDATE,
″MICHAEL.J.ORTIZ″.TF1NAME.ID_EMPLOYEE_UPDATE,
CAST(″MICHAEL.J.ORTIZ″.TF1NAME.TM_UPDATE AS VARCHAR(20))AS TM_UPDATE,
CAST(″MICHAEL.J.ORTIZ″.TF1NAME.DT_UPDATE AS VARCHAR(20))AS DT_UPDATE,
″MICHAEL.J.ORTIZ″.TF1NAME.IN_MERGE,
″MICHAEL.J.ORTIZ″.TF1NAME.CD_TYPE_ACCT,
″MICHAEL.J.ORTIZ″.TF1NAME.ID_ACCT,
″MICHAEL.J.ORTIZ″.TF1NAME.NM_TITLE,
″MICHAEL.J.ORTIZ″.TF1NAME.NM_SUFFLX,
″MICHAEL.J.ORTIZ″.TF1NAME.NM_ENTITY_4
FROM
″MICHAEL.J.ORTIZ″.TF1NAME
用于将表TAXPAYER变换为表TAXPAYER_NEW的SQL提取查询:
SELECT
*
FROM
TAXPAYERS
表ADDRESSES到表ADDRESSES_NEW:
SELECT ADDRESSES.ID_INTERNAL,ADDRESSES.CD_TYPE_ADDR,
ADDRESSES.ID_NUM_SEQ_ADDR,ADDRESSES.CD_TYPE_ACCT,ADDRESSES.ID_ACCT,ADDRESSES.DT_EFFECT,ADDRESSES.DT_END,
ADDRESSES.AD_NAME_A TTENTION,ADDRESSES.AD_STREET_1,
ADDRESSES.AD_STREET_2,
ADDRESSES.AD_CITY,ADDRESSES.CD_ADDR_STATE,
ADDRESSES.CD_ADDR_ZIP,ADDRESSES.CD_ADDR_COUNTRY,ADDRESSES.CD_STREET,
ADDRESSES.QT_MAIL_RETURN,ADDRESSES.ID_PHONE_HOME,
ADDRESSES.ID_EXT_TEL_HOME,ADDRESSES.ID_PHONE_OFFICE,
ADDRESSES.ID EXT_TEL_OFFICE,ADDRESSES.ID_INTERNAL_REL,
ADDRESSES.CD_TYPE_ACCT_REL,ADDRESSES.ID_ACCT_REL,
ADDRESSES.DT_UPDATE,ADDRESSES.TM_UPDATE,ADDRESSES.AD_EMAIL
FROM
ADDRESSES INNER JOIN
TAXPAYERS ON ADDRESSES.ID_INTERNAL=TAXPAYERS.ID_INTERNALWHERE(DT_END>=CONVERT(CHAR(10),GETDATE(),120))
表NAMES到表NAMES_NEW:
SELECT N1.ID_INTERNAL,N1.ID_NUM_SEQ_NAME,N1.CD_TYPE_NAME,
N1.NM_ENTITY,N1.NM_KEY,N1.NM_FIRST,N1.NM_INITIAL_MIDDLE,
N1.IN_DUPLICATE_NAME,N1.CD_STATUS,N1.ID_TRANS,
N1.CD_TYPE_TRUST,
N1.CD_SOURCE_UPDATE,N1.CD_REASON_UPDATE,
N1.ID_EMPLOYEE_UPDATE,N1.TM_UPDATE,N1.DT_UPDATE,
N1.IN_MERGE,
N1.CD_TYPE_ACCT,N1.ID_ACCT,N1.NM_TITLE,N1.NM_SUFFIX,
N1.NM_ENTITY_4.N1.ACTIVE_FLAG
FROM
NAMES AS N1 INNER JOIN
TAXPAYERS ON N1.ID_INTERNAL=TAXPAYERS.ID_INTERNAL
WHERE (N1.CD_TYPE_NAME=
(SELECT  MIN(CD_TYPE_NAME)AS CD_TYPE_NAME
FROM   NAMES AS N2
WHERE (N1.ID_INTERNA1=ID_INTERNA1)))AND(N1.ID_NUM_SEQ_NAME
(SELECT MAX(ID_NUM_SEQ_NAME)AS ID_NUM_SEQ_NAME
FROM   NAMES AS N3
WHERE  (N1.I_INTERNAL=ID_INTERNAL)AND(N1.CD_TYPE_NAME=
CD_TYPE_NAME)))AND(N1.CD_TYPE_ACCT=
(SELECT MIN(CD_TYPE_ACCT)AS CD_TYPE_ACCT
FROM  NAMES AS N4
WHERE(N1.ID_INTERNAL=ID_INTERNAL)AND(N1.CD_TYPE_ACCT=
CD_TYPE_ACCT)))ORDER BY N1.ID_INTERNAL
表IDENTIFICATIONS到表IDENTIFICATIONS_NEW:
SELECT IDENTIFICATIONS.ID_INTERNAL,IDENTIFICATIONS.CD_TYPE_ID,IDENTIFICATIONS.ID_ENTITY,IDENTIFICATIONS.ID_OCCURRENCE,
IDENTIFICATIONS.IN_ID_PRIMARY
FROM
TAXPA YERS INNER JOIN
IDENTIFICATIONS ON TAXPAYERS.ID_INTERNAL-
IDENTIFICATIONS.ID_INTERNAL
表ACCOUNTS到表ACCOUNTS_CA:
SELECT   A1.ID.INTERNAL,A1.CD_TYPE_ACCT,A1.TEMP_ID_ACCT,
A1.DT_EFFECT,
A1.DT_END
FROM
ACCOUNTS AS A1 INNER JOIN
TAXPAYERS ON A1.ID_INTERNA1=TAXPAYERS.ID_INTERNAL
WHERE  (A1.DT_EFFECT=
(SELECT MIN(DT_EFFECT)AS DT_EFFECT
FROM   ACCOUNTS AS A2
WHERE   (A1.ID_INTERNA1=ID_INTERNAL)AND(A1.CD_TYPE_ACCT=
CD_TYPE_ACCT)AND(DTEND>=CONVERT(CHAR(IO),GETDATE(),120))))
GROUP BY A1.ID_INTERNA1,A1.CD_TYPE_ACCT,A1.TEMP_ID_ACCT,
A1.DT_EFFECT,A1.DT_END
ORDER BYA1.ID_INTERNAL,A1.CD_TYPE_ACCT
表ACCOUNTS到表ACCOUNTS_CO:
SELECT ACCOUNTS.ID_INTERNAL,ACCOUNTS.DT_EFFECT,ACCOUNTS.DT_
END,
ACCOUNTS.CD_FREQ_FILING,ACCOUNTS.TEMP_ID_ACCT,ACCOUNTS.
TEMP_DI_CO,
TAXPAYERS.CD_TYPE_BUSINESS
FROM    ACCOUNTS INNER JOIN
        TAXPAYERS ON ACCOUNTS.ID_INTERNAL=TAXPAYERS.ID_
INTERNAL
WHERE    (ACCOUNTS.TEMP_ID_ACCT IN
         (SELECT   A1.TEMP_ID_ACCT
            FROM       ACCOUNTS AS A1 INNER JOIN
                       TAXPAYERS AS TAXPAYERS_1 ON
            A1.ID_INTERNAL=TAXPA YERS_1.ID_INTERNAL
WHERE      (A1.DT_EFFECT IN
(SELECT     DTJ.FFECT FROM       ACC0UNTSASA2
WHERE(A1.ID INTERNAL=ID_INTERNAL)AND
(A1.CDTYPEACCT=CDTYPE_ACCT)))AND(A1.DT_END>=CONVERT(CHAR(10),
GETDATE(),120))))
表RELATIONSHIPS到RELATIONSHIPS_NEW:
SELECT
RELATIONSHIPS.ID INTERNAL,RELATIONSHIPS.CDTYPE_ACCT,
RELATIONSHIPS.ID_ACCT,RELATIONSHIPS.ID_INTERNAL_REL,RELATIONSHIPS.CD_TYPE_ACCTREL,RELATIONSHIPS.ID_ACCTREL,RELATIONSHIPS.CDJYPEREL,RELATIONSHIPS.DTJEFFECT,
RELATIONSHIPS.DT_END,RELATIONSHIPS.CD_STATUS_REL FROMRELATIONSHIPS INNER JOIN
TAXPAYERS ON RELATIONSHIPS.ID_INTERNALREL=TAXPAYERS.ID_INTERNAL TAXPAYERS AS TAXPAYERS!ON A LID INTERNAL=TAXPAYERSJ.ID_INTERNAL WHERE(A1.DT EFFECT IN(SELECT DTEFFECT FROM ACC0UNTSASA2
WHERE(A1.ID INTERNAL=IDINTERNAL)AND(A1.CD_TYPE_ACCT=CDTYPEACCT)))AND(A1.DTEND>=CONVERT(CHAR(10),GETDATEQ,120))))
附录D:脚本代码
为CA和CO指派TEMP_ID:为Contract Account和Contract Object创建唯一的数字:
Public Class ScriptMain
  Inherits UserComponent
  Public TEMPJDJNTERNAL As Decimal
  Public TEMP_ID_ACCOUNT As Integer
  Public TEMPIDCO As Integer Public
  TEMP_CD_TYPE_ACCT As Decimal
  Public Overrides Sub Input0_ProcessInputRow(ByVal Row As InputOBuffer)
   If TEMPJDACCOUNT=0Then
      SetStartValues(Row.IDINTERNAL,Row.CDTYPEACC
   T)End If
   AssignTempID(Row.IDINTERNAL,Row.CDTYPEACCT,
   Row.TEMPIDACCT)Row.TEMPIDACCT=TEMP JD_ACCOUNT
   Row.TEMPIDCO=TEMPJDCO
 End Sub
 Private Sub AssignTempID(ByVal inputID INTERNAL As Decimal,ByVal
         inputCDTYPEACCT As Decimal,ByValinputTEMP JDACCT As Integer)
   If inputID_INTERNAL=TEMPJDJNTERNAL Then
   If inputCDTYPEACCT<>TEMP_CD_TYPE_ACCT
   Then TEMP_CD_TYPE_ACCT=inputCD_TYPE_ACCT
   TEMP JD_ACCOUNT+=1End If Else
   TEMP JD_INTERNAL=inputID JNTERNAL
   TEMP_CD_TYPE_ACCT=inputCD_TYPE_ACCT
   TEMP JD_ACCOUNT+=1End If
   TEMP JD_CO+=
 End Sub
 Private Sub SetStartValues(ByVal inputlDINTERNAL As Decimal,ByVal
         inputCDTYPEACCT As Decimal)
   TEMP_CD_TYPE_ACCT=inputID_INTERNAL
   TEMP_ID_INTERNAL=inputCDTYPEACCT End Sub
 End Class
变换日期:从日期字段中删除″-″
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
   Row.DTSTARTBUS=ConvertDate(Row.DTSTARTBUS)Row.DTENDBUS=
   ConvertDate(Row.DTENDBUS)
  End Sub
  Private Function ConvertDate(ByVal inputDate As String)As String
    inputDate=inputDate.Replace(″-″,″″)
    Dim iYear As Integer
    iYear=CInt(inputDate.Substring(O,4))
    IfiYear<1900Then
      inputDate=″″End If Return inputDate
   End Function End Class
变换伙伴类型:执行代码映射
Public Class ScriptMain
  Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
    Row.CDTYPEBUSINESS=ConvertPartnerCategory(CInt(Row.CDTYPEBUSINESS))
  End Sub
  Private Function ConvertPartnerCategory(ByVal cat As Integer)As Integer
    Ifcat=100Or cat=110Or cat=161Or cat=162Or cat=163Or cat=164Or cat=
165Or cat=700Then
      cat=1Else
      cat=2End If
  Return cat End Function End Class
Transform House:Derives house number from address
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
    Row.HOUSE=ConvertHouse(Row.HOUSE)Row.ADSTREET1=
    ConvertStreet(Row.ADSTREET1)
  End Sub
  Private Function ConvertHouse(ByVal val As String)As String
    Dim iSpace As Integer
    iSpace=val.IndexOf(″″)
    IfNotiSpace=-1Then
      val=val.Substring(0,iSpace)End If
   Return val End Function
   Private Function ConvertStreet(ByVal val As String)As String Dim iSpace As Integer
     iSpace=val.IndexOf(″″)
     IfNot iSpace=-1Then
        val=val.Remove(0,iSpace)End If
     Return val End Function
End Class
Transform Address Type:Performs code mapping
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
  Row.CDTYPEADDRSAP-ConvertAddressType(Row.CDTYPEADDR)End Sub
  Private Function ConvertAddressType(ByVal val As Decimal)As String
     Dim type As String type=″XXDEFAULT″
     Ifval=10Then′MAILING
        type=″MAILING″Elself val=20Then′PREMISE
        type=″LOCATION″Elself val=30Then′LOCATION
        type=″LOCATION″Elself val=40Then′SECONDARY
        type=″MAILING″Elself val=50Then′EMAIL
        type=″MAILING″
     Elself val=60Then′PRIMARY type=″XXDEFAULT″
     Elself val=70Then′RESIDENT type=″0002″
     Elself val=90Then′UNKNOWN type=″MAILING″
     End If
   Return type End Function
End Class
Transform Zip:Removes″-″from zip code
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)Dim zip As
    String zip=Row.CDADDRZIP If Not IsNumeric(zip.Replace(″-″,″″))Then
      Row.CDADDRSTATE=″VA″End If Row.CDADDRZIP=
     ConvertZIP(Row.CDADDRZIP)
  End Sub
  Private Function ConvertZIP(ByVal val As String)As String Dim temp As String
     temp=″20000-0000″
  If val.Trim.Length=0Then
    val=temp Elself Not IsNumeric(val.Replace(″-″,″″))Then
    val=temp End If
   Return val End Function
EndClass
变换标识类型:执行代码映射
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
    Row.CDTYPEIDSAP=ConvertlDTypes(Row.CDTYPEID)
  End Sub
  Private Function ConvertIDTypes(ByVal val As Decimal)As String
    Dim type As String
    type=″FS001″′ID CARD
    Ifval=1Then′EIN
      type=″EIN″ElseIfval=2Then′SSN
      type=″IBS001″ElseIfval=4Then′JNT
      type=″ZTAXID″ElseIfval=5Then′BTN
      type=″ZTAXID″ElseIfval=6Then′SSL
      type=″ZTAXID11Elselfval=7Then′BUYR
      type=″ZTAXID″Elselfval=100Then′TEMP
      type=″ZTAXID″End If
   Return type End Function
End Class
变换账目类别:执行代码映射
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
  Row.CDTYPEACCTSAP=ConvertAcctCategories(Row.CDTYPEACCT)End Sub
 Private Function ConvertAcctCategories(ByVal val As Decimal)As String Dim type As
   String type=″″
   Ifval=100Then
      type=″IN″Elselfval-111Then
      type=″GS″Elselfval=125Then
      type=″GS″Elselfval=150Then
      type=″IF″Elselfval=161Then
      type=″GS″Elselfval=162Then
      type=″GS″Elselfval=163Then
      type=″GS″Elselfval=164Then
type=″GS″
Elselfval=210Then
  type=″GS″Elselfval=250Then
  type=″CF″Elselfval=260Then
  type=″GS″Elselfval=280Then
  type=″CF″Elselfval=300Then
  type=″WH″Elselfval=310Then
  type=″GS″Elselfval=350Then
  type=″SU″Elselfval=360Then
  type=″CF″Elselfval=370Then
  type=″GS″Elselfval=380Then
  type=″CF″Elselfval=400Then
  type=″RE″Elselfval=450Then
  type=″GS″Elselfval=510Then
  type=″GS″Elselfval=520Then
  type=″GS″Elselfval=530Then
  type=″GS″Elselfval=540Then
  type=″GS″Elselfval=550Then
  type=″GS″Elselfval=560Then
  type=″GS″Elselfval=565Then
  type=″CF″Elselfval=570Then
  type=″GS″Elselfval=575Then
  type=″GS″Elselfval=580Then
  type=″GS″Elselfval=585Then
  type-″GS″Elselfval=600Then
  type=″GS″Elselfval=610Then
  type=″GS″Elselfval=700Then
  type=″RE″Elselfval=710Then
  type=″RE″Elselfval=720Then
  type=″GS″Elselfval=730Then
  type=″GS″Elself val=998Then
  type=″GS″End If
  Return type End Function
  End Class
变换周期:执行代码映射
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
    Row.CDFREQFILING=ConvertPeriodicity(Row.CDFREQFILING)End Sub
  Private Function ConvertPeriodicity(ByVal val As Decimal)As Decimal
    Ifval=1Then′Annual
      val=6Elselfval=12Then′Monthly
      val=3Elselfval=365Then′Daily
      val=1′Must configure PSCD for Daily End If
    Return val End Function
End Class
变换伙伴类别CO:执行代码映射
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
   Row.CONTRACTOBJECTTYPE=
  ConvertPartnerCategory(CInt(Row.CDTYPEBUSINESS))End Sub
  Private Function ConvertPartnerCategory(By Val cat As Integer)As Integer
       If cat=100 Or cat=110 Or cat=161 Or cat=162 Or cat=163 Or cat=164 Or cat=
               165 Or cat=700 Then
          cat=10 Else
   cat=20 End If
   Return cat End Function End Class
变换关系:执行代码映射
Public Class ScriptMain Inherits UserComponent
  Public Overrides Sub InputO_ProcessInputRow(ByVal Row As InputOBuffer)
    Row.CDTYPERELSAP=ConvertRelTypes(Row.CDTYPEREL)End Sub
  Private Function ConvertRelTypes(ByVal val As Decimal)As String Dim type As String
    type=″BUR006″
    Return type End Function
End Class
创建平面文件:生成人口统计平面文件
Imports System
Imports System.Data
Imports System.Math
Imports TASConverter.DataConversion
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Diagnostics
  Public Class ScriptMain
′The execution engine calls this method when the task executes.
′To access the object model,use the Dts object.Connections,variables,events,′and
logging features are available as static members of the Dts class.
′Before returning from this method,set the value of Dts.TaskResult to indicate success orfailure.
′To open Code and Text Editor Help,press F1.
′To open Object Browser,press Ctrl+Alt+J.
      Public Sub Main()
            ′Add your code here
    Dim ob As New DataConverter Dim db As String Dim locPayer As String Dim locAcc
    As String Dim locCo As String Dim locRel As String
    Try
       db=″Data Source=RESBT2403;Initial Catalog=NEW_EMIGALL_TAS;User
              ID=tasconverter;pwd=********·″locPayer=″C:\TAS_Output\TaxPayers.txt″
       locAcc=″C:\TAS_Output\ContractAccounts.txt″locRel=
       ″C:\TAS_Output\Relationships.txt″locCo=″C:\TAS_Output\ConctractObjects.txt″
    ob.CreateTaxPayersFile(db,locPayer)
       ob.CreateContractAccountsFile(db,locAcc)
       ob.CreateRelationshipsFile(db,locRel)
       ob.CreateContractObjectsFile(db,locCo)Catch e As Exception
       System.Diagnostics.EventLog.WriteEntry(″ScriptMain″,e.ToStringO)Finally End
     Try
     Dts.TaskResult=Dts.Results.Success End Sub
   End Class
附录E:SAP人口统计结构
人口统计结构可以位于与提取该文件相同的目录。文件:
PARTNER_STRUCT.HTM
CONTRACT_ACCOUNTS_STRUCT.HTM
CONTRACT_OBJECTS_STRUCT.HTM
RELATIONSHIPS_STRUCT.HTM
附录F:示例性截屏——数据移植
DB2:TF1ID
Figure G2008800237895D00721
DB2:TF1NAME
Figure G2008800237895D00731
DB2:TF1ADDR
Figure G2008800237895D00741
SQL:IDENTIFICATIONS
SQL:NAMES
Figure G2008800237895D00761
SQL:ADDRESSES
FLATFILE:TAXPAYER
Figure G2008800237895D00781
EMIGALL:TAXPAYER
Figure G2008800237895D00791
SAP:NAME
Figure G2008800237895D00801
SAP:ADDRESS
Figure G2008800237895D00811
SAP:IDENTIFICATION

Claims (23)

1.一种方法,包括:
(a)从旧有应用获得第一组件;
(b)根据旧有元素生成中间状态元素,所述旧有元素包含在所述第一组件中;以及
(c)将所述中间状态元素转换为目标元素,目标应用被配置为使用所述目标元素。
2.如权利要求1的方法,其中所述第一组件包括规则组件,并且所述方法进一步包括:
(d)从所述旧有应用获得所述规则组件,所述旧有应用包含以第一软件语言指定的旧有源代码;
(e)根据旧有规则生成中间状态表达,所述旧有规则包含在所述规则组件中;以及
(f)将所述中间状态表达转换为目标规则,目标应用被配置为执行所述目标规则,所述目标应用包含以第二软件语言指定的目标源代码。
3.如权利要求2的方法,进一步包括:
(g)从所述旧有应用获得数据组件;以及
(h)根据旧有数据元素生成中间数据元素,所述旧有数据元素包含在所述数据组件中;以及
(i)将所述中间数据元素转换为目标数据元素。
4.如权利要求3的方法,进一步包括:
(j)在执行所述目标规则时,访问所述目标数据元素。
5.如权利要求2的方法,其中所述第一软件语言和所述第二软件语言是不同的软件语言。
6.如权利要求2的方法,其中所述第一软件语言和所述第二软件语言是相同的软件语言。
7.如权利要求1的方法,进一步包括:
(d)从所述旧有应用获得对应关系组件;
(e)根据旧有数据元素生成中间对应关系元素,所述旧有对应关系元素包含在所述对应关系组件中;以及
(f)将所述中间对应关系元素转换为由所述目标应用使用的目标对应关系元素。
8.如权利要求1的方法,进一步包括:
(d)从所述旧有应用获得接口组件;
(e)根据旧有接口元素生成中间接口元素,所述旧有接口元素包含在所述接口组件中;以及
(f)将所述中间接口元素转换为由所述目标应用使用的目标接口元素。
9.如权利要求1所述的方法,进一步包括:
(d)从所述旧有应用获得报表组件;
(e)根据旧有报表元素生成中间报表元素,所述旧有报表元素包含在所述报表组件中;以及
(f)将所述中间报表元素转换为由所述目标应用使用的目标报表元素。
10.如权利要求1的方法,进一步包括:
(d)在从所述旧有应用移植到所述目标应用时,对所述第一组件与其他组件进行同步。
11.如权利要求1的方法,进一步包括:
(d)当在将所述旧有元素移植到所述目标元素时检测到错误的时候,调用错误恢复过程。
12.如权利要求2的方法,其中所述第一软件语言由COBOL规范指定。
13.如权利要求1的方法,其中所述旧有应用涉及税务管理***。
14.如权利要求2的方法,进一步包括:
(g)从所述规则组件提取词汇表项,所述词汇表项与所述旧有规则相关联;
(h)将所述中间状态表达与所述词汇表项进行聚集,以形成所述目标规则;
(i)将所述目标规则部署到所述目标应用。
15.一种装置,包括:
存储器;以及
处理器,其访问所述存储器以获得计算机可执行指令,并且执行所述计算机可执行指令,以完成:
(a)从旧有应用获得规则组件,所述旧有应用包含以第一软件语言指定的旧有源代码;
(b)根据旧有规则生成中间状态表达,所述旧有规则包含在所述规则组件中;以及
(c)将所述中间状态表达转换为目标规则,目标应用被配置为执行所述目标规则。
16.如权利要求15的装置,所述处理器进一步执行所述计算机可执行指令,以完成:
(d)从所述旧有应用获得数据组件;
(e)根据旧有数据元素生成中间数据元素,所述旧有数据元素包含在所述数据组件中;以及
(f)将所述中间数据元素转换为目标数据元素,所述目标应用被配置为在执行所述目标规则时使用所述目标数据元素。
17.如权利要求15的装置,所述处理器进一步执行所述计算机可执行指令,以完成:
(d)从所述规则组件提取词汇表项,所述词汇表项与所述旧有规则相关联;
(e)将所述中间状态表达与所述词汇表项进行聚集;以及
(f)将所述目标规则部署到所述目标应用。
18.一种有形计算机可读介质,具有计算机可执行指令,用以执行:
(a)从旧有应用获得规则组件,所述旧有应用包含以第一软件语言指定的旧有源代码;
(b)根据旧有规则生成中间状态表达,所述旧有规则包含在所述规则组件中;以及
(c)将所述中间状态表达转换为目标规则,目标应用被配置为执行所述目标规则。
19.如权利要求18的有形计算机可读介质,进一步配置用于执行:
(d)从所述旧有应用获得数据组件;以及
(e)根据旧有数据元素生成中间数据元素,所述旧有数据元素包含在所述数据组件中;以及
(f)将所述中间数据元素转换为目标数据元素,所述目标应用被配置为使用所述目标数据元素。
20.如权利要求18的有形计算机可读介质,进一步配置用于:
(d)从所述规则组件提取词汇表项,所述词汇表项与所述旧有规则相关联;
(e)将所述中间状态表达与所述词汇表项进行聚集;以及
(f)将所述目标规则部署到所述目标应用。
21.一种转换器,包括:
规则提取器,其从旧有应用的规则组件获得旧有规则,并将所述旧有规则转换为中间状态表达;
规则部署器,其将所述中间状态表达转换为目标规则,并且将所述目标规则部署在目标应用;
数据提取器,其从所述旧有应用的数据组件获得旧有数据元素,并将所述旧有数据元素转换为中间数据元素;以及
数据部署器,其将所述中间数据元素转换为目标数据元素,并且将所述目标数据元素部署在目标应用。
22.如权利要求21的转换器,进一步包括:
词汇表提取器,其从所述规则组件提取词汇表项,所述词汇表项与所述旧有规则相关联;
聚集器,其将所述中间状态表达与所述词汇表项进行聚集,以形成所述目标规则。
23.如权利要求21的转换器,所述中间状态表达包含在XML文件中。
CN200880023789.5A 2007-06-08 2008-06-09 旧有应用的移植 Active CN101689259B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US94278907P 2007-06-08 2007-06-08
US60/942,789 2007-06-08
US12/051,401 US20080306986A1 (en) 2007-06-08 2008-03-19 Migration of Legacy Applications
US12/051,401 2008-03-19
PCT/IB2008/002343 WO2008152515A2 (en) 2007-06-08 2008-06-09 Migration of legacy applications

Publications (2)

Publication Number Publication Date
CN101689259A true CN101689259A (zh) 2010-03-31
CN101689259B CN101689259B (zh) 2015-07-01

Family

ID=40096826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880023789.5A Active CN101689259B (zh) 2007-06-08 2008-06-09 旧有应用的移植

Country Status (9)

Country Link
US (1) US20080306986A1 (zh)
EP (1) EP2156385A2 (zh)
JP (1) JP5346336B2 (zh)
CN (1) CN101689259B (zh)
AU (1) AU2008263492B2 (zh)
BR (1) BRPI0811067A2 (zh)
CA (1) CA2690081C (zh)
MX (1) MX2009013266A (zh)
WO (1) WO2008152515A2 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530422A (zh) * 2013-11-01 2014-01-22 北京金山顶尖科技股份有限公司 软件***生成油气储量报告的方法
CN103729337A (zh) * 2013-12-27 2014-04-16 金蝶软件(中国)有限公司 报表转换方法及装置
CN105786472A (zh) * 2014-12-26 2016-07-20 远光软件股份有限公司 一种基于ecp平台取数函数设置方法及装置
CN105335133B (zh) * 2014-06-18 2018-10-09 国际商业机器公司 用于生成业务规则模型的方法和装置
CN109144374A (zh) * 2018-09-27 2019-01-04 范若愚 基于可视化规则引擎的业务处理方法、***及相关设备
CN109509043A (zh) * 2018-09-06 2019-03-22 航天信息股份有限公司 一种成品油库存数中间状态处理方法及***
IT202200004481A1 (it) 2022-03-09 2023-09-09 Massimo ANELLA Sistema operativo con trasferimento semiautomatico di applicazioni aziendali
IT202200004484A1 (it) 2022-03-09 2023-09-09 Stella System S R L Generatore di finestre di dialogo con sistema operativo e metodo di memorizzazione dati

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683458B2 (en) * 2007-11-30 2014-03-25 Red Hat, Inc. Automatic full install upgrade of a network appliance
US10304095B2 (en) * 2008-02-04 2019-05-28 Thomson Reuters Global Resources Unlimited Company System and method for accounting gateway
US8522202B2 (en) * 2008-04-24 2013-08-27 Visa U.S.A. Inc. System and method for managing computer environment setup requests
WO2009139245A1 (ja) * 2008-05-13 2009-11-19 日本電気株式会社 Xml処理装置、xml処理方法およびxml処理プログラム
US8418164B2 (en) 2008-05-29 2013-04-09 Red Hat, Inc. Image install of a network appliance
US8312437B2 (en) * 2008-12-30 2012-11-13 Microsoft Corporation Structured search in source code
US10354208B2 (en) * 2009-01-27 2019-07-16 Kaseya Limited System and method for defining run books
US8434056B2 (en) 2009-06-17 2013-04-30 Phillip J. Windley Rule engine system controlling devices of disparate types and protocols
US20110087683A1 (en) * 2009-10-08 2011-04-14 Paparella Anthony J Implementation of a software framework/data ark system
CN102117286B (zh) * 2009-12-30 2013-02-06 北大方正集团有限公司 注册表***及运行方法
US9020946B2 (en) 2010-07-12 2015-04-28 Qvinci Software, Llc System and method for compilation of quickbooks accounts data
US8621445B2 (en) * 2010-12-06 2013-12-31 Visualon, Inc. Wrapper for porting a media framework and components to operate with another media framework
US9043764B2 (en) * 2011-03-09 2015-05-26 International Business Machines Corporation Cross-platform compiler for data transforms
US9614678B2 (en) * 2011-06-10 2017-04-04 Dell Products, Lp System and method for extracting device uniqueness to assign a license to the device
US20130019225A1 (en) * 2011-07-11 2013-01-17 Microsoft Corporation Incremental Inferences for Developing Data Models
WO2013123097A1 (en) 2012-02-13 2013-08-22 SkyKick, Inc. Migration project automation, e.g., automated selling, planning, migration and configuration of email systems
US9182963B2 (en) * 2012-06-18 2015-11-10 Syntel, Inc. Computerized migration tool and method
US9110767B2 (en) * 2012-07-09 2015-08-18 Accenture Global Services Limited Cobol reference architecture
US9858624B2 (en) * 2012-10-04 2018-01-02 Qvinci Software, Llc Methods and apparatus for providing data normalization, scalability and maintainability
CN104050161B (zh) 2013-03-11 2017-05-17 Sap欧洲公司 应用和数据服务器的动态桥接
US9607066B1 (en) * 2013-08-21 2017-03-28 Allscripts Software, Llc Systems and methods for data migration
US10860529B2 (en) * 2014-08-11 2020-12-08 Netapp Inc. System and method for planning and configuring a file system migration
US20160041996A1 (en) 2014-08-11 2016-02-11 Netapp, Inc. System and method for developing and implementing a migration plan for migrating a file system
US9412070B2 (en) * 2013-10-10 2016-08-09 International Business Machines Corporation Automatically deriving context when extracting a business rule
US9767103B2 (en) 2013-11-03 2017-09-19 Craig Hurlbut Method and system for formatting data from one software application source into a format compatible for importing into another software application
US20150142804A1 (en) * 2013-11-21 2015-05-21 Here Global B.V. Methods, apparatuses and computer program products for utilizing subtyping to support evolution of data types
US9984173B2 (en) * 2014-02-24 2018-05-29 International Business Machines Corporation Automated value analysis in legacy data
US20150310465A1 (en) * 2014-04-25 2015-10-29 Opower, Inc. Behavioral demand response ranking
US9317266B1 (en) 2014-11-12 2016-04-19 Bank Of America Corporation Leveraging legacy applications for use with modern applications
CN105700860B (zh) * 2014-11-27 2019-11-12 国际商业机器公司 用于生成产品模型的方法和装置
US10324712B1 (en) * 2014-12-24 2019-06-18 Thomas A. Nolan Method and system of migrating legacy code for upgraded systems
US9953070B1 (en) 2015-04-05 2018-04-24 Simply Data Now Inc. Enterprise resource planning (ERP) system data extraction, loading, and directing
JP6308169B2 (ja) * 2015-05-20 2018-04-11 コニカミノルタ株式会社 文書変換プログラム及び文書変換方法
CN106325902B (zh) * 2015-06-24 2020-09-15 中兴通讯股份有限公司 数据库软件升级检测方法及装置
US20170060974A1 (en) * 2015-08-31 2017-03-02 Jade Global, Inc. Automated conversion tool for facilitating migration between data integration products
US10296594B1 (en) 2015-12-28 2019-05-21 EMC IP Holding Company LLC Cloud-aware snapshot difference determination
US11023433B1 (en) * 2015-12-31 2021-06-01 Emc Corporation Systems and methods for bi-directional replication of cloud tiered data across incompatible clusters
US10162611B2 (en) 2016-01-04 2018-12-25 Syntel, Inc. Method and apparatus for business rule extraction
US10089090B2 (en) 2016-06-07 2018-10-02 Honeywell International Inc. System and method for facilitating dynamic remapping of absolute addresses during software migration
US10627993B2 (en) * 2016-08-08 2020-04-21 Microsoft Technology Licensing, Llc Interacting with a clipboard store
US11625662B2 (en) 2016-09-22 2023-04-11 Qvinci Software, Llc Methods and apparatus for the manipulating and providing of anonymized data collected from a plurality of sources
US20180191825A1 (en) * 2016-12-30 2018-07-05 Cerner Innovation, Inc. Migrating, editing, and creating content between different collaboration systems
US10860530B2 (en) * 2017-03-14 2020-12-08 Wipro Limited Method and system for migrating automation assets in an enterprise system
US10606573B2 (en) 2017-06-07 2020-03-31 Syntel, Inc. System and method for computer language migration using a re-architecture tool for decomposing a legacy system and recomposing a modernized system
US10789265B2 (en) * 2017-12-22 2020-09-29 Accenture Global Solutions Limited Data migration system
US10691434B2 (en) 2018-02-09 2020-06-23 Macrosoft, Inc. System and method for converting a first programming language application to a second programming language application
US10877737B2 (en) * 2018-12-26 2020-12-29 Paypal, Inc. Automatic translation of computer code
CN113966651B (zh) 2019-05-27 2024-03-29 赛多纳西斯***有限公司 用于具有最小流量影响的网络迁移的***和方法
EP3748518A1 (en) * 2019-06-06 2020-12-09 Siemens Aktiengesellschaft Designing and building an automation system to perform rule-based transformations on complex technical systems
US11442957B2 (en) * 2019-09-03 2022-09-13 Sap Se Cloud-based fiscal year variant conversion
CN112465619B (zh) * 2020-12-30 2024-04-23 广东金赋科技股份有限公司 基于数据转换与一键录入金税三期***的办税方法及装置
CN113157257B (zh) * 2021-04-12 2024-03-29 山东省城市商业银行合作联盟有限公司 针对银行***的快速开发装置
US11989541B2 (en) * 2021-10-04 2024-05-21 Target Brands, Inc. Deployment migration tool with decoding capabilities

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1125990A (zh) * 1993-05-10 1996-07-03 思想软件公司 软件自动分析的方法与装置
US20030069758A1 (en) * 2001-10-10 2003-04-10 Anderson Laura M. System and method for use in providing a healthcare information database
US20060041862A1 (en) * 2004-08-23 2006-02-23 Clientsoft, Inc. System and method for migrating applications from a legacy system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263280A (ja) * 1995-03-24 1996-10-11 Mitsubishi Electric Corp 処理移行方法
US6064983A (en) * 1997-03-21 2000-05-16 Koehler Consulting, Inc. System for performing tax computations
JPH1115655A (ja) * 1997-06-13 1999-01-22 Texas Instr Software Ireland Ltd モデルをベースとしない応用移行方法及びシステム
US7502752B1 (en) * 1997-08-07 2009-03-10 Citicorp Development Center, Inc. System and method for delivering financial services
US6151608A (en) * 1998-04-07 2000-11-21 Crystallize, Inc. Method and system for migrating data
US6601233B1 (en) * 1999-07-30 2003-07-29 Accenture Llp Business components framework
US7350708B2 (en) * 2000-01-03 2008-04-01 Tripletail Ventures, Inc. Method for data interchange
US7111233B1 (en) * 2000-03-09 2006-09-19 Electronic Data Systems Corporation Method and system for applying XML schema
US20030105688A1 (en) * 2001-12-05 2003-06-05 Brown Owen H. Secure digital escrow account transactions system and method
JP2004038297A (ja) * 2002-06-28 2004-02-05 Jcreation Co Ltd プログラム書式変換装置および変換プログラム
WO2004077216A2 (en) * 2003-01-30 2004-09-10 Vaman Technologies (R & D) Limited System and method for heterogeneous data migration in real-time
US20080320054A1 (en) * 2003-04-09 2008-12-25 Cindy Howard Database and Software Conversion System and Method
US20040225512A1 (en) * 2003-05-08 2004-11-11 David Armes System and method for vertical software solutions
EP1680741B1 (en) * 2003-11-04 2012-09-05 Kimberly-Clark Worldwide, Inc. Testing tool for complex component based software systems
US7823120B2 (en) * 2004-03-02 2010-10-26 Metaphor Vision Ltd. Device, system and method for accelerated modeling
US20060031820A1 (en) * 2004-08-09 2006-02-09 Aizhong Li Method for program transformation and apparatus for COBOL to Java program transformation
US20060129769A1 (en) * 2004-12-09 2006-06-15 Shaofei Chen System and method for migration to manufactured information handling systems
US7853961B2 (en) * 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
EP2076874A4 (en) * 2006-05-13 2011-03-09 Sap Ag DERIVED CONSISTENT SET OF INTERFACES DERIVED FROM A BUSINESS OBJECT MODEL
US20070288247A1 (en) * 2006-06-11 2007-12-13 Michael Mackay Digital life server

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1125990A (zh) * 1993-05-10 1996-07-03 思想软件公司 软件自动分析的方法与装置
US20030069758A1 (en) * 2001-10-10 2003-04-10 Anderson Laura M. System and method for use in providing a healthcare information database
US20060041862A1 (en) * 2004-08-23 2006-02-23 Clientsoft, Inc. System and method for migrating applications from a legacy system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530422A (zh) * 2013-11-01 2014-01-22 北京金山顶尖科技股份有限公司 软件***生成油气储量报告的方法
CN103729337A (zh) * 2013-12-27 2014-04-16 金蝶软件(中国)有限公司 报表转换方法及装置
CN103729337B (zh) * 2013-12-27 2018-01-12 金蝶软件(中国)有限公司 报表转换方法及装置
CN105335133B (zh) * 2014-06-18 2018-10-09 国际商业机器公司 用于生成业务规则模型的方法和装置
CN105786472A (zh) * 2014-12-26 2016-07-20 远光软件股份有限公司 一种基于ecp平台取数函数设置方法及装置
CN105786472B (zh) * 2014-12-26 2019-05-10 远光软件股份有限公司 一种基于ecp平台取数函数设置方法及装置
CN109509043A (zh) * 2018-09-06 2019-03-22 航天信息股份有限公司 一种成品油库存数中间状态处理方法及***
CN109144374A (zh) * 2018-09-27 2019-01-04 范若愚 基于可视化规则引擎的业务处理方法、***及相关设备
IT202200004481A1 (it) 2022-03-09 2023-09-09 Massimo ANELLA Sistema operativo con trasferimento semiautomatico di applicazioni aziendali
IT202200004484A1 (it) 2022-03-09 2023-09-09 Stella System S R L Generatore di finestre di dialogo con sistema operativo e metodo di memorizzazione dati

Also Published As

Publication number Publication date
CA2690081A1 (en) 2008-12-18
WO2008152515A3 (en) 2009-08-20
JP5346336B2 (ja) 2013-11-20
CN101689259B (zh) 2015-07-01
AU2008263492A1 (en) 2008-12-18
MX2009013266A (es) 2010-06-07
AU2008263492A2 (en) 2010-10-28
CA2690081C (en) 2017-12-19
WO2008152515A2 (en) 2008-12-18
JP2010530575A (ja) 2010-09-09
EP2156385A2 (en) 2010-02-24
AU2008263492B2 (en) 2013-01-17
BRPI0811067A2 (pt) 2014-12-02
US20080306986A1 (en) 2008-12-11

Similar Documents

Publication Publication Date Title
CN101689259B (zh) 旧有应用的移植
US8141029B2 (en) Method and system for executing a data integration application using executable units that operate independently of each other
US8060553B2 (en) Service oriented architecture for a transformation function in a data integration platform
US7870016B2 (en) Report management system
US8954375B2 (en) Method and system for developing data integration applications with reusable semantic types to represent and process application data
US7814142B2 (en) User interface service for a services oriented architecture in a data integration platform
US7814470B2 (en) Multiple service bindings for a real time data integration service
US8041760B2 (en) Service oriented architecture for a loading function in a data integration platform
EP1843259A2 (en) Packaged warehouse solution system
US20060069717A1 (en) Security service for a services oriented architecture in a data integration platform
US20050240354A1 (en) Service oriented architecture for an extract function in a data integration platform
US20050262189A1 (en) Server-side application programming interface for a real time data integration service
US20050240592A1 (en) Real time data integration for supply chain management
US20050262190A1 (en) Client side interface for real time data integration jobs
JP2008536210A (ja) モバイルデータシステム用モジュールアプリケーション
JP2004535021A (ja) 再利用可能なソフトウェア資産の管理
WO2001029711A1 (en) System for integrating data among heterogeneous systems
US20020052791A1 (en) Remote transaction tracking and financial package link
Fong Successful Implementation of Model Driven Architecture
Imtihan et al. Critical Factors in Ensuring the Success of Implementing Open Source ERP: Case Study in Malaysian Small Medium Enterprise
Kofler Visual Basic. NET and C#
Kuta Enterprise Interceptor: A framework for applications interchangeability
Fong MDA Success: MDA Implementation in a Bank
Klimavicius et al. Applying MDA and universal data models for data warehouse modeling
GB2414572A (en) Aggregating access to disparate data and service systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ACCENTURE GLOBAL SERVICES GMBH

Free format text: FORMER OWNER: ACCENTURE INTERNATIONAL CO., LTD.

Effective date: 20101207

Owner name: ACCENTURE INTERNATIONAL CO., LTD.

Free format text: FORMER OWNER: ACCENTURE GLOBAL SERVICES GMBH

Effective date: 20101207

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: SCHAFFHAUSEN, SWITZERLAND TO: LUXEMBOURG

Free format text: CORRECT: ADDRESS; FROM: LUXEMBOURG TO: DUBLIN, IRELAND

TA01 Transfer of patent application right

Effective date of registration: 20101207

Address after: Dublin, Ireland

Applicant after: ACCENTURE GLOBAL SERVICES Ltd.

Address before: Luxemburg Luxemburg

Applicant before: Accenture international LLC

Effective date of registration: 20101207

Address after: Luxemburg Luxemburg

Applicant after: Accenture international LLC

Address before: Schaffhausen

Applicant before: ACCENTURE GLOBAL SERVICES Ltd.

C14 Grant of patent or utility model
GR01 Patent grant