我在从BizTalk 2006RC通过ftp发送文件时遇到了一些麻烦。 我努力的部分是创建一个名为“OPA0037”的真实文件,只有一行
"OPA0037;TEST;;;"
它在ftp部分之后不是问题我juste看不到如何从消息创建文件...它只能在业务流程中。
任何帮助任何想法都欢迎!非常感谢!!
答案 0 :(得分:3)
目前尚不清楚你在这里遇到什么问题,所以我将逐步介绍你描述的每一步并涵盖各种选项。希望其中一个点可以解决您的问题。
由于我一直在考虑可能的额外问题,因此该帖子非常复杂 - 我怀疑关键部分将是最后一个使用BizTalk中的FTP传输发送消息
让我们知道你是如何相处的......
在BizTalk中,您永远不会以XML以外的任何格式创建编排消息。
从BizTalk业务流程中创建FlatFile消息需要做的是在设计时创建FlatFile架构,然后在运行时生成此架构的实例,并通过BizTalk发送端口将其发送出去BizTalk FlatFile汇编程序在汇编阶段配置。
FlatFile模式只是一个带有特殊注释的XML模式,它通知BizTalk FlatFile汇编器如何将XML序列化为文本。
因此,在业务流程中创建FlatFile消息实际上与在业务流程中创建任何其他文档格式相同。
那么,如何在BizTalk业务流程中创建新消息?
为了避免重新创建方向盘,here是Matt Meleski关于此主题的相当经典的帖子的链接。
总结一下Matt所说的,要在BizTalk中创建一个新的消息实例,您有四个主要选项:
与大多数事情一样,上面的每个选项都有自己的冗长帖子。
可能对于需要创建简单的单行文档的情况,映射选项(1)或XMLDocument选项(3)将为您提供所需的位置。
我认为这可能是您的问题 - 如何使用指定的文件名在BizTalk中发送FTP消息或FlatFile格式。
有很多方法可以解决这个问题。我会给两个,希望第一个应该工作,但你可以回到第二个。
<强> 1。设置ReceivedFileName并使用%SourceFileName%宏
在研究我的答案时,我并不认为这种方法适用于FTP,但我找到了一个生产示例,我正在这样做。试一试。
在业务流程Construct Message
形状中,添加Message Assignment
形状。
在该消息分配形状中,您可以为平面文件消息设置FILE.ReceivedFileName
属性:
yourFlatFileMessage(FILE.ReceivedFileName) = whateverFileNameYouWant;
这将设置一个上下文属性,当您将静态发送端口连接到业务流程端口时,将使用该属性。在静态发送端口中,使用目标文件名指定FTP适配器,如:
%SourceFileName%的.txt
然后FTP适配器替换%SourceFileName%宏,为您提供像filesFileNameYouWant.txt
这样的文件名在发送端口中,您需要指定一个包含Flatfile格式的FlatFile汇编程序的发送管道。
<强> 2。使用动态发送端口以及对管道的编程调用
如果上述方法不起作用,则需要使用动态发送管道。
问题是要在BizTalk中发送带有指定文件名的FTP消息,您需要使用动态发送端口。使用动态发送端口的但仅限于传递管道,因此无法指定FlatFile汇编程序。
创建一个动态发送端口,用于创建要在编排消息分配形状中跟踪代码的文件名(由Christof Claessens'博客提供):
//Set dynamic ports location:
orchprtSndMyMessagePort(Microsoft.XLANGs.BaseTypes.Address) = "ftp://myserver/mydirectory/myfilename.xml";
//Set context on the message you want to send:
msgMyMessage(FTP.UserName) = "myFTPUsername";
msgMyMessage(FTP.Password) = "myFTPPassword";
msgMyMessage(BTS.RetryCount) = 20;
msgMyMessage(BTS.RetryInterval) = 2;
那么,如何让这个动态发送端口发送一个flatfile格式文件?
讨论了这个技巧here。您需要做的是从Orchestration中调用发送管道(BizTalk 2006中的新功能)。
这样做的代码如下:
//PipeMsg is a variable of type: Microsoft.XLANGs.Pipeline.SendPipelineInputMessages
PipeMsg = new Microsoft.XLANGs.Pipeline.SendPipelineInputMessages();
PipeMsg.Add(<MessageToAssemble>);
Microsoft.XLANGs.Pipeline.XLANGPipelineManager.ExecuteSendPipeline(typeof (<fullyQualifiedNameofSendPipline>),PipeMsg,msg_Output_FF);
然后使用FlatFile格式的文本填充您的业务流程消息msg_OUtput_FF。 BizTalk仍然认为这是一个XML文档,但事实并非如此。当您通过动态发送端口及其直通管道发送出去时,您应该看到flatfile内容。
答案 1 :(得分:1)
也许您可以尝试两种最常见的选项:
请看msdn关于创建平面文件的演练: http://msdn.microsoft.com/en-us/library/aa577898(BTS.20).aspx