Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

iKnow Web サービス

%iKnow パッケージは、iKnow クエリを実行する Web サービス・クラスを提供します。この章では、これらのクラスの概要と使用法を説明します。以下のトピックについて説明します。

利用可能な Web サービス

iKnow は以下の Web サービス・クラスを提供します。

%iKnow.Queries パッケージには、これらのクラスがコンパイルされたときにコンパイラによって生成されたクラスも含まれます。例えば、コンパイラはクラス %iKnow.Queries.CcWSAPIOpens in a new tab をコンパイルしたときに、%iKnow.Queries.CcWSAPIOpens in a new tab パッケージにクラスを生成しています。生成されたこれらのクラスは、直接使用するためのものではありません。

iKnow Web サービスの使用法

Web サービスを使用するには、それと通信する Web クライアントを作成して使用します。iKnow Web サービスの場合も、他の Web サービスの場合と同じ手順でこれを行います。

  1. Web サービスと通信できる Web クライアントを作成します。通常、これを行うには、クライアント・テクノロジが提供するツールを使用して Web クライアントを生成し、Web サービスの WSDL を入力として提供します。このプロセスによって、一連のクライアント・クラスが生成されます。

    例えば、Caché では、スタジオの SOAP ウィザードを使用します。Caché Web サービスでは、Caché は都合よく以下の URL で WSDL を発行します。

    http://hostname:port/csp/namespace/web_service_class.cls?WSDL
    

    以下はその説明です。

    • hostname は、Caché が実行されているサーバです。

    • port は、Web サーバが実行されているポートです。

    • namespace は、ネームスペース名です。

    • web_service_class は、.cls で終わる Web サービスの完全なパッケージおよびクラス名です。

      例えば、クラス %iKnow.Queries.EntityWSAPIOpens in a new tab の場合は、%25iKnow.Queries.EntityWSAPI.cls を使用します。

      Important:

      ここに示すように、パッケージの先頭のパーセント記号を、必ず URL エスケープ・シーケンスの %25 で置き換えてください。

    以下に例を示します。

    http://localhost:57772/csp/samples/%25iKnow.Queries.EntityWSAPI.cls?WSDL
    
  2. 生成されたクライアント・クラスを編集するのではなく、それらを使用する追加クラスやルーチンを作成します。詳細は使用するテクノロジによって異なります。

    Caché では、Web クライアントを使用するには、Web クライアント・クラスのインスタンスを作成し、次にそのインスタンス・メソッドを呼び出します。以下の例を参照してください。

デモンストレーションのため、同じマシン上で iKnow Web サービスと共に動作する Caché Web クライアントを生成して使用します。SAMPLES ネームスペースでこれを行うには、以下の手順に従います。

  1. スタジオで、[ツール]→[アドイン]→[SOAP ウィザード] をクリックします。

  2. 最初の画面で、[URL] をクリックします。

  3. 以下の URL を入力します。

    http://localhost:57772/csp/samples/%25iKnow.Queries.EntityWSAPI.CLS?WSDL
    

    必要な場合は、Web サーバがこの Caché インストールに使用しているポートで 57772 を置き換えます。

  4. [次へ] をクリックします。

  5. [プロキシクラスパッケージ]MyClient のようなパッケージ名を入力します。

  6. [次へ] を 2 回クリックします。

    ウィザードによって、クラスが生成およびコンパイルされ、これらのクラスの一覧が表示されます。

    このプロセスによって、クラス MyClient.iKnow.Queries.EntityWSAPISoap が生成されます。このクラスは、このクライアントが基づく Web サービスで定義された各 Web メソッドに 1 つずつ、一連のメソッドを定義します。これらの各メソッドは以下のようになります (ここでは読みやすいように改行を追加してあります)。

    Method GetByFilter(domainid As %Integer, filter As %String, filtermode As %Integer, enttype As %Integer, 
    blackListIds As %ListOfDataTypes(ELEMENTTYPE="%String",XMLITEMNAME="blackListIdsItem",XMLNAME="blackListIds")) 
    As %XML.DataSet [ Final, ProcedureBlock = 1, SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
    {
     Quit ..WebMethod("GetByFilter").
      Invoke($this,"http://www.intersystems.com/iKnow/Queries/EntityWSAPI/%iKnow.Queries.EntityWSAPI.GetByFilter",
             .domainid,.filter,.filtermode,.enttype,.blackListIds)
    }
    

    このメソッドのシグニチャは、Web サービスの対応するメソッドのシグニチャと同じになります。

    このプロセスはまた、MyClient.iKnow.Queries.EntityWSAPISoap に、直接使用することはできない一連のクラスを生成します。

  7. [完了] をクリックします。

  8. 生成されたクライアントを使用するには、ターミナルで SAMPLES ネームスペースに以下のように入力します。

    set client=##class(MyClient.iKnow.Queries.EntityWSAPISoap).%New()
    

    これによって Web サービスと通信できるクライアント・クラスのインスタンスが作成されます。

  9. このクラスのメソッドを実行します。以下はその例です。

    write client.GetCountByDomain(2)
    

iKnow Web サービスと主要な iKnow API の比較

主要な iKnow API は SOAP メッセージで簡単に表現できない引数を使用するため、iKnow Web サービスのメソッドは主要な iKnow API のメソッドとは異なるシグニチャを持ちます。特に、次の相違点に注意してください。

  • %Library.ListOpens in a new tab の代わりに、Web サービス (およびそのクライアント) は %Library.ListOfDataTypesOpens in a new tab を使用します。つまり、Web サービスのリストを作成する際は、%Library.ListOfDataTypesOpens in a new tab のインスタンスを作成してから、その SetAt() メソッドを使用して項目を追加します。このインスタンスでは $LISTBUILD のようなリスト関数は使用できません。

  • %iKnow.Filters.FilterOpens in a new tab のインスタンスの代わりに、Web サービス (およびそのクライアント) は、そのクラスの ToString() メソッドから返された形式の文字列を使用します。

  • 複雑な結果を返す API の場合は、多次元配列として参照により結果を返す代わりに、Web サービス (およびそのクライアント) は %XML.DataSetOpens in a new tab のインスタンスを返します。

    Important:

    この構造は .NET および Caché でのみサポートされています。他の Web テクノロジは、この形式を認識しません。

関連項目

Caché での Web サービスおよびクライアントの詳細は、"Caché での Web サービスおよび Web クライアントの作成" を参照してください。

FeedbackOpens in a new tab