ヘッダーをスキップ
Oracle Application Server Microsoft Officeとの相互運用性開発者ガイド
10gリリース3(10.1.3.1.0)
B31842-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

5 Microsoft Officeによるフォームの作成およびデータ入力

この章では、Microsoft OfficeテンプレートとWebサービスを使用して、エンタープライズ・アプリケーションにデータを入力するためのフォームを作成する方法について説明します。

この章の内容は次のとおりです。

5.1 概要

Microsoft Office 2003 Professionalは、多くのユーザーに使い慣れたユーザー・インタフェースを提供します。エンタープライズ・アプリケーションは、一般に、独自の専用ユーザー・インタフェースを備えています。エンタープライズ情報に断続的にしかアクセスしないユーザーに対して、Microsoft Officeは、エンタープライズ情報を操作するMicrosoft Officeアプリケーションの開発を可能にするスマート・ドキュメント関連の機能セット(特に、テンプレート、フォーム・フィールド、およびWebサービス統合)を提供します。スマート・ドキュメントは、データの自動入力が可能なので、フォームへのデータの入力やテンプレートを使用した作業が容易です。また、スマート・ドキュメントは、外部データに自動的にアクセスしてドキュメント内の適切な場所にそのデータを挿入したり、ドキュメントの準備においてコンテキスト・ヘルプを提供してユーザーを支援したりすることもできます。

Oracle Application Serverは、Java、Enterprise JavaBeans(EJB)、またはPL/SQLに基づくJAX-RPC Webサービスをデプロイおよび実行できる機能を提供します。Oracle JDeveloperは、J2EEおよびWebサービス・アプリケーションを開発するための設計時環境を提供します。

この章で示される一連のガイドラインに従うことにより、開発者は、Oracle JDeveloperを使用して、Microsoft Officeアプリケーション(具体的には、Microsoft Word、Microsoft Excel、およびMicrosoft InfoPath)から起動できるエンタープライズWebサービスを作成できます(図5-1を参照)。開発者は、これらのアプリケーションに含まれているVisual Basic Editorを使用して、これらのWebサービスに対するプロキシ・クラスを起動することができます。このプロキシ・クラスは、Microsoft Office 2003 Webサービス・ツールキット(5.2項「前提条件」を参照)を使用して生成できます。

図5-1 スマート・ドキュメントでのエンタープライズ情報の操作

図5-1の説明が続きます
「図5-1 スマート・ドキュメントでのエンタープライズ情報の操作」の説明

この章では、Oracle JDeveloper、Microsoft Office 2003 Webサービス・ツールキット、およびMicrosoft Office 2003 Professionalを使用してエンタープライズ・アプリケーションにアクセスする方法を説明します。


注意:

これらのアプリケーションは、Microsoft WordまたはMicrosoft ExcelでVisual Basic for Applications(VBA)コードを使用するかわりに、Microsoft Visual Studioを使用して開発することもできます。この章で説明する手順(Microsoft Office 2003 Webサービス・ツールキットの使用を含む)は、Visual Studioによる開発にも適用されます。

5.2 前提条件

この章で説明する手順を実行するには、まず、次のソフトウェアをインストールします。

5.3 手順

この項では、Microsoft OfficeとOracle Application Server上で動作するWebサービスの相互運用を実現する方法を示す次の2つの手順を説明します。

5.3.1 エンタープライズ情報を取得および更新するスマート・ドキュメントの開発

この項の例は、JDeveloperでWebサービスを開発する方法と、このWebサービスを、Visual Basic for Applicationsコードと(Microsoft Office 2003 Webサービス・ツールキットによって生成される)ラッパー・クラスを使用してMicrosoft Wordと統合する方法を示します。この例は、単純なJavaクラスから構築されるWebサービスに対応しています。


注意:

JDeveloperは、EJBおよびPL/SQL Webサービスを開発する機能も提供します。後述する制約および統合手順は、これらのテクノロジにも適用されます。

