DrupalCampNYC 2021のプログラムを見ていたら、Rulesの代替モジュールECAのプレゼン(ECA - New rules engine for Drupal 9+)があったので参加することにした。現在取り組んでいる案件でもそうなのだが、Webformの後続アクションを手続き的に書きたいケースは頻繁にある。Business rulesで書くのを定番にしているが、安定して動作するものの、ベータの段階でMinimally maintainedかつMaintenance fixes onlyになってしまっているので、アプリケーションとして本格的に使おうと思ったら、プログラムを書くべきだと思っている。
ECAはEvent - Condition - Actionの略。思想は非常にシンプルで、アーキテクチャは自分は中身を知らずに処理を実施することだけに徹するという形になっている。つまり、依存関係の無い作りになっていて本質的に拡張性が高い。今日利用されたスライドが公開されているので、drupal.orgのページとあわせて読めば自力でも理解できるし、恐らく今日のセッションの録画がやがて公開されるだろう。
大ヒットモジュールとなる予感がする。
Drupalの任意のイベントを補足し、Drupalの任意のアクションを起動できるようにして、条件部分はplugin化できるようにしている。
繰り返しになるが、このようなアーキテクチャで処理を書ければ、ECAは他のモジュールやEntityに依存しなくて済む。
なぜECAモジュールが機能するかと言えば、Drupal8でDrupalのアーキテクチャ変更されたことによる。従来のNodeからEntityに整理され直したことと、フックからSymfonyのMVCモデルに移行したことが大きいのだろう。その代償も決して小さくはなかったが、恩恵は大きい。
何とか時間を見つけて、実際に使ってみようと思う。本家Rulesがなかなか進まない中、ECAは年内Stable Releaseを予定しており、とても楽しみだ。
蛇足になるが、このセッションはDrupalCampNYのもので、現地時間で午後3時半から約1時間。東京時間では朝の4時半からだったので、4時起きで出席した。参加してみると、プレゼンはドイツから実施されていたので、話者の時間では夜9時半。時差の壁は大きいが、コロナのおかげでオンライン化が進んだため、リモート参加が容易になったのはすごいことである。参加費は無料だが、登録制で寄付が推奨されている。推奨額に従って20ドルを支払った。内容的には、一つだけ参加したこのセッションだけで50ドル程度の価値は十分にあったと思う。4時起きの眠気は、あっという間に吹き飛んだのであった。
関連して、ビジネスプロセスマネジメントスイートのCamundaを調べたら、これがまたすごかった。リモートワーク時代になると、こういったツールは猛烈に大きな意味を持ってくると思う。最初は、BPMNのモデリングツールかと思っていたら、すごいソフトだった。ドイツらしい感じ。実際にフリーのモデラーをダウンロードして触ってみたが、シンプルで使えそうな感じだった。
コメント
トライアルは初手から躓いてしまった
ECAを実験サイトにインストールしたら、それ自身にはモデルを作る機能がない。BPMO.ioモジュールを入れると、Add new BPMN.iO modelというボタンが出るので、これをクリックすると死んだ。ログには「You have requested a non-existent service "eca.service.modeler". Did you mean one of these: "eca.service.modeller", "eca.service.token"?」とある。
多分、すぐ治せる問題だと思うのだが、とりあえず、Drupal Slackで聞いておいて待機することとした。
Drupal Slackの開発者以外の示唆でインストールは無事完了
1. composer.jsonで以下を設定
"minimum-stability": "dev",
"prefer-stable": true
2.devバージョンをインストール
composer require 'drupal/eca:1.0.x-dev@dev'
composer require 'drupal/bpmn_io:1.0.x-dev@dev'