最近のアクセス:
ビジネスコンポーネント - Web サービスとして公開

ビジネスコンポーネントを Web サービスとして公開し、データベースに対する挿入、変更および削除の操作を実行できるようにするには、次の手順を実行します:
1) トランザクション[ Business Component ] プロパティを True に設定します。
2) トランザクションの [ Expose as Web Service ] プロパティを True に設定します。
この 2 つのプロパティの設定が完了したら、トランザクションを生成してコンパイルする必要があります。これにより、トランザクションに関連付けられた Web サービスが生成され、(生成された各 Web オブジェクトが転送されるタイミングで) 対応するディレクトリーに転送されます。
生成されるプログラムの名前は次のようになります:
  • .NET 環境の場合: <トランザクション名>_bc (customer_bc)
  • Java 環境の場合: <トランザクション名>_bc_ws (customer_bc_ws)
ブラウザーで URL に WSDL パラメーター(http://localhost/BillingSystem.NetEnvironment/customer_bc.aspx?wsdl) を入力すると、Web サービスについての説明となるすべての情報 (ロケーション、メソッド、パラメーターなど) を確認できます。
用意されているメソッドは次のとおりです:
  • LoadKeySvc
  • SaveSvc
  • CheckSvc
  • DeleteSvc
これらのメソッドは、名前が示しているとおり、ビジネスコンポーネントのメソッドである LoadSaveCheck、および Delete と同じ機能を提供します。
重要: ここで紹介する Web サービスのメソッドと、一般的なビジネスコンポーネントのメソッドの唯一の違いは、Web サービスのメソッドでは、操作を実行した後にコミットが実行される点です。
公開された Web サービスを別のナレッジベースで使用するとします。対象のナレッジベースで、GeneXus メニューバーから、 [ ツール ] > [ アプリケーションの統合 ] > [ WSDL インポート ] の順に選択します。これで、WSDL インポートウィザードが開きます:
イメージ:23940.png
[ WSDL ロケーション ] ファイルフィールドに、Web サービスの公開先の URL および WSDL パラメーター (http://localhost/BillingSystem.NetEnvironment/customer_bc.aspx?wsdl) を入力する必要があります。
WSDL インポートウィザードの 2 番目のページには、Web サービスに関連する情報 (名前、プロパティ、メソッド、パラメーターなど) をすべて格納するためにナレッジベースに作成される、外部オブジェクト (EO) の名前を入力する必要があります。また、ナレッジベースにはトランザクション構造に類似した SDT が作成されます (SDT には、各項目属性のプロパティと、各項目属性の古い値 (名前: AttributeName_Z) に対応するプロパティがあります)。複数レベルのトランザクションの場合、第 1 レベルの SDT に加えて、ネストされたコレクションが定義されます。
そのため、外部オブジェクトに基づいて変数を定義して、Web サービスのメソッドを呼び出すことができます。

1) 顧客を挿入するためのリモートサービスの呼び出し
&ws.LoadKeySvc(10,&Customer)
&Customer.CustomerName = 'Susan Parker'
&ws.SaveSvc(&Customer)
入力値の説明:

&ws
    ナレッジベースに作成された外部オブジェクトに基づいています。
&Customer
    WSDL の使用時に WSDL インポートウィザードで作成された SDT に基づいています。
2) 請求書を挿入するためのリモートサービスの呼び出し
&Invoice.InvoiceId = 111
&Invoice.CustomerId = 1

&Invoiceline.Mode = 'INS'
&Invoiceline = new()
&Invoiceline.ProductId = 1
&Invoiceline.InvoiceLineQuantity = 10
&Invoice.InvoiceLevel.Add(&Invoiceline)

&Invoiceline = new()
&Invoiceline.ProductId = 2
&Invoiceline.InvoiceLineQuantity = 20
&Invoice.InvoiceLevel.Add(&Invoiceline)

&ws.SaveSvc(&Invoice)  
入力値の説明:
&Invoice および InvoiceLine
    WSDL の使用時に WSDL インポートウィザードで作成された SDT に基づいています。 
&ws 
    ナレッジベースに作成された外部オブジェクトに基づいています。
3) 請求書の行を更新するためのリモートサービスの呼び出し
&Invoice.InvoiceId = 111
&ws.LoadKeySvc(&Invoice.InvoiceId,&Invoice)  

For &Invoiceline in &Invoice.Level
  IF &Invoiceline.ProductId = 1
        &Invoiceline.InvoiceLineQuantity = 5
        &InvoiceLine.Modified = 1
  Endif
endfor
&ws.SaveSvc(&Invoice)  
入力値の説明:
&Invoice および InvoiceLine
    WSDL の使用時に WSDL インポートウィザードで作成された SDT に基づいています。
&ws
    ナレッジベースに作成された外部オブジェクトに基づいています。






サブページ
Created: 15/01/07 22:48 by Admin Last update: 23/04/24 18:05 by Admin
カテゴリ
Powered by GXwiki 3.0