この例は、Union Loanによって使用されるカスタムの人事エンタープライズ・アプリケーションに基づいています。このアプリケーションは、人事部や管理職社員によって使用されます。近年、他のユーザーが従業員の住所を表示および更新できることへのニーズが高まっています。(非常に複雑な)人事システムへのアクセスを提供するよりも、会社は、JDeveloperを使用して、図5-2に示すようなMicrosoft Word 2003 Professionalアプリケーションを迅速に開発し、既存のJava実装を、従業員の住所へのアクセスを提供するWebサービスとして公開することを決断します。このWebサービスは、そのインタフェースでGetAddressおよびSetAddressという2つの操作を提供します。


注意:

この項の例は、Webサービスを使用してパブリック・データにアクセスします。そのため、セキュリティは不要です。Webサービスに対するより安全な接続が必要な場合は、第6章「スマート・ドキュメントおよびWebサービスのセキュリティ保護」を参照してください。

図5-2 Microsoft Wordアプリケーション

図5-2の説明が続きます
「図5-2 Microsoft Wordアプリケーション」の説明

Webサービスと通信するフォームを開発するには、次の項の手順を実行してください。

また、次の項では、オプションの5番目の手順が示されています。

5.3.1.1 Oracle JDeveloperでのWebサービスの開発

