2007年6月16日
早在三周前,就已经收集了所有有关Cross-Reference Functoid的资源,虽然现在看来,它并不是很难,但想真正的应用它,还是需要花费一些心思的研究一下,不过,托了三周时间,还是写完了。任务目标1.数据如何导入2.使用Get Application ID Functoid3.使用Get Common ID Functoid4.测试Mapping5.总结应该场景一. 数据导入
就象前面的《[BTS]BizTalk学习之Functoid篇(Database Lookup) 》一样,Cross-Reference也是需要数据库表的,只不过,它的数据定义有自己的规则,并且数据是保存在BizTalkMgmtDB中,表以xref_开头。定义Application Type数据ApplicationType:应用类型,可以理解成应用程序名或系统名。我是程序员,我把它当成类名(Class MyClass)这个名称必须是唯一的,不能重复。下面是一个AppType的定义文件。定义AppInstance数据instance:应用实例,一个应用的实例名,也必须是唯一的。type:就是前面我们定义的应用名称我理解成一个类的实例(MyClass c1 = new MyClass())数据定义文件如下: 定义关联name:关联的名称(没想好怎么说) 定义具体的数据commonID:通用ID号appID:应用ID号我理解成类中的一个索引。在后面,我们需要这需ID,来相互转换。数据定义文件如下: 定义导入数据文件内容比较简单,对应相应的文件路径就可以了。 执行导入指令BTS提供了BTSXRefImport.exe工具。 导入后,数据可以在BTSMgmtDB中找到。我简单使用了一个视图,显示它们的关系和数据。 二 开始定义Schema和Mapping定义输入Schema。 输出的Schema 创建一个Mapping文件,托入一个Get Application ID Functoid。Functoid中的赋值 使用先前网友给我提的意思,直接用Mapping中的Test功能来测试。 定义一个输入消息实例 执行测试后执行结果如下: 如果我用数据库查询的方式显示一下,就是下面的样子。 Get Application ID 就是取上面视图中appID的值,而Get Common ID就是取commonID的值 。下面列举了三次执行结果。为了直观一些,我都放在一起了。 Get Common ID 测试, 与Get Application ID的方式差不多,这里,只需要修改一下输入数据, 修改Mapping中的functoid,这里就不再详细说明了。看看图就懂了。 测试结果如下,相当于是Get Application ID的反操作。
总结
Cross-Reference适合应用于一个消息中某节点的值,在不同应用程序或系统中的显示值不一至时的映射中。比如都是表示优先级的节点,可能在App1中用1,2,3,4,5表示;在App2中用最高,高,一般,低,极低;当你要从App1的消息映射成App2的消息时,用Cross-Reference是最适合的了。
经过测试,直接修改数据库中的记录后,新的数据可以直接被Mapping中使用。感谢网友 upzone 的 《Cross Reference Functoid 》
posted @ 2007-06-16 00:28 西煞魄工人 阅读(1285) | 评论 (1) | 编辑
Powered by: 博客园 Copyright © 西煞魄工人