灵活使用Script Functoid 增强BizTalk Mapping功能

我们知道Biztalk为 定义Schema之间的映射提供了多种多样的Functoid,可以符合大部分映射的需求,尽管如此还是有些情况Biztalk自带的Functoid 不能完成所需要的映射,一个方法是通过扩展Functoid来实现,另外一个可以通过Script Function通过C#代码帮助实现一些简单的转换功能,下面通过一个简单的例子来说明,我们知道 Iteration 可以把记录的序号映射到目标Schema中:

灵活使用Script Functoid 增强BizTalk Mapping功能_第1张图片

上面的映射可以把InvoiceLine 的序号映射到目标Schema 的 InvoiceLine 的第7个字段(本例是使用的Flat File Schema,实际可以使用任意类型的Schema),映射之后InvoiceLine 的 InvoiceLine_Child7 的值为 1,2,3,4

但如果目标Schema对该字段具有格式要求,比如长度必须为4,从0001-9999,不足四位的以0补足。此时我们就可以借助Script Functoid来实现。在Iteration和目标元素之间添加一个scripts Functoid(如上图)。

双击Scripts 打开其属性窗口:

灵活使用Script Functoid 增强BizTalk Mapping功能_第2张图片可以看到我们只使用了一个输入参数,为Iteration的输出。如果有多个输入,这里则显示多个输入。

然后选择Scripts Functoid Configuration 来编写脚本

灵活使用Script Functoid 增强BizTalk Mapping功能_第3张图片

可以使用不同的脚本语言来编写脚本,这里我们使用C#来编写脚本,函数名称一般为MyConcat ,输入的参数个数由前面所说的输入参数个数决定,本例我们只需一个参数,因此可以使用C#编写如下脚本:

public string MyConcat(string param1)
{
	return param1.PadLeft(4,'0');
}

最后生成的文本文件(Flat File) 的序号格式为0001-9999.
灵活使用Script Functoid 增强BizTalk Mapping功能_第4张图片

你可能感兴趣的:(mapping)