做过这样一个试验,RosettaNet Signature 和Encrypt 证书 只需要在Partner Public key for Sign ,Encrypt里配置,这个和BizTalk Group里配 证书没有关系.
re: 小记,装了SQL Server 2008 upzone 2008-08-16 13:59
发现还有几个问题,
1.我把数据库导成90格式,也就是SQL 2005的数据库格式,结果他把View全部建成了表,我说怎么找不到View,而且Create View时总是说已经存在对象的呢, 也许是什么选项需要修改一下。
2.Create new Database with 90 file option(Sql 2005) in Sql 2008 SSMS, then backup and restore in SQL 2005, but failed, file format error.
郁闷.
re: SQL Adapter 访问远端数据库 upzone 2008-04-05 20:59
对于克隆机,MSDTC 启动失败,在一台机器上执行,msdtc -uninstall,重启机器,执行msdtc -install,设置msdtc 服务自动启动.
expression中好像不是所有的xpath表达式都支持吧,exists我试下来不支持
The BizTalk rules engine executes higher-priority rules first. Since the promotional shipping rate rule should override the preferred shipper rule, it must execute after the preferred shipper rule and must have a lower priority.
The BizTalk rules engine executes high-priority rules first. Consequently, lower-priority rules execute after higher-priority ones and potentially can override the results of higher-priority rules. The BizTalk rules engine may execute rules with the same priority in any order. Remember that the priority of rules will affect the order BizTalk executes them in and has no direct effect on the importance of the rule's actions.
关于重试次数和重试间隔问题,默认重试次数3次,每次间隔5分钟,要等到全部重试完,出错了才能有DeliveryFailureException异常,也就是时间是3*5=15min,要等15分钟才能有NACK
多条消息处理,一条出错,就会全部回滚,这会导致一个Orchestration Suspended
0xC0C01B4C
The instance completed without consuming all of its messages. The instance and its unconsumed messages have been suspended.
关于重试次数和重试间隔问题,默认重试次数3次,每次间隔5分钟,要等到全部重试完,出错了才能有DeliveryFailureException异常,也就是时间是3*5=15min,要等15分钟才能有NACK
问一下如果存储过程执行出错怎么处理?
我尝试了用NACK,但是不起作用。
还有如果一条出错,全部回滚,有没有好的方法做Recoverable啊
最近在考虑如果调用存储过程出错,怎么处理,在试验NACK
同时也发现如果一个出错,就会全部回滚,这个比较郁闷,还有他的事务性,不知道如何?
Restrictions
The following types of pipelines can not be executed from within an orchestration:
Transactional pipelines
Recoverable pipelines
Pipelines which call the BAM interceptor API (a NotSupportedException will be thrown).
The same pipeline instance cannot be executed in different branches of the parallel shape unless it is placed in a synchronized scope in every branch.
Existing pipelines (assemblies) that were built against the BizTalk Server 2006 SDK. If this same pipeline is rebuilt against the BizTalk Server 2006 SDK, and it is not restricted from execution by an orchestration for any other reasons, then it can be called from within an orchestration.
没有订阅者,这种问题最常见了,一般是Schema和Instance不匹配的问题
解决了,原来是XmlTransmit pipeline搞的鬼, 如果设为Passthrough就好了,我想XmlTransmit 里有拆分操作吧,感谢kent
http://www.cnblogs.com/chnking/archive/2007/01/30/634875.html
不是自己写的啦,转载的,自己部署时候发现问题查到的,转载的,FW
如果用存储过程,在运行向导时for xml auto,xmldata,向导完后,去掉,xmldata
比如说这个可以解决我在做Map DBLookup时候 ConnectionString 不至于硬编码
而且他可以在Orchestration里的Expression 中使用,
以前Orchestration中要访问数据库,一般是在BTSNTSvc.exe.config中加连接字符串配置
我一般会用Orchestration订阅BTS.ACKType="NACK"消息
然后在Expression中用xpath读取其中的有用信息,Track.WriteLine出来
System.Diagnostics.Trace.WriteLine(xpath(NACKMsg.NACKPart,"string(/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='Fault']/*[local-name()='faultstring']/text())"));
我一直想知道ACK消息导出来有什么用处, < S t r i n g \ >
这种数据一直不知道怎么利用,还是就是看看而已?
我也过,莫名其妙 Timer停掉了,搞不清楚怎么回事
Execute 函数返回IBaseMessage对象,这个对象展现所有消息处理的部份(比如说消息内容和消息上下文--Message Content,Context). 你可以对消息或消息上下文执行任何操作,如果你需要在最后返回IBaseMessage 对象. 在消息被BizTalk处理通过管道时候,是以流的方式出现,这比传入整个消息要好的多. 另外的,消息通过管道时候是只读的数据对象. 如果你想对消息内容做些改变,可以执行以下操作:
1.创建一个内存流对象用来保持需要更新的消息内容或者copy一份inbound 消息. 请记住inbound 消息是只读的,你需要新建一个容器来对inbound 消息执行更新操作. 这个新创建的内存流对象就是我们所需要的执行消息更新的容器.
2.处理inbound 消息. 最简单的方法就是把stream copy到一个字符串对象,然后装载到XmlDocument 对象中.然而,对于产品级的解决方案来说,并不推荐使用XmlDocument对象. 更好的方法就是使用stream reader 方法来操作inbound 流. 可以考虑一下几种方法来操作inbound 流:
1.优先使用Stream.Read() 来处理消息内容
2.第二可以使用XmlReader.Read()
3.最后一种方案可以使用Xml DOM对象,由于性能问题,并不推荐使用.特别指出的是,如果要处理大消息,不要把整个消息装入DOM对象处理
3.设置message body part. 处理消息后,必须要把更新后的消息返回. 如果你使用了内存流对象, 可以将流对象赋給 IBaseMessage.Data对象. 记住要回滚流的起点,以确保可以传入整个流而不是流的结尾. pipeline 自己不会试图回滚提点.
4.把流对象加到resource tracker中,如果你创建了一个新的内存流对象,把他加入IPipelineContext.Resourcetracker 中方便清除
Pipeline 会 在消息进入BizTalk MessageBox 或消息发送出去之前 执行. 可能会有这些情景需要复杂的操作,数据验证,或者和.Net对象的互操作. 这时候需要实现custom pipeline组件提供灵活的操作逻辑.
Pipeline中最重要的函数是IComponent.Execute函数. 其他的接口 负责设计时和组件互操作.
由于inbound 消息是只读的, 操作inbound 消息需要拷贝一份 inbound 消息.在内存流返回到IBaseMessage.Data对象之前,它必须要 回滚到流的起点,BizTalk pipeline引擎自己不会执行这个操作的. 你应该把流对象加到pipeline resource tracker 中来清除内存流对象
有人问过我Transform 和LoadXml 性能有何差别, 各自优弊在哪里
它们肯定有适用不适用的地方,
希望交流
BizTalk allows serialisable .NET classes to be used as message types in BizTalk orchestrations. You can use tools such as XSD.exe to generate XML-Serialisable classes, or use the BinaryFormatter, or your own custom formatter, to perform serialisation and de-serialisation.
The may be benefits in some cases in using .NET classes as opposed to XSD types for BizTalk orchestration messages. Here are some potential reasons:-
• Allow orchestrations to directly process any message content type, including non-XML. Converting non-XML content to XML is a more common approach (supported, for example, by the FlatFile Disassembler) but custom classes are the only viable approach in some situations.
• 'Smart' messages. You can build message-specific business logic into your message types. You would typically do this as an alternative to handing off your orchestration code to external ‘helper’ code. This approach is more object-orientated and structured. There are lots of potential uses, including efficient message validation, cleansing, enrichment, transformation etc. Of course, this overlaps with what you might do with maps, functoids etc., and there are some obvious pros and cons here. Maps may be more maintainable and easier to change, but may be less efficient and, in some cases, harder to code.
• Easier message construction. If you are constructing messages in an orchestration, they can sometimes be easier to build than using XML. You can implement Factory design patterns on your .NET classes for this purpose.
• Easier to handle in the Rules Engine. It is fundamentally easier, and generally more efficient, to assert .NET objects as facts instead of XML documents in the Microsoft BRE. For orchestrations that make heavy use of the BRE, this can be beneficial.
• With help, messages can be easier and more efficient to enumerate. If your orchestration does a lot of looping through message content, then you can fairly easily build dehydration-safe enumeration into your classes (just call .MoveNext() in the 'while' condition of your loop). However, note the following:-
a) You generally have to enumerate variables rather than messages - i.e., first assign your message to a variable of the same .NET type. This is because, assuming you are using XML-serialisable classes for your message types, BizTalk will use the XML Serialiser to serialise the orchestration messages, but will use the BinaryFormatter to serialise your orchestration variables. Unless you are willing to add additional elements/attributes to your XML schema in order to support the serialisation of enumeration state, you will want BizTalk to use the BinaryFormatter to serialise all the state for your .NET-based messages.
b) It is easy to implement dehydration-safe enumeration. It is easy to implement thread-safe enumeration. It is rather harder to implement both together! However, it can be done. Microsoft-supplied .NET enumerators are not thread safe. There are situations in BizTalk orchestration where thread safe enumeration can be very useful, although you can generally avoid this with care.
c) If you find that your orchestration is doing a lot of enumeration over messages/objects with loops inside loops, and loops that span parent and child orchestrations, and especially if you are doing row-by-row validation and/or generating new message content within these loops, this may indicate that your logic would be better off implemented in a forward-chaining rules engine. This is a big subject, and if you are not familiar with forward-chaining engines such as the Microsoft BRE, then clearly it may be difficult to make this call. However, you should be aware of your options.
If you use XSD.exe (or some equivalent) and partial classes to create XML-serialisable .NET classes, you will find that there is fairly smooth two-way compatibility between the worlds of XSD and .NET orchestration message types. You often may need both XSD schemas and.NET classes for the same message type, and so may need to use custom pipelines to configure the XMLDisassember to select the XSD schema class.
If you want to pass an XML-serialisable .NET message through a Transform, you will need to assign it to an equivalent XSD-based orchestration message first.
There appears to be a 'bug' in the current version of Visual Studio 2005 which sometimes prevents the redeployment of BizTalk projects after a recompile of non-BizTalk code contained in the same solution. Visual Studio displays a spurious compile-time error claiming that an attempt is being made to use a non-Xml serialisable message type on an orchestration port. If you simply close and re-start Visual Studio, you can compile and re-deploy your BizTalk application. The problem appears to be preventable by placing all non-BizTalk code in a different solution. It does not appear to be related to the use of partial classes, and is not due to the common mistakes made when creating Xml serialisable classes (e.g., the lack of a default constructor). Because of this problem, it is probably better to always Receive and Send messages in orchestrations using an XSD-based message type, and then assign messages internally to a corresponding .NET message or variable for processing. This was the only practical approach in the original release of BTS 2004. In that case, there was a bug (fixed in SP1) which mean that subscriptions were not created correctly by orchestration Receive ports when using XML-serialisable .NET classes.
If you want to look at our generated C# code to see how the orchestration class interacts with the orchestration engine, you can use an undocumented registry setting. Add a registry key named BizTalkProject at HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0 for Visual Studio 2005. If you are using BizTalk 2004 and Visual Studio .NET 2003, the key is HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1. Next, create a DWORD value named GenerateCSFiles and set it to 1. If you rebuild your project, you will see C# files in your project directory.
re: 一点挫折[未登录] upzone 2007-03-26 13:10
什么有害信息,说说看呢.
不要难过,开心一点
我想应该是随便吧,不过我是用的带SP1 的盘
Supported Operating Systems: Windows Server 2003; Windows Server 2003 R2 (32-Bit x86); Windows Server 2003 Service Pack 1; Windows Small Business Server 2003
我所知道的R2就是MMC升到3.0和.Net Framework升级到2.0,装R2必须要打SP1补丁,R2和SP2没有什么关系的
我提示磁盘空间不足,后来用WinRAR解开了,直接安装里面的 文件
re: 我也说说金袁之争 upzone 2006-11-17 11:18
帅帅
Blog名: upzone
MSN: csharpbs@hotmail.com
Email: csharpbs@gmail.com
最感兴趣的方向: .NET企业架构和应用、BizTalk
re: 异步执行的返回值... upzone 2006-06-02 11:37
毛利毛利东
re: 最近用到的一些方法技巧 upzone 2006-05-24 16:15
public string[] HumanScan(string receiveStr)
{
string[] retStr = null;
Regex reg = new Regex(@"!human ([^ ]*) (.*)", RegexOptions.Singleline);
Match match = reg.Match(receiveStr);
//Assert.IsTrue(match.Groups.Count == 3);
if (match.Success)
{
if (match.Groups.Count >= 3)
{
string mail = match.Groups[1].Value;
string body = match.Groups[2].Value;
retStr=new string[]{mail,body};
//Assert.IsTrue(mail == "csharpbs@hotmail.com");
//Assert.IsTrue(body == "tks very much");
}
else
{
retStr = null;
//throw new Exception("Error:group:" + match.Groups.Count.ToString());
}
}
return retStr;
}