Oracle JDeveloper 10gリリース3(10.1.3.1.0)でMicrosoft Office互換Webサービスを作成するには、次の手順を実行します。

  1. JDeveloperを起動します。

  2. 「ファイル」メニューから、「新規」「一般」「アプリケーション」を選択します。


    ヒント:

    「フィルタ方法」リストから「すべての項目」を選択していることを確認する必要がある場合があります。

  3. 「OK」をクリックします。

  4. 「アプリケーション名」フィールドにMSOfficeと入力します。


    ヒント:

    「アプリケーション・テンプレート」リストから「テンプレートなし[すべてのテクノロジ]」を選択する必要がある場合があります。

  5. 「OK」をクリックします。

  6. 「プロジェクト名」フィールドにRpc-encと入力します。

  7. 「OK」をクリックします。

  8. アプリケーション・ナビゲータで、Rpc-encプロジェクトを右クリックして、ショートカット・メニューから「新規」を選択します。

  9. 「一般」「Javaクラス」を選択します。

  10. 「OK」をクリックします。

  11. 「名前」フィールドにEmpServiceと入力します(図5-3を参照)。

    図5-3 「Javaクラスの作成」ダイアログ・ボックス

    図5-3の説明が続きます
    「図5-3 「Javaクラスの作成」ダイアログ・ボックス」の説明

  12. 「OK」をクリックします。

    クラスがコード・エディタに表示されるようになりました。

  13. 既存のコードを、例5-1に示すコードと置き換えます。

    例5-1 EmpService Javaクラス

    package rpcenc;
    
    public class EmpService {
    
    private String adr = null;
    
        public EmpService() {
        }
    
        public void setAddress (String address) {
            adr = address;
            return;
        }
    
        public String getAddress (String empno) {
            if (adr == null) {
            return empno + " Address"; }
            else return adr;
        }
    }
    
    

    このJavaクラスは、従業員の住所データを保持する内部変数(adr)を宣言します。setAddress操作は、入力文字列を取得し、それをこの変数に割り当てます。getAddress操作は、従業員番号を入力として取得し、従業員番号と住所文字列で構成される連結文字列を出力として返します。この非常に単純な例を除くどのような場合でも、このクラスは、通常、データベースまたはエンタープライズ・アプリケーションAPIをコールしてデータを取得します。

  14. アプリケーションを保存します。

  15. 「ファイル」メニューから、「新規」を選択します。

  16. ビジネス層ノードを開き、「Webサービス」「Java Webサービス」を選択します。

  17. 「OK」をクリックします。

  18. 「J2EE 1.4 (JAX-RPC) Webサービス」が選択されていることを確認して、「OK」をクリックします。

  19. 必要に応じて、「次へ」をクリックして、ウィザードの初期ページを通過します。

  20. 「公開するコンポーネント」リストから、EmpServiceクラスを選択します(図5-4を参照)。

    図5-4 クラスの選択

    図5-4の説明が続きます
    「図5-4 クラスの選択」の説明

  21. 「次へ」をクリックします。

  22. 「SOAPメッセージ形式」リストから、「RPC/エンコード」を選択します(図5-5を参照)。

    図5-5 メッセージ形式の指定

    図5-5の説明が続きます
    「図5-5 メッセージ形式の指定」の説明

    SOAPメッセージ形式には、RPC/Literalも使用できます。ドキュメント・スタイルを使用することもできます。


    注意:

    WebサービスにRESTを使用している場合は、「SOAPポートへのRESTアクセスの有効化」チェック・ボックスを選択してください。

  23. 「次へ」をクリックします。

  24. この例では、マッピング・ファイルを指定する必要がないため、もう一度「次へ」をクリックします。

  25. 「使用可能なメソッド」リストで、getAddresssetAddressの両方のメソッドを選択します。

  26. 「次へ」をクリックします。

  27. もう一度「次へ」をクリックします。

  28. 「ステートフル・サービス」チェック・ボックスを選択します。


    注意:

    Microsoft Office 2003からコールされるWebサービスは、ステートフルの場合もステートレスの場合もあります。この例のWebサービスは、ステートフルです。

  29. 「状態スコープ」リストから、「セッション」を選択します。

  30. 「セッション・タイムアウト」フィールドに1000と入力します。

  31. 「終了」をクリックします。


    注意:

    JAX-RPC Webサービスの詳細をさらに定義することができますが、これらはオプションで、この例では不要です。

    ウィザードによって生成されるWeb Services Description Language(WSDL)ドキュメントを表示できるようになりました(図5-6を参照)。アプリケーション・ナビゲータに、MyWebService1という名前のWebサービス・ノードとMyWebService1.javaという名前のJavaエンドポイント・インタフェースが追加されました。このファイルはJAX-RPCに必要ですが、この例のために編集する必要はありません。

    図5-6 JDeveloperでのWSDLドキュメント

    図5-6の説明が続きます
    「図5-6 JDeveloperでのWSDLドキュメント」の説明

  32. アプリケーション・ナビゲータで、MyWebService1ノードを右クリックして、メニューから「実行」を選択します。

    JDeveloperは、サービスを自動的に埋込みOC4Jコンテナにデプロイし、図5-7に示すようなメッセージをログ・ウィンドウに表示します。

    図5-7 Oracle JDeveloperのログ・ウィンドウ

    図5-7の説明が続きます
    「図5-7 Oracle JDeveloperのログ・ウィンドウ」の説明

  33. ログ・ウィンドウのURLをクリックします。

    動作しているWebサービスを示すページが表示されます(図5-8を参照)。

    図5-8 動作しているWebサービス

    図5-8の説明が続きます
    「図5-8 動作しているWebサービス」の説明

5.3.1.2 Microsoft Wordでのテンプレート・ドキュメントの定義

