Word 2007でWebサービスのデータを使用する
ここでは、上と同じデータを今度はWordドキュメントで使用することを考えます。基本的な考え方は前と同じで、'Service Reference'を作成し、その上でデータアクセス用に生成されたクラスを利用します。まず、Visual Studio 2008を起動し、新規のOffice 2007 Word Documentプロジェクトを'MyWORD'という名前で作成します。
入力が促されたら、新規のWordドキュメントを作成することに同意し、[OK]をクリックします。なお、状況によっては、この操作を行う前に、他のすべてのMicrosoft Office 2007プログラムを閉じる必要があります。これで完全に使用可能な新規のドキュメントがVisual Studio内に表示されます。
[Project]メニューの[Add Service Reference...]をクリックします。
入力が促されたら、アドレスフィールドに'http://localhost:8888/MyDISH'と入力し、[Go]をクリックします。これで、先ほど作成したWebサービスが表示されます。
以前作成した'MyData'サービスが[Operations]ボックスに表示されています。その名前空間に'MyService'という値を与え、[OK]をクリックします。これで、Webサービスを使用するためのコードが自動的に作成されます。'app.config'ファイルが自動的に更新されると共に、アプリケーションへの参照が追加されることに注意してください。
次に、ツールボックスからドキュメントへ'Button'を追加します。
必要に応じてボタン表面のテキストを変更してから、ボタンをダブルクリックしてコードの編集を開始します。メソッド'private void button1_Click(object sender, EventArgs e)'に対して、次のコードを入力します。
private void button1_Click(object sender, EventArgs e) { int sqlCode; DataTableReader reader; //A reader is used to step through the data. MyService.MyDISHSoapPortClient webService; /* Initialize the webservice, the constructor was auto‐created by VS */ webService = new MyWORD.MyService.MyDISHSoapPortClient(); /* Use the MyData procedure created in SQL Anywhere to create a reader */ reader = webService.MyData(out sqlCode).CreateDataReader(); /* Read each line of the data table that is returned */ while (reader.Read()) { /* Concatenate the names and append it to the page */ this.Paragraphs[1].Range.InsertAfter("\n" + reader.GetValue(1) + ", " + reader.GetValue(2)); } }
要するに、これはWebサービスからデータを取得して、ドキュメントに入れるコードです。これを実現するために'MyService'クラスのインスタンスが生成されます。そのコードはVisual Studioによって自動的に作成されたものです。'DataTableReader'オブジェクトを使用してデータが順に読み込まれ、ページ内に設定されます。
'Debug'ボタンをクリックするか、F5キーを押して、このソリューションをテストします。ドキュメントがロードされたら、ボタンをクリックすると、Webサービスからデータが取得され、ページ内に自動的に設定されます。
このデータを使用すれば、Word内からカスタムメールマージドキュメントを作成するような処理を実現できます。ここでのポイントは、汎用的なWebサービスからデータが自動的に取得され、Webサービスをおのおのの要件に応じて個別に構成しなくてもよいことです。これは簡単なデモですが、パラメータを使うような構成も可能です。つまり、Webサービスのメソッドにパラメータを与え、そのパラメータを使用して、たとえば、個々の顧客に関する特定のデータを顧客のクライアントIDに基づいて取得することができます。
結論
SOAPのWebサービスは、あらゆる種類のユーザーがサーバー上でおのおのの要件に応じて個別的に修正を行わなくてもデータにアクセスできる点で、業務に高い柔軟性をもたらす優れた方法だと言えます。さらに、Microsoft Office 2007アプリケーション内から直接データにアクセスすることも簡単です。統一的な方法でアクセスできなければ、データの効果的な格納もままなりません。SQL Anywhere 10のSOAPサービスは容易に統合できるので、この目的にかなっています。
参考資料
- Is There Real Business Value Behind the Hype of SOA? Computerworld Management.[Online] June 19, 2006. [Cited: March 1, 2008.]:''Pisello, Tom.''
- SOAP Version 1.2 Part 1: Messaging Framework (Second Edition). W3C Recommendation. Cambridge : s.n., 2007.:''World Wide Web Consortium (W3C).''