在处理一个相当大的BizTalk 2010项目时,我遇到了这种非常奇怪的行为,并想在这里发布一个解决方案,以防其他人可能会遇到这种情况.
尝试在Visual Studio 2010中的业务流程设计器中打开业务流程时,我注意到在仅文本视图中打开了业务流程,我无法查看业务流程设计器.这仅适用于一个业务流程,项目中的所有其他业务流程都已正确打开.该项目也正确编译,没有任何错误.我右键单击受影响的业务流程,然后选择打开方式 - > BizTalk业务流程设计器.我还点击了Set as Default.然后,我可以按预期在设计模式中查看业务流程.但是,在关闭并重新打开解决方案后,我注意到业务流程再次以纯文本视图打开.
然后我在文本编辑器中打开了.btproj文件并注意到以下内容(这是我的.btproj文件的片段):
<ItemGroup>
<XLang Include="OrderCancel.odx">
<TypeName>OrderCancel</TypeName>
<Namespace>MyNamespace.Orchestrations</Namespace>
<SubType>Designer</SubType>
</XLang>
</ItemGroup>
<ItemGroup>
<XLang Include="OrderModify.odx">
<TypeName>OrderModify</TypeName>
<Namespace>Mynamespace.Orchestrations</Namespace>
</XLang>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
注意标签:
<SubType>Designer</SubType>
Run Code Online (Sandbox Code Playgroud)
我只是删除了SubType标记,保存了.btproj文件并在Visual Studio中重新打开了解决方案,并且业务流程再次正常打开.
我有一个问题 - BizTalk或WF?让我澄清一下,我意识到前三个工件背后的类似技术,并意识到我可以构建它们,但我没有发现它们是内置于WF,所以我试图理解为什么我会使用一个技术优于其他.
转换
BizTalk本身支持的功能非常好,增强的设计人员可以启动,生成模式和地图的能力.此外,我喜欢所有内容都已转换的事实,因为我不必担心我的工作流程中的集成点,因为它始终采用一致的格式,这可以降低我的风险,因为我的集成变异 - 我只需要重构模式和映射.
相比之下,对于WF,我没有内置的豪华,所以我错过了什么或BizTalk在这里有+1?
绑定
绑定是BizTalk中另一个完全封装的功能.我可以将我的工作流设置为具有我想要的任何绑定,因为上述工件意味着在测试期间我可以绑定到文件系统并且在生产期间我可以绑定到服务.
相比之下,对于WF,我没有内置的豪华,所以我错过了什么或BizTalk在这里有+2?
端口/适配器
这很可能是BizTalk中存在的最大工件 - 恕我直言.将物理连接抽象为众多具体实现所需的工作量,特别是在一个非常庞大的组织中,其中一些具体的内容通过基本的文件系统而不是SOAP/REST,以及像IBM Mainframe和MSMQ这样的东西.BizTalk的物理端口适配器在向工作流发送消息之前通过转换自动运行原始数据,非常简单,优雅.
相比之下,对于WF,我没有内置的豪华,所以我错过了什么或BizTalk在这里有+3?
BizTalk未来
最后,我想提一下,根据我的研究,构建BizTalk的同一团队正在构建WF - 这太棒了!此外,微软的长期愿景是这个新的流行词"集成服务器",实际上是一大堆松散耦合的框架,提供了BizTalk今天的功能.由于Azure的努力,这项工作对我来说很有意义 - 我肯定会为此做出贡献.但是,我今天需要实现一个解决方案,这个解决方案将在15年后开始工作,但是如果我利用WF而不是BizTalk,我还需要了解我必须使用哪些部分来组合它.请告诉我你的经历.
biztalk workflow-foundation workflow-foundation-4 biztalk-2010
类定义如下:
public class BizTalkRESTTransmitHandler : IClientMessageInspector
Run Code Online (Sandbox Code Playgroud)
我是这个签名的方法:
public object BeforeSendRequest(ref Message request, IClientChannel channel)
Run Code Online (Sandbox Code Playgroud)
所以我认为我需要操纵通道对象.
原因是这是在BizTalk 2010 SendPort中使用以支持JSON.到目前为止我试过这个:
if (channel.RemoteAddress.Uri.AbsoluteUri == "http://api-stage2.mypartner.com/rest/events/2/"
|| channel.RemoteAddress.Uri.AbsoluteUri == "http://api.mypartner.com/rest/events/2/")
{
//TODO - "boxout" will become a variable obtained by parsing the message
Uri newUri = new Uri(channel.RemoteAddress.Uri.AbsoluteUri + "boxout");
channel.RemoteAddress.Uri = newUri;
}
Run Code Online (Sandbox Code Playgroud)
上面给出了编译错误:"System.ServiceModel.EndpointAddress.Uri"无法分配给它 - 它只是就绪"RemoteAddress似乎也是只读的.
我引用了这些问题,但他们没有使用频道对象. 指定一个URL来Url.AbsoluteUri在ASP.NET和 WCF在运行时更改端点地址 ,但他们似乎没有被处理的通道对象.
更新1:我尝试了以下内容:
//try create new channel to change URL
WebHttpBinding myBinding = new WebHttpBinding();
EndpointAddress myEndpoint = new EndpointAddress(newURL);
ChannelFactory<IClientChannel> myChannelFactory = new …
Run Code Online (Sandbox Code Playgroud) 我遇到了一个慢速(自定义)BizTalk适配器的问题.
每天晚上,应用程序会在几分钟内向MSMQ发送超过10'000条消息.不幸的是,BizTalk需要几个小时来处理它们.
我没有任何编排,只是将消息路由到多方.对于一方,我们必须开发一个自定义适配器,但这个适配器/接口非常慢.所以我认为BizTalk会自动限制整个应用程序,并且只从队列中读取尽可能多的消息,它可以通过这个慢速适配器发送.
因此,MSMQ为空需要几个小时.
如果我停止这个慢速适配器并且例如只启用写入本地文件系统的文件适配器,则需要几秒钟来处理来自MSMQ的数千条消息.
是否可以调整BizTalk以更快地处理传入的消息,并仅限制此发送端口的传出消息?不幸的是,由于一个缓慢的聚会,所有其他方都必须等待消息.
谢谢你的建议!
最好的问候Michael
我在这样的BTDF MSBuild运行中收到警告......
EXEC : warning : If any of the assemblies were previously loaded by a Host Instance,
it may be necessary to restart the Host Instance for changes to take effect.
[C:\Program Files (x86)\Test\1.0\Deployment\Deployment.btdfproj]
Run Code Online (Sandbox Code Playgroud)
......但这些都是"虚假"的警告,这只会让事情变得混乱.
有没有在BTDF/MSBuild运行中禁用这些和其他警告?
我已经阅读了,似乎设置IgnoreStandardErrorWarningFormat
为true,并使用合适的正则表达式CustomWarningRegularExpression
,CustomErrorRegularExpression
可能是这个的答案,但我无法弄清楚如何做到这一点
有什么指针吗?
我正试图在BizTalk 2010上加快速度.近十年来,我一直是.NET Web开发人员.我有一些SQL Server Integration Services的经验,但BizTalk是一个不同的世界.
请指教.
我正在构建一个应用程序,它接收来自遗留应用程序的位置平面文件,以及我需要在第三个应用程序中搜索某些数据然后填满我的数据库的每个细节行.如果文件中存在任何错误形成的行,我需要停止处理并记录格式错误的字符串的行和位置.
至少现在,文件有,最大.50MB.
我很困惑谁最适合这种情况,Biztalk和SSIS有类似的功能,而且我可以看到,两者都适用于这种情况.这是一个我可以很好地利用Biztalk的任务,或者我应该使用ETL解决方案(Integration Services)?
我最近工作的公司开始了一个钻研HL7消息和数据交易世界的项目.我们正在使用BizTalk Server 2010和2010年的BTAHL7加速器,目前HL7 v2已经成功,但现在我们需要接受HL7 v3(CDA R2)文档.这些是我们将接受外部供应商的CCD.
我有来自HL7的完整的.xsd模式,用于CDA R2(所有1541个)但我正在努力弄清楚如何确定哪些模式与我们将接收的消息有关.我必须使用的是来自我们的贸易伙伴的测试CCD消息,而没有其他信息.我已经尝试使用代码和显示名称以及templateId来确定哪些子文档将匹配,因此我可以适当地映射到我们的内部规范格式以进行数据加载,但我正在努力解决这个问题.
我宁愿不在BizTalk中创建一个项目,它包含所有1541个模式来解析和验证这些文件,因为这会使我的地图和转换机制的阅读变得更加困难.有没有HL7 v3和BizTalk经验的人有什么指导我可以根据测试文件中的可用信息识别合适的子模板?
这是标题信息:
<realmCode code="US"/>
<typeId root="XXX" extension="POCD_HD000040"/>
<templateId root="2.16.840.1.113883.10.20.1"/>
<templateId root="2.16.840.1.113883.3.88.11.32.1"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.6"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.2"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.1"/>
<templateId root="2.16.840.1.113883.10.20.3"/>
<templateId root="2.16.840.1.113883.3.88.11.83.1"/>
<id root="1.2.840.113619.21.1.3164884235793924544.1704986688012700"/>
<code code="34133-9" codeSystem="XXX" codeSystemName="LOINC" displayName="Summarization of episode note"/>
<title>XXX</title>
<effectiveTime value="20140110152448-0500"/>
<confidentialityCode code="N" codeSystem="XXX"/><languageCode code="en-US"/>
Run Code Online (Sandbox Code Playgroud) 我使用之前工作过两次的相同过程(痛苦)重新安装了ESB工具包.
但是现在当我尝试在BizTalk管理控制台中启动BizTalk应用程序"Microsoft.Practices.ESB"时,应用程序无法开始显示以下错误:
Could not enlist Send Port 'ALL.Exceptions'.
Exception from HRESULT: 0xC00CE557 (Microsoft.BizTalk.SnapIn.Framework)
Run Code Online (Sandbox Code Playgroud)
我在事件日志中发现了此错误消息:
无法与SQL实例[我的服务器]上的MessageBox BizTalkMsgBoxDb进行通信.
错误代码:0x8004d00e.
可能的原因包括:
1)MessageBox不可用.
2)从此机器到MessageBox的网络链接已关闭.
3)本地计算机或托管此MessageBox的计算机上的DTC配置不正确.
SQL Server似乎运行正常.真的不知道从哪里开始寻找......
似乎我创建的任何新发送或接收端口都不显示任何跟踪,即使我勾选所有跟踪框.我有一个现有的应用程序和接收端口和业务流程跟踪工作,但发送端口跟踪没有.
在同一台机器上,我也尝试创建一个新的应用程序.创建了一个发送和接收端口,根本没有跟踪.我在另一台机器上全新安装biztalk时做了同样的事情,我跟踪了所以我并不疯狂.
我试过了 ...
biztalk sql-server-2008-r2 windows-server-2008-r2 biztalk-2010