5.3.1.1項「Oracle JDeveloperでのWebサービスの開発」で開発したWebサービスを起動するテンプレート・ドキュメントをMicrosoft Word 2003 Professionalで定義するには、次の手順を実行します。

  1. Microsoft Wordを起動します。

  2. 「Insert」メニューから、「Picture」「From File」を選択します。5.2項「前提条件」でダウンロードしたunionloan_banner.gifイメージを選択します。

  3. Employee Informationというタイトルをサイズが18ポイントの太字フォントで追加します。

  4. 従業員の住所の検索方法を示す次のテキストを入力します。

    In the Name field, enter the name of the employee, then press the Tab key to retrieve the employee's address details.

  5. 「Table」メニューから、「Insert」「Table」を選択します。2行2列の表を作成します。

  6. 最初の行の最初の列に、NAMEと入力します。

  7. 2番目の行の最初の列に、ADDRESSと入力します(図5-9を参照)。

    図5-9 従業員の住所を検索するための表

    図5-9の説明が続きます
    「図5-9 従業員の住所を検索するための表」の説明

  8. 従業員の住所の更新方法を示す次のテキストを入力します。

    You can update the address information by entering the new employee address below.

  9. 「Table」メニューから、「Insert」「Table」を選択します。1行2列の表を作成します。

  10. 最初の列にNEW ADDRESSと入力します(図5-10を参照)。

    図5-10 従業員の新住所を指定するための表

    図5-10の説明が続きます
    「図5-10 従業員の新住所を指定するための表」の説明

    ドキュメントは図5-11のようになりました。

    図5-11 ドキュメント・テンプレート

    図5-11の説明が続きます
    「図5-11 ドキュメント・テンプレート」の説明

    次に、Webサービスからのリアルタイム・データを表示するために、フォーム・フィールドをドキュメントに追加します。

  11. 「View」メニューから、「Toolbars」「Forms」を選択します。

  12. 値として従業員名を入力する予定の表のセル内にカーソルを移動します。

  13. Formsツールバーの「Text Form Field」ボタンをクリックします(図5-12を参照)。

    図5-12 「Forms」ツールバーの「Text Form Field」アイコン

    図5-12の説明が続きます
    「図5-12 「Forms」ツールバーの「Text Form Field」アイコン」の説明

    これにより、セルに、フォーム・フィールドの位置を示す灰色の領域が挿入されます。

  14. 値として従業員名を入力する予定の表のセル内にカーソルを移動し、「Text Form Field」ボタンをクリックします。

  15. 従業員の新住所を入力する予定の表のセル内にカーソルを移動し、「Text Form Field」ボタンをクリックします。

    ドキュメントを保存する前に、テンプレート定義を制御し、ユーザーのフォーム補完プロセスを有効にするために、ドキュメントを保護します。

  16. 「Tools」メニューから、「Protect Document」を選択します。

  17. 表示される作業ウィンドウで、次の手順を実行します。

    1. 「Editing Restrictions」セクションで、「Allow only this type of editing in the document」チェック・ボックスを選択します。

    2. リストから、「Filling in forms」を選択します。

    3. 「Yes, Start Enforcing Protection」をクリックします。

  18. ドキュメントを保護するためのパスワードを入力します。

  19. 「File」メニューから、「Save As」を選択します。

  20. 「Save as type」リストから、「Document Template (*.dot)」を選択します。

  21. デフォルトのファイル名を使用します。

  22. 「Save」をクリックします。

    このドキュメントは、VBAコードを使用してフィールドを実際に動作するWebサービスに接続するために、5.3.1.4項「Webサービス・パラメータへのテンプレート・フィールドのマッピング」で編集します。

5.3.1.3 Microsoft Office 2003 Webサービス・ツールキットによるプロキシ・クラスの生成

デプロイしたWebサービスを起動するVBAコードを作成するために、Microsoft Office 2003 Webサービス・ツールキット(5.2項「前提条件」を参照)を使用して、プロキシとして使用できるクラスまたはラッパー(Webサービスへのクラス)を生成する必要があります。5.3.1.4項「Webサービス・パラメータへのテンプレート・フィールドのマッピング」で開発されるVBAコードは、この項で生成されるプロキシ・クラスをコールします。

