SharePoint アドイン製品一覧
SharePoint 2010 開発のステップ・バイ・ステップ
Windows Azure 入門
Windows Azure How-To 集
WCF / WF 入門
環境:.NET Framework 3.0BizTalk Server 2006 R2Visual Studio 2005WCF LOB Adapter SDKBizTalk LOB Adapter Pack (※現在、Beta 版を使用可能です)Oracle 10 g Express EditionOracle Data Access Components (ODAC) 2.0
こんにちは。
今回は、前回までに作成したアダプターを BizTalk Server から使用して動きを確認してみます。
前回までに作成したサンプルだと inbound の処理があまりにもプアーでしたので、今回は、前回作成した Custom Adapter (CustomAdapter1) に加え、BizTalk Adapter Pack に入っている Oracle Adapter の inbound 処理を使用したサンプルにしてみましょう。(やや長くなるので、3 回にわけます。あとで修正があるかもしれませんが、その際はあとで注記しておきます、、、)
構築するサンプル
実際の開発では「SharePoint でドキュメントが承認されたら、SAP に経費申請を登録」などいろいろと応用できますが、このサンプルでは、例によってサンプルを簡単に (かつエッセンスを紹介) するためのデモとしたいので、非常に「無意味な」ビジネスの処理をおこなっていますがご了承ください。
また環境構築では Oracle Adapter を使用しますので、Oracle の対応バージョンや必要コンポーネントにも注意してください。(これらの情報はインストールガイドに記載されています。特に ODAC の 2.0 ベースのアセンブリが必要になりますので ORACLE 社より入手してください。ただしくインストールできない場合には、GAC に Oracle.DataAccess.dll と Oracle.DataAccess.resources.dll をコピーするなどしてください。)
予備知識
さて、このサンプルでは 3 つのアダプターが登場します (BizTalk Adapter Pack の Oracle Adapter, カスタムの CustomAdapter1, そして FILE アダプターです)。これらのアダプターを使用する前に、第1回でも触れた BizTalk のアダプターフレームワークについて簡単に整理をしておきます。
まず、第1回でもご説明したように、BizTalk にはもともと「Adapter」と呼ばれるオブジェクトが存在し、ここで、ファイル、メール (SMTP)、SAP、SharePoint (WSS3.0 や MOSS)、などさまざまなプロトコルへの依存性を吸収する仕組みがもともと備わっていました。これが、WCF の登場によって、この WCF と接続するための「WCF Adapter」という形で拡張され、さらに第2回でもご説明したようにカスタマイズ性に優れたこの WCF のフレームワークをそのままアダプターに代わって使用できるように、今回ご紹介している WCF LOB Adapter SDK なるものが登場し、今まで敷居の高かったアダプター開発がより敷居の低い方法で開発できるようになりました。
以下に、こうしたアダプター構成の関係を図示しておきます。
上図のように、WCF LOB Adapter SDK で作ったアダプター (BizTalk Adapter Pack のアダプターを含む) は、もともと BizTalk に備わっていた WCF-Custom アダプターの上で動作するということをおぼえておいてください (実際に設定の際に必要になる知識です)。
また、BizTalk によるプロジェクト構築ではアダプター設定をおこなうだけではありません。以下に、BizTalk にはじめて触れる方のために、BizTalk によるプロジェクト構築の流れを簡単に記載しておきます。(チュートリアル : http://msdn2.microsoft.com/ja-jp/library/aa560270.aspx)
ということで要旨を押さえたところで、早速構築をおこなっていきましょう。
データベース (Oracle) の準備
今回は Oracle の所定のテーブルが変更されたら起動するわけですから、Oracle 内部にユーザ (スキーマ) やテーブルを構築する必要があります。
今回は、以下のようなテーブルを準備しておくことにしましょう。
スクリプトは、以下のようになるでしょう。
CONNECT testuser1/Passw0rd
CREATE TABLE testorder (id integer, name varchar2(255), constraint pk_testorder primary key(id));CREATE TABLE testorderhistory (id integer, constraint pk_testprocorder primary key(id));
CREATE OR REPLACE PACKAGE testpkg AS PROCEDURE postpoll_action;END testpkg;/CREATE OR REPLACE PACKAGE BODY testpkg AS PROCEDURE postpoll_action IS currentrec testorder%ROWTYPE; CURSOR recs is SELECT * FROM testorder WHERE id NOT IN (SELECT id FROM testorderhistory) FOR UPDATE; BEGIN OPEN recs; LOOP FETCH recs INTO currentrec; EXIT WHEN recs%NOTFOUND; INSERT INTO testorderhistory VALUES (currentrec.id); END LOOP; END;END testpkg;/
BizTalk プロジェクトの構築 (スキーマの作成)
では、BizTalk を使用して上述のサンプルのビジネスを構築していきましょう。
ちょっと長くなってきましたので、今日はここでおひらきにしましょう。
上記で作成された xsd ファイルの中身の詳細はここでは割愛しますが、この設定によって、Oracle 側から WCF を介して、以下の形式の XML で答えが返ってきて、さらに、以下の形式の XML で CustomAdapter1 に渡す必要がある、という点をおぼえておいてください。(次回、このスキーマ構成を使って構築していくことになります)
[Oracle から返ってくる XML (例)]
<?xml version="1.0" encoding="utf-8" ?> <POLLINGSTMT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT"> <POLLINGSTMTRECORD> <POLLINGSTMTRECORD> <ID>1</ID> <NAME>テストデータ1</NAME> </POLLINGSTMTRECORD> <POLLINGSTMTRECORD> <ID>2</ID> <NAME>テストデータ2</NAME> </POLLINGSTMTRECORD> </POLLINGSTMTRECORD></POLLINGSTMT>
[CustomAdapter1 に渡す XML (例)]
<?xml version="1.0" encoding="utf-8" ?> <EchoTimes xmlns="myscheme://myadapter"> <param>テストデータ</param> </EchoTimes>
次回はオーケストレーション (orchestration) を作成して、いよいよ実行して動かしてみたいと思います。
環境: .NET Framework 3.0 BizTalk Server 2006 R2 Visual Studio 2005 WCF LOB Adapter SDK BizTalk LOB Adapter
こんにちは。 ご存知の通り、.NET Framework 3.0 以降では、WCF という通信テクノロジーが搭載されました。(ここでは、WCF とは何かということについては触れません。WCF については、
こんにちは。 WCF と BizTalk、そして LOB Adapter WCF における Binding と Channel の基礎 WCF LOB Adapter SDK によるカスタムアダプター実装