LoginSignup
1
1

More than 5 years have passed since last update.

Azure Blockchain WorkbenchのメッセージングAPIを使ってコントラクトアクションを実行する

Posted at

概要

Blockchain WorkbenchメッセージングAPIを使って、コントラクトに対してアクションを実行します。
コントラクトは既に作られている前提です。

Workbenchのバージョンは1.6.0です。

関連記事

Azure Blockchain WorkbenchでHello Blockchain!
Azure Blockchain WorkbenchのメッセージングAPIを使ってコントラクトを作成する

構成

メッセージングAPIにメッセージを送信するために、ストアドプロシージャを実行したり、加工が必要だったりするので、Logic Appsを使っています。

image.png

ストアドプロシージャ作成

Azure Blockchain WorkbenchのメッセージングAPIを使ってコントラクトを作成する を参考に、ストアドプロシージャを作成してください。

Logic Apps作成

image.png

  • 次のステップで、[SQL Server]→[SQLクエリを実行する]を選択します。
    image.png

  • 以下のように入力します。
    image.png

SELECT TOP 1 ContractLedgerIdentifier
  FROM [dbo].[vwContractProperty]
  WHERE ApplicationName = 'HelloBlockchain'
    AND WorkflowPropertyValue = N'こんにちわ'
  ORDER BY Version DESC

ここはアプリケーションによってだいぶ変わります。要はコントラクトを一意に識別する「ContractLedgerIdentifier」を取り出す必要があります。
今回はWorkflowPropertyValueに、コントラクトを作成したときに指定したリクエストメッセージを直書きしています。
複数バージョンがあることを想定し、Version列を降順で並び替えて一番最初の行を持ってくることで最新バージョンに特定しています。

  • 次のステップで、[Service Bus]→[メッセージの送信]アクションを選びます。
    image.png

  • 接続名は適当に、Service BusはBlockchain Workbench作成時に作られたものを選びます。
    image.png

  • Service Busポリシーは[ReadWriteSharedAccessKey]を選択します。
    image.png

  • キューは[ingressqueue]を選択します。
    image.png

  • セッションIDでは、ストアドプロシージャの動的コンテンツとSQLクエリの動的コンテンツを選択してください。
    image.png

  • そうすると以下のようにFor-Each文に2重で入ります。
    image.png

  • この状態でセッションIDに動的コンテンツ[requestId]を選択します。
    image.png

  • メッセージの内容は以下のJSONを書きます。
    image.png

{
  "requestId":"@{variables('requestId')}",
  "userChainIdentifier":"@{items('For_each_2')?['ChainIdentifier']}",
  "contractLedgerIdentifier":"@{items('For_each')?['ContractLedgerIdentifier']}",
  "workflowFunctionName":"SendResponse",
  "parameters": [
    {
      "name":"responseMessage",
      "value":"れすぽんす"
    }
  ],
  "connectionId":1,
  "messageSchemaVersion":"1.0.0",
  "messageName":"CreateContractActionRequest"
}
  • ワークフローを保存して実行します。
    image.png

  • HelloBlockchainアプリケーションのコントラクトで、レスポンスアクションが実行されればOKです。
    image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1