プロキシ・クラスを生成するには、次の手順を実行します。

  1. Microsoft Wordを起動し、5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」で生成したテンプレートを開きます。

  2. 「Tools」メニューから、「Macro」「Visual Basic Editor」を選択します。


    注意:

    WebサービスにRESTを使用している場合は、次の手順を実行してください。
    1. Visual Basic Editorの「Tools」メニューから、「References」を選択します。

    2. 「Microsoft XML, v5.0」チェック・ボックスを選択して、「OK」をクリックします。

    手順49を実行する必要はありません。


  3. Project NavigatorでEmployee Informationプロジェクトが選択されていることを確認します。

  4. Visual Basic Editorの「Tools」メニューから、「Web Service References」を選択してMicrosoft Office 2003 Webサービス・ツールキットを起動します。

  5. 「Microsoft Office 2003 Web Services Toolkit」ダイアログ・ボックスで、「Web Services URL」ラジオ・ボタンを選択します。

  6. 「URL」フィールドで、動作しているWebサービスのURLを入力します。


    ヒント:

    このURLは、5.3.1.1項「Oracle JDeveloperでのWebサービスの開発」の最後で開いたブラウザ・ウィンドウの「アドレス」フィールドからコピーすることができます。

  7. URLの最後に?wsdlを追加します。URLは、次のようなものになります。

    http://mymachine:8988/MSOffice-Rpc-enc-context-root/MyWebService1SoapHttpPort?wsdl
    
    
  8. 「Search」をクリックします。これにより、Webサービスが右上のペインに追加されます(図5-13を参照)。

    図5-13 Webサービスの選択

    図5-13の説明が続きます
    「図5-13 Webサービスの選択」の説明

  9. MyWebService1を選択して、「Add」をクリックします。

    「Toolkit」ダイアログ・ボックスが閉じて、clsws_mywebservice1という名前で生成されたクラスが、Project ExplorerのClass Modulesノードの下に追加されます。

  10. 「Insert」メニューから、「Module」を選択します。

  11. 「Properties」ウィンドウで、名前をGetEmployeeInfoに変更します。

  12. エディタ・ウィンドウで、例5-2に示すコードを入力してモジュールに追加します。

    例5-2 GetEmployeeInfoモジュール

    Public Sub GetEmployeeInfo()
    
        Dim ename As String
        ename = ActiveDocument.Fields(1).Result.Text
    
        Dim employeeWS As clsws_MyWebService1
        Set employeeWS = New clsws_MyWebService1
    
        'Send the service the employee name
        Dim eadr As String
        eadr = employeeWS.wsm_getAddress(ename)
        ActiveDocument.Fields(2).Result.Text = eadr
    
    End Sub
    
    

    GetEmployeeInfoサブルーチンは、従業員名文字列(ename)を宣言し、ドキュメントの「Name」フィールドの値をこの変数に割り当てます(ename = ActiveDocument.Fields(1).Result.Text)。その後、Webサービスへの参照が作成され、コールされます。サービスの出力がドキュメントの「Address」フィールドに割り当てられます(ActiveDocument.Fields(2).Result.Text=eadr)。

    RESTを使用している場合、コードは例5-3に示すようになります。

    例5-3 RESTサービスのGetEmployeeInfoモジュール

    Public Sub GetEmployeeInfo()
    
        Dim eid As String
        eid = ActiveDocument.Fields(1).Result.Text
    
            Dim query As String
        query = "http://mymachine:8988/MSOffice-Rpc-enc-context-root/MyWebService1SoapHttpPort/getAddress?empno=" + eid
    
        'define xml and http components
        Dim queryResult As New MSXML2.DOMDocument
        Dim employeeService As New MSXML2.XMLHTTP
            'create HTTP request
        employeeService.Open "GET", query, False
    
        'send the request
        employeeService.send
    
        'parse result
        queryResult.LoadXml(employeeService.responseText)
        ActiveDocument.Fields(2).Result.Text = queryResult.SelectSingleNode("//ns0:result").Text
    
    End Sub
    
    
  13. SetEmployeeInfoという名前の別のサブルーチンを追加して、例5-4に示すコードを入力します。

    例5-4 SetEmployeeInfoモジュール

    Public Sub SetEmployeeInfo()
    
        Dim eadr As String
        eadr = ActiveDocument.Fields(3).Result.Text
    
        Dim employeeWS As clsws_MyWebService1
        Set employeeWS = New clsws_MyWebService1
    
        'Send the service the new emp address
        employeeWS.wsm_setAddress(eadr)
    
    End Sub
    
    

    SetEmployeeInfoサブルーチンは、変数(eadr)を宣言し、ドキュメントの「Address」フィールドの値を割り当てます。その後、Webサービスが初期化され、setAddress操作がこの値でコールされます。

    RESTを使用している場合、コードは例5-5に示すようになります。

    例5-5 RESTサービスのSetEmployeeInfoモジュール

    Public Sub SetEmployeeInfo()
    
        Dim address As String
        address = ActiveDocument.Fields(3).Result.Text
    
        Dim query As String
        query = "http://mymachine:8988/MSOffice-Rpc-enc-context-root/MyWebService1SoapHttpPort/setAddress?address=" + address
    
        'define xml and http components
        Dim queryResult As New MSXML2.DOMDocument
        Dim employeeService As New MSXML2.XMLHTTP
    
        'create HTTP request
        employeeService.Open "GET", query, False
    
        'sent the request
        employeeService.send
    
    End Sub
    
    
  14. プロジェクトを保存します。

  15. Visual Basic Editorを終了して、Microsoft Wordに戻ります。

