Biztalk 2006 R2的BAM,允许我们很方便的让既有系统和WCF-based 系统,通过配置或者API的方式。把程序运行过程中的关键数据库push给BAM。 允许业务人员通过BAM的portal 来集中察看,甚至做分析。接下来我们首先Enable Biztalk的BAM,然后定义一个简单的活动模型。然后通过程序APi,把数据喂给他。

 

首先要Enable BAM。 BAM跟BAS不一样,不依赖Sharepoint,它是基于asp.net 2.0的一个简单web应用。只要有IIS就可以,操作系统vista也可以。另外如果要enable OLAP的分析的话,需要安装SQLServer分析服务,还有集成服务(有几个package来partation大的活动表)。如果使用alert,需要安装Notification服务。

安装的时候,选择BAM Client( Excel add-in 来定义Activity,BAM Event,就是WCF/WF的interceptor模型,Alert 是基于SQL Notification server 的provider)

Hello, Biztalk 2006 R2 BAM

然后配置BAM,如果你需要OLAP聚合的话,选中下面的选项。他会在分析服务中建立数据库

Hello, Biztalk 2006 R2 BAM

安装好之后,你可以访问http://localhost/bam 看bam portal ,初始时空的,什么都没有。这个portal允许你自定义,关键选项都在C:\Program Files\Microsoft Biztalk Server\BAMPortal\web.config 里面。另外portal目录下面有连个访问数据库的web service。portal是对web service 的一个展现。

Hello, Biztalk 2006 R2 BAM

接下来你就可以用Excel 来定义一个模型。如果是2007的话,选择Office按钮->Excel Options->Add-in ->Go enable BAM add-in,然后你就看到add-in 选贤卡。

Hello, Biztalk 2006 R2 BAM

 

接下来我们创建一个简单的模型。定义一个模型,用户提交订单,到订单处理结束。每个订单有订单的数量,以及来自哪个州。

Activity的属性:BeginOrder, EndOrder,OrderAmount, State

Hello, Biztalk 2006 R2 BAM

新建一个Activity,叫做HelloBamActivity.

Hello, Biztalk 2006 R2 BAM

Ok之后,Activity就好了。相当于表建好了,然后我们顶一个一个视图(KPIview)

Hello, Biztalk 2006 R2 BAM

选中我们的视图

Hello, Biztalk 2006 R2 BAM

然后选中所有的Column

Hello, Biztalk 2006 R2 BAM

下一步,这里我们可以新建一个Alias,或者duration以及分组,跟写SQL语句一样。

我们定义一个duration,叫做订单处理时间。(processedTime),是结束时间-开始时间。统计一下订单处理了多久。

Hello, Biztalk 2006 R2 BAM

然后我们定义一个聚合,定义维度和测量列

Hello, Biztalk 2006 R2 BAM

新建一个维度,我们以州作为一个维度

Hello, Biztalk 2006 R2 BAM

然后定义测量指标

平均处理时间MProcessedTime,这里的聚合只能有这个五种方式。

Hello, Biztalk 2006 R2 BAM

就这样吧,一直Next。

Hello, Biztalk 2006 R2 BAM

然后我们选中我们的维度和测量值。Excel帮你生成了个模拟数据。

Hello, Biztalk 2006 R2 BAM

然后到Add-in, 点击右边的按钮,告诉我我需要一个分析的olap。

然后点击Export Xml,到处一个Activity的定义文件。放到C:\temp\HelloBamActivity.xml

Hello, Biztalk 2006 R2 BAM

至此,activity就定义好了。接下来我们把它部署到BAM的数据库中。bm.exe 是一个命令行工具,来管理BAM的模型。我们先部署一个activity模型。

C:\Program Files\Microsoft Biztalk Server\Tracking>BM.exe

Hello, Biztalk 2006 R2 BAM

如果部署提醒你Star Schema不存在的话,说明你没有配好分析服务。

这时候你打开Portal ,就可以看到你的视图了。只是没有数据而已,

Hello, Biztalk 2006 R2 BAM

这时候在数据库里面,BamPrimaryImport就建立了一些表和视图。主要是这个Activity的元数据,以及存放实例的表。

Hello, Biztalk 2006 R2 BAM

Select * from dbo.bam_Metadata_Activities

返回activity列表。

 

接下来我们就要用API,往里面写一些关键的业务数据, 比如订单的开始时间,结束时间,以及州和数量。

新建一个Console Application

添加对C:\Program Files\Microsoft Biztalk Server\Tracking\Microsoft.BizTalk.Bam.EventObservation.dll的引用。这个Assembly 包含直接操作BAM的API。

 

我们无非是begin一个Activity,更新他的一些属性,然后退出。

代码如下

 

//begin a Astivity
          string dbConn="server=.;database=BamPrimaryImport;trusted_connection=yes";
          DirectEventStream des = new DirectEventStream(dbConn, 5);

          string activityId=Guid.NewGuid().ToString(); //Activity Id, can be any key
          des.BeginActivity("HelloBamActivity",activityId);

          Debugger.Break();
          //update atribute

          des.UpdateActivity("HelloBamActivity", activityId, "BeginOrder",
              DateTime.Now,"Amount",300,"State","CA");

          des.UpdateActivity("HelloBamActivity", activityId, "EndOrder",DateTime.Now.AddSeconds(10));

          des.EndActivity("HelloBamActivity", activityId);
          des.Flush();
          //end activiity

          Console.ReadLine();

 

如果要查看Trace的话,配置你的app.config,

 

<system.diagnostics>
    <switches>
      <add name="Microsoft.BizTalk.Bam.EventObservation" value="1"/>
    </switches>
    <trace autoflush="true">     
      <listeners>
        <add name="console" type="System.Diagnostics.ConsoleTraceListener"></add>
      </listeners>
    </trace>
  </system.diagnostics>

 

打开Portal就会看到数据了,多运行几次数据就可以看到更多的结果

Hello, Biztalk 2006 R2 BAM

Olap 聚合

Hello, Biztalk 2006 R2 BAM

如果看不到数据,检查一下你的集成服务的package是不是不能正常运行。

 

 

这样,我们可以通过了程序API的方式,把系统的业务数据push到BAM,下次讲一下怎么用配置的方式,让WCF 拦截数据到BAM

相关文章:

  • 2022-12-23
  • 2021-09-05
  • 2022-02-26
  • 2022-01-26
  • 2021-12-17
  • 2022-12-23
  • 2022-01-09
猜你喜欢
  • 2021-08-13
  • 2021-06-19
  • 2022-02-07
  • 2022-02-14
  • 2022-01-03
  • 2022-03-08
  • 2022-01-30
相关资源
相似解决方案