概要
コントラクトの作成やコントラクトアクションの実行を検知して、別の後続処理に繋げることが可能です。
Blockchain Workbench作成時に作られるEventGridがこの役目を担います。
今回はHelloBlockchainアプリケーションのコントラクトアクションをEventGridが検知、それをトリガーにLogic Appsが動作して、Slackに通知することをやってみようと思います。
Workbenchのバージョンは1.6.0です。
関連記事
Azure Blockchain WorkbenchでHello Blockchain!
Azure Blockchain WorkbenchのメッセージングAPIを使ってコントラクトを作成する
Azure Blockchain WorkbenchのメッセージングAPIを使ってコントラクトアクションを実行する
構成
EventGridをトリガーにして、Logic Appsで各種処理を制御していきます。
Logic Apps作成
Logic Appsを作成します。
[Azure Event Grid]→[When a resource event occurs]トリガーを選択します。
実行履歴の箇所を見て、「取り消し済み」という結果が記録され始めていればOKです。まだ自分で作ったHelloBlockchainアプリケーションでイベントは発生していませんが、EventGridではイベントを常に検知しています。これはEthereumのマイニングもイベントとして刻まれている為だと思われます。これらのイベントは不要なのでLogic Appsの制御で取り消し済みにしています。
それではコントラクトアクションを実行します。HelloBlockchainアプリケーションでリクエストもしくはレスポンスアクションを実行してください。
Logic Appsの実行履歴を見ると、「成功」となっているイベントがあると思います。これが自分で実行したコントラクトアクションのイベントです。
実行履歴を選択すると以下のような結果画面に遷移するので、[When a resource event occurs]を選択します。
実行結果確認
まとめ
例えば次のアクションの実行者にSlack通知するなどすればワークフローで承認する仕組みなんかも実現できそうです。
今回はSlack通知だけですが、Functionsを呼び出すこともできるので汎用性が高いですね。
ただ、注意点は、マイニング含む全イベントを検知してしまいます。一応Logic Appsで自分のアプリケーションだけに制御していますが、Logic Appsのトリガーは動いちゃってるので課金対象となります。
計算するとLogic Appsだけで月1万円くらいは掛かりそう。ここどうにかいい方法ないかなぁ。