5.3.1.4 Webサービス・パラメータへのテンプレート・フィールドのマッピング

5.3.1.3項「Microsoft Office 2003 Webサービス・ツールキットによるプロキシ・クラスの生成」で開発したVBAコードを5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」で作成したテンプレート・ドキュメントにリンクするには、次の手順を実行します。

  1. Microsoft Wordを起動します。

  2. 5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」で生成したテンプレートを開きます。

  3. 「Tools」メニューから、「Unprotect Document」を選択し、メッセージが表示されたらパスワードを入力します。

  4. ユーザーが従業員名の値を入力するフォーム・フィールドを右クリックして、ショートカット・メニューから「Properties」を選択します。

  5. 「Default text」フィールドにTYPE A NAME HEREと入力します。

  6. 「Text format」リストから、「First capital」を選択します。

  7. 「Exit」リストから、GetEmployeeInfoを選択します(図5-14を参照)。これにより、ユーザーがフィールドに値を入力してフィールドから移動する(一般に、[Tab]キーを押す)と、5.3.1.4項「Webサービス・パラメータへのテンプレート・フィールドのマッピング」で作成したVBAコードが起動されます。

    図5-14 従業員名フィールドのオプション

    図5-14の説明が続きます
    「図5-14 従業員名フィールドのオプション」の説明

  8. ユーザーが従業員の住所を更新するフォーム・フィールドの同様のプロパティを入力します。ただし、この場合は、SetEmployeeInfoサブルーチンを起動します(図5-15を参照)。

    図5-15 新住所フィールドのオプション

    図5-15の説明が続きます
    「図5-15 新住所フィールドのオプション」の説明

  9. 5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」の最後で説明した方法で、ドキュメントを保護します。

  10. ドキュメントを保存して閉じます。

  11. Windowsエクスプローラで、テンプレートをダブルクリックしてテンプレートに基づくドキュメントを作成します。

  12. 最初のフォーム・フィールドにカーソルが表示されるので、従業員名(James Cooperなど)を入力します。

  13. [Tab]キーを押して次のフィールドに移動します。

    2番目のフィールドには、James Cooperの住所の値が挿入されます。

  14. もう一度[Tab]キーを押して、新住所を指定できるフィールドに移動します。

  15. 従業員の新住所を入力します。

  16. もう一度[Tab]キーを押して最初のフィールドに移動します。

    従業員の住所に新住所が反映されます。

5.3.1.5 Webサービス・データの自動ロードおよび保存

