montaque

小碗喝酒,小口吃肉

博客园 首页 新随笔 联系 订阅 管理

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)

image

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

image

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

image

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

image

 

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

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

image

新建一个Activity,叫做HelloBamActivity.

image

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

image

选中我们的视图

image

然后选中所有的Column

image

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

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

image

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

image

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

image

然后定义测量指标

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

image

就这样吧,一直Next。

image

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

image

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

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

image

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

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

image

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

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

image

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

image

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就会看到数据了,多运行几次数据就可以看到更多的结果

image

Olap 聚合

image

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

 

 

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

posted on 2008-05-24 08:25  montaque  阅读(1830)  评论(1编辑  收藏  举报