vol.2「XML Web サービスで簡易モニタを作ってみよう」

XML Web サービスから MOM のデータベースにアクセス

公開日: 2004 年 9 月 6 日

河端 善博

MOM 2005 の SDK にも XML Web サービスが提供されていますが、これは、他の製品と MOM 2005 の連携用に作られているようです。また、各種クラス ライブラリも用意されていますが、クラスのドキュメントが執筆時点で完備されていません。そこで、今回はこれらの SDK の機能を利用せず、直接 MOM 2005 のログが蓄積されるデータベースにアクセスすることにしました。

  • クラス: MomState.asmx.cs

  • メソッド: GetSummaryStateMainAndRoleRollup

  • 戻り値: DataSet

XML Web サービス MomMoniService の本体は、MomState.asmx.cs で構成していて、公開しているメソッドは、GetSummaryStateMainAndRoleRollup になります。

このメソッドは、DataSet 型で、2 つのテーブル「StateMain」「StateRoleRollup」を返してきます。テーブルとストアド プロシージャの関係は、次のとおりです。

表 1: GetSummaryStateMainAndRoleRollup の戻す DataSet が含むテーブルの一覧
テーブル名 ストアド プロシージャ名 概要
StateMain p_SummaryStateMain サーバー、ロール別状態
StateRoleRollup p_SummaryStateRoleRollup ロールの一覧
      <p>ストアド プロシージャは、MOM 2005 のデータベース「OnePoint」の中にもともとあるものを利用しています。データベースのテーブルやストアド プロシージャの仕様は、SDK に解説されていますし、自分で SQL Server の Enterprise Manager をつかって解析することもできます。</p>
      <p>私は、Enterprise Manager とプロファイラであたりをつけていきました。プログラムは次のようになります。</p>
    </div>
    <pre xmlns="">
      <code>[WebMethod]

public DataSet GetSummaryStateMainAndRoleRollup(string groupName1, string groupName2, string criteria, string roleIdList, string statusList) { DataSet result = new DataSet(); using (SqlConnection c = new SqlConnection(cs)) { c.Open(); using (SqlCommand cmd = new SqlCommand("p_SummaryStateMain", c)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@GroupName1", groupName1); cmd.Parameters.Add("@GroupName2", groupName2); cmd.Parameters.Add("@Criteria", criteria); cmd.Parameters.Add("@RoleIdList", roleIdList); cmd.Parameters.Add("@StatusList", statusList); using (SqlDataAdapter a = new SqlDataAdapter(cmd)) { a.Fill(result, "StateMain"); } } using (SqlCommand cmd = new SqlCommand("p_SummaryStateRoleRollup", c)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@GroupName1", groupName1); cmd.Parameters.Add("@GroupName2", groupName2); cmd.Parameters.Add("@Criteria", criteria); cmd.Parameters.Add("@RoleIdList", roleIdList); cmd.Parameters.Add("@StatusList", statusList); using (SqlDataAdapter a = new SqlDataAdapter(cmd)) { a.Fill(result, "StateRoleRollup"); } } c.Close(); } return result; }

XML Web サービスができると、図のようにして、参照することができます。

MomMoniService を XML Web サービスとして公開

図 7: MomMoniService を XML Web サービスとして公開

ページのトップへ

目次

著者