ドキュメントのデータを自動的にロードおよび保存できます。Microsoft Wordでこれを実現するには、次の手順を実行します。

  1. Microsoft Wordを起動します。

  2. 5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」で生成したテンプレートを開きます。

  3. 「Tools」メニューから、「Unprotect Document」を選択し、メッセージが表示されたらパスワードを入力します。

  4. 「Tools」メニューから、「Macro」「Visual Basic Editor」を選択します。

  5. Project Explorerのテンプレート・プロジェクトの下で、「ThisDocument」をダブルクリックします。

  6. 「Object」リストから、「Document」を選択します。

  7. 「Procedure」リストから、「Open」を選択します。

    空のサブルーチンがクラス・モジュールに追加されます。

  8. getAddress Webサービスを起動するため、例5-6に示すVisual Basic命令を追加します。

    例5-6 getAddress Webサービスの起動

    Private Sub Document_Open()
    
        Dim ename As String
        ename = ActiveDocument.Fields(1).Result.Text
    
        Dim employeeWS As clsws_MyWebService1
        Set employeeWS = New clsws_MyWebService1
    
        'Send the service the employee name
        Dim eadr As String
        eadr = employeeWS.wsm_getAddress(ename)
        ActiveDocument.Fields(2).Result.Text = eadr
    
    End Sub
    
    

    このコードは、5.3.1.3項「Microsoft Office 2003 Webサービス・ツールキットによるプロキシ・クラスの生成」で作成したGetAddressInfoサブルーチンと同じです。つまり、このコードは、指定された従業員のアドレスを取得するgetAddress Webサービスをコールします。このコードがドキュメントのonOpenプロシージャとして宣言されるので、ドキュメントが開かれたときに自動的に実行されます。「NAME」フィールドのデフォルト値は、Webサービスに渡されます。その結果、名前にAddressという文字列が追加されることによって得られるデフォルトの住所値が表示されます。実際のアプリケーションでは、デフォルト値に渡さない場合があります。この例では、デフォルト値は、テンプレート・ドキュメントを開いたときの自動Webサービス呼び出しのデモの目的でのみ使用されます。

  9. プロジェクトを保存します。

  10. Visual Basic Editorを終了して、Microsoft Wordに戻ります。

  11. 5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」の最後で説明した方法で、ドキュメントを保護します。

  12. ドキュメントを保存して閉じます。

  13. ドキュメントを実行するには、Microsoft Wordでファイルを開きます。

    ファイルを開くと、「NAME」フィールドのデフォルト値のTYPE A NAME HEREを渡すことによって、Webサービスが起動されます。この例では、このため、返されるデフォルト値はTYPE A NAME HERE Addressです。

5.3.2 Microsoft InfoPathフォームの開発

Microsoft InfoPathを使用すると、フォーム設計者は、フィールドを、Webサービス呼び出しにマッピングされるフォームに迅速に追加できます。

Webサービスと通信するフォームを開発するには、次のタスクを実行してください。

5.3.2.1 Oracle JDeveloperでのWebサービスの開発

JDeveloperでMicrosoft InfoPathとともに使用するWebサービスを作成するには、次の手順を実行します。

  1. 5.3.1.1項「Oracle JDeveloperでのWebサービスの開発」で示されている手順に従います。

  2. Microsoft Visual Studio .NETを使用していない場合は、次の変更を加えます。

    Java J2EE 1.4 Webサービスの作成ウィザードの「メッセージの書式」手順(手順2)で、「SOAPメッセージ形式」が「ドキュメント/ラップ」に設定されていることを確認します。

5.3.2.2 Microsoft InfoPathでのフォームの定義

