更多内容请查看:BizTalk动手实验系列目录
1 课程简介
通过本课程熟悉Orchestration的相关开发与测试技术
2 准备工作
- 熟悉XML、XML Schema、XSLT等相关XML开发技术
- 熟悉.NET相关开发技术
- 新建BizTalk空项目
3 演示
3.1 使用可分辨字段及分支流程
- 打开InputPO Schema,右键选择Promote
- 将total添加到可分辨字段中
- 新建Orchestration -> InMsg,消息类型指向InputPO
- 按如下图所示连接好流程结构,将流程的第一个Receive形状Active属性置为true
- 点击Rule_1,在条件表达式中添加条件判断表达式
InMsg.total >100
- 生成并部署程序
- 配置Orchestration,将逻辑端口部署到物理商端口,接收端口的Pipeline选择XMLReceive
- 启动应用程序,基于InputPO生成的XML消息,复制两个不同的消息,一个消息的total字段小于100,另一个大于100,查看消息是否输出到不同的目录。
3.2 异常补偿
- 修改原有Orchestration,将Scope形状添加到流程中,将Expession及已有的Decide形状拖入Scope,如下图所示
- 在Orchestration View中创建一个int类型的变量
- 将如下代码添加到Expression_1的表达或。
System.Diagnostics.EventLog.WriteEntry("OrchestrationDevDemo","result: "+ result.ToString());
- 右击Scope_1选择新创异常处理
- 将Expession表达式拖入异常管理形状中
- 点击Scope_1的叹号处选择事务类型为Long Running
- 点击CatchException_1在属性窗口中,配置异常对像名称及类型(mscorlib->System->Exception)
- 将以下代码添加到Expession_2中
- 部署应用程序并重启BizTalk实例
- 使用模拟的数据进行测试。在系统日志中有相应的日志信息
3.3 调用(启动)子流程
- 创建一个子流程,只有一个发送形状和发送端口。
- 在子流程里,新添加一个Message类型的消息参数。
- 添加一个分支条件,使用Call或Start Orchestration形状。并配置相应的子流程及输入消息
- 先把BizTalk应用程序全部停止再部署应用(因为Orchestration有依赖关系)
- 测试新的条件是否被应用,及消息是否有输
3.4 使用外部DLL类库
1. 新建Class Library
2. 添加 Class Library 签名和Post Event命令
BizTalk 2016
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\Bin\NETFX 4.6 Tools\gacutil.exe" /i "$(TargetPath)" /F
3. 将如下代码添加到类文件中(参考代码)
namespace ConsoleApplication1
{
[Serializable]
public class Utilities
{
public XmlDocument GenerateFaultMsg(XmlDocument req, XmlDocument resp, System.Exception exp)
{
XmlDocument result = resp;
//XmlNode reqNode = req.SelectSingleNode("/");
//resp.AppendChild(reqNode);
string strResult = "<ns0:ADD_JOB_HISTORYResponse xmlns:ns0=\"http://Microsoft.LobServices.OracleDB/2007/03/HR/Procedure\">"
+ req.InnerXml.Replace("<?xml version=\"1.0\"?>","")
+ "<RESULT xmlns=\"\">F</RESULT>"
+ "<MESSAGE xmlns=\"\"><![CDATA[" + exp.Message + "]]></MESSAGE>"
+ "</ns0:ADD_JOB_HISTORYResponse>" ;
result.LoadXml(strResult);
return result;
}
}
}
4. 在Orchestration中通过新建变量或调用静态方法来执行命令。(静态方法在引用后可直接在下一步的表达式中调用不需要创建变量)
5. 在Orchestration表达式中可以直接调用该方法
6. 如果修改了外部DLL的方法,需要重启Visual Studio的方式使用Orchestration调用新的方法。同时在部署的时候需要注意先编译外部DLL库。
7. 注意部署前需要提前将外部DLL通过添加资源的方式加入到BizTalk的应用程序,这样在导出MSI安装包时可自动部署外部DLL到目标服务器