[BTS]BizTalk学习之Functoid篇(ID CrossReferences)

        早在三周前,就已经收集了所有有关Cross-Reference Functoid的资源,虽然现在看来,它并不是很难,但想真正的应用它,还是需要花费一些心思的研究一下,不过,托了三周时间,还是写完了


任务目标

1.数据如何导入
2.使用Get Application ID Functoid
3.使用Get Common ID Functoid
4.测试Mapping
5.总结应该场景


一. 数据导入

就象前面的《[BTS]BizTalk学习之Functoid篇(Database Lookup) 》一样,Cross-Reference也是需要数据库表的,只不过,它的数据定义有自己的规则,并且数据是保存在BizTalkMgmtDB中,表以xref_开头。

定义Application Type数据

ApplicationType:应用类型,可以理解成应用程序名或系统名。
我是程序员,我把它当成类名(Class MyClass)
这个名称必须是唯一的,不能重复。
下面是一个AppType的定义文件。

BizTalk Functoid ID Cross-References



定义AppInstance数据

instance:应用实例,一个应用的实例名,也必须是唯一的。
type:就是前面我们定义的应用名称
我理解成一个类的实例(MyClass c1 = new MyClass())
数据定义文件如下:

BizTalk Functoid ID Cross-References 


定义关联

name:关联的名称
(没想好怎么说)

BizTalk Functoid ID Cross-References 


定义具体的数据

commonID:通用ID号
appID:应用ID号
我理解成类中的一个索引。
在后面,我们需要这需ID,来相互转换。
数据定义文件如下:
BizTalk Functoid ID Cross-References 


定义导入数据文件

内容比较简单,对应相应的文件路径就可以了。

BizTalk Functoid ID Cross-References
 

执行导入指令

BTS提供了BTSXRefImport.exe工具。

BizTalk Functoid ID Cross-References 

导入后,数据可以在BTSMgmtDB中找到。我简单使用了一个视图,显示它们的关系和数据。

BizTalk Functoid ID Cross-References
 

二 开始定义Schema和Mapping

定义输入Schema。

BizTalk Functoid ID Cross-References 

输出的Schema
BizTalk Functoid ID Cross-References 

创建一个Mapping文件,托入一个Get Application ID Functoid。



Functoid中的赋值

BizTalk Functoid ID Cross-References 

使用先前网友给我提的意思,直接用Mapping中的Test功能来测试。

BizTalk Functoid ID Cross-References 

定义一个输入消息实例

BizTalk Functoid ID Cross-References 

执行测试后执行结果如下:

BizTalk Functoid ID Cross-References 

如果我用数据库查询的方式显示一下,就是下面的样子。

BizTalk Functoid ID Cross-References
 
Get Application ID 就是取上面视图中appID的值,而Get Common ID就是取commonID的值 。

下面列举了三次执行结果。为了直观一些,我都放在一起了。
BizTalk Functoid ID Cross-References
 

Get Common ID 测试, 与Get Application ID的方式差不多,这里,只需要修改一下输入数据, 修改Mapping中的functoid,这里就不再详细说明了。
看看图就懂了。

BizTalk Functoid ID Cross-References
BizTalk Functoid ID Cross-References
BizTalk Functoid ID Cross-References 

测试结果如下,相当于是Get Application ID的反操作。
BizTalk Functoid ID Cross-References

总结

        Cross-Reference适合应用于一个消息中某节点的值,在不同应用程序或系统中的显示值不一至时的映射中。
比如都是表示优先级的节点,可能在App1中用1,2,3,4,5表示;在App2中用最高,高,一般,低,极低;
当你要从App1的消息映射成App2的消息时,用Cross-Reference是最适合的了。

        经过测试,直接修改数据库中的记录后,新的数据可以直接被Mapping中使用。


感谢

网友 upzone《Cross Reference Functoid 》


原文地址:https://www.cnblogs.com/xuzhong/p/785331.html