Microsoft InfoPathでOracle Webサービスをコールするフォームを定義するには、次の手順を実行します。

  1. Microsoft InfoPathを起動します。

  2. ダイアログ・ボックスの左側で、「Design a Form」を選択します。

    図5-16に示すようなInfoPathのメイン・ウィンドウが表示されます。

    図5-16 Microsoft InfoPathのメイン・ウィンドウ

    図5-16の説明が続きます
    「図5-16 Microsoft InfoPathのメイン・ウィンドウ」の説明

  3. 「Design a new form」の下で、「New from Data Connection」をクリックします。

  4. Data Connection Wizardの最初の手順で、接続タイプとして「Web Service」を選択します。

  5. 「Next」をクリックします。

  6. 「Receive data」を選択します(図5-17を参照)。

    図5-17 Webサービスからのデータの受信

    図5-17の説明が続きます
    「図5-17 Webサービスからのデータの受信」の説明

  7. 「Next」をクリックします。

  8. デプロイされているWebサービスのURLを、最後に?WSDLを追加して入力します。

  9. 「Next」をクリックします。

  10. 「Select an operation」リストから、getAddressを選択します(図5-18を参照)。

    図5-18 Webサービスの操作の選択

    図5-18の説明が続きます
    「図5-18 Webサービスの操作の選択」の説明

  11. 「Next」をクリックします。

  12. データ接続の名前としてGet Addressと入力します(図5-19を参照)。

    図5-19 データ接続名

    図5-19の説明が続きます
    「図5-19 データ接続名」の説明

  13. 「Finish」をクリックします。

    図5-20に示すように、Microsoft InfoPathによってデフォルトのフォームが生成されます。

    図5-20 Microsoft InfoPathのデフォルトのフォーム

    図5-20の説明が続きます
    「図5-20 Microsoft InfoPathのデフォルトのフォーム」の説明

  14. 「Data Source」パネルで、queryFieldsノードを開きます。

  15. ns1:getAddressElement要素を「Drag query fields here」というラベルの付いているフォームの領域にドラッグして、「Section with Controls」を選択します。

  16. dataFieldsノードを開きます。

  17. ns1:getAddressResponse要素を「Drag data fields here」というラベルの付いているフォームの領域にドラッグします。

    フォームは図5-21のようになりました。

    図5-21 入力および出力フィールドを持つフォーム

    図5-21の説明が続きます
    「図5-21 入力および出力フィールドを持つフォーム」の説明

  18. カーソルをフォームの上部に移動します。

  19. 「Insert」メニューから、「Picture」「From File」を選択します。5.2項「前提条件」でダウンロードしたイメージを選択します。

  20. フォームのタイトルをEmployee Informationに変更します。

  21. 「Click to add form content」というラベルの付いている領域に次の説明文を入力します。

    Enter the name of the employee and click the Get Address button to retrieve the employee address.

  22. 入力フィールドのラベル(Get Address Element)をEnter Employee Nameに変更します。

  23. 出力フィールドのラベル(Get Address Response Element)をEmployee Addressに変更します。

  24. 「Run Query」ボタンをダブルクリックして、ラベルをGet Addressに変更します。

  25. 入力および出力フィールドのフォームの枠をマウスで選択し、ドラッグして、フォームの領域を小さくします。

    フォームは図5-22のようになりました。

    図5-22 書式設定されたフォーム

    図5-22の説明が続きます
    「図5-22 書式設定されたフォーム」の説明

  26. テンプレート・フォームを保存し、Microsoft InfoPathを閉じます。

  27. Microsoft InfoPathを開き、「Fill out a Form」ダイアログ・ボックスで新しいテンプレート・フォームを選択します。

  28. 「Enter Employee Name」フィールドにJames Cooperと入力します。

  29. 「Get Address」をクリックします。

    「Employee Address」フィールドには、James Cooperの住所の値が挿入されます。

5.4 トラブルシューティング

この項では、発生する可能性のある潜在的な問題を解決するためのヒントを示します。

WSDLのエンドポイントURLが適切なサービスをポイントしていることの確認

JDeveloperは、スタンドアロン・サーバーとともに動作するデフォルトのエンドポイントURLを生成します。リリース10.1.3以上では、サービスがデプロイされるアプリケーション・サーバーは、このURLを更新します。このため、Microsoft Office 2003 Webサービス・ツールキットおよびMicrosoft InfoPathのData Connection Wizardで、動作しているサービスへのWSDL参照を挿入することが重要です。ログ・ウィンドウで、JDeveloperは、常に、デプロイされているサービスのURLをレポートします。このURLをダイアログ・ボックスにコピーして貼り付け、エンドポイントに?wsdlを追加します。これは、WSDLを取得するブラウザでも実行できます。

Microsoft Wordでの既存のテンプレートの編集

テンプレートを使用するには、最初に、そのテンプレートがパスワードで保護されている必要があります(「Tools」メニューの「Protect Document」オプション)。ドキュメントを開く際は、定義を編集する前に、まず、ドキュメントの保護を解除してください(「Tools」メニューの「Unprotect Document」オプション)。保護を解除しないで編集すると、予期しない結果になります。

5.5 関連ドキュメント