zoukankan      html  css  js  c++  java
  • BizTalk动手实验(六)Orchestration开发

     更多内容请查看:BizTalk动手实验系列目录

                          BizTalk 开发系列

    1 课程简介

    通过本课程熟悉Orchestration的相关开发与测试技术

    2 准备工作

    1. 熟悉XML、XML Schema、XSLT等相关XML开发技术
    2. 熟悉.NET相关开发技术
    3. 新建BizTalk空项目

    3 演示

    3.1 使用可分辨字段及分支流程

      1. 打开InputPO Schema,右键选择Promote

    clip_image001

      1. 将total添加到可分辨字段中

    clip_image003

      1. 新建Orchestration -> InMsg,消息类型指向InputPO
      2. 按如下图所示连接好流程结构,将流程的第一个Receive形状Active属性置为true

    clip_image004

      1. 点击Rule_1,在条件表达式中添加条件判断表达式

    InMsg.total >100

      1. 生成并部署程序
      2. 配置Orchestration,将逻辑端口部署到物理商端口,接收端口的Pipeline选择XMLReceive

    clip_image006

    1. 启动应用程序,基于InputPO生成的XML消息,复制两个不同的消息,一个消息的total字段小于100,另一个大于100,查看消息是否输出到不同的目录。

    3.2 异常补偿

      1. 修改原有Orchestration,将Scope形状添加到流程中,将Expession及已有的Decide形状拖入Scope,如下图所示

    clip_image007

      1. 在Orchestration View中创建一个int类型的变量

    clip_image008

      1. 将如下代码添加到Expression_1的表达或。
    result = System.Convert.ToInt32(1/InMsg.total);
    System.Diagnostics.EventLog.WriteEntry("OrchestrationDevDemo","result: "+ result.ToString());
      1. 右击Scope_1选择新创异常处理

    clip_image009

      1. 将Expession表达式拖入异常管理形状中

    clip_image010

      1. 点击Scope_1的叹号处选择事务类型为Long Running

    clip_image011

      1. 点击CatchException_1在属性窗口中,配置异常对像名称及类型(mscorlib->System->Exception)

    clip_image012

      1. 将以下代码添加到Expession_2中
    System.Diagnostics.EventLog.WriteEntry("OrchestrationDevDemo","Exception: "+exp.Message);
      1. 部署应用程序并重启BizTalk实例
      2. 使用模拟的数据进行测试。在系统日志中有相应的日志信息

    clip_image013

    3.3 调用(启动)子流程

    1. 创建一个子流程,只有一个发送形状和发送端口。
    2. 在子流程里,新添加一个Message类型的消息参数。
    3. 添加一个分支条件,使用Call或Start Orchestration形状。并配置相应的子流程及输入消息
    4. 先把BizTalk应用程序全部停止再部署应用(因为Orchestration有依赖关系)
    5. 测试新的条件是否被应用,及消息是否有输

    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到目标服务器

     

  • 相关阅读:
    LD_PRELOAD的偷梁换柱之能
    ATOM & Sublime Text 下MarkDown插件功能比较
    存在
    2017年执行计划
    2015年总结以及2016年计划
    2014年总结以及2015年计划
    asp.net MVC中form提交和控制器接受form提交过来的数据
    2013年回顾及2014年计划
    c# XML序列化与反序列化
    Namenode HA原理详解(脑裂)
  • 原文地址:https://www.cnblogs.com/cbcye/p/2293075.html
Copyright © 2011-2022 走看看