On this page
Handyman
Registration to the Object Controller
コントローラ登録時、アクション実行順に関する制約と仕様
コントローラへ登録する際に
Action Loop
を利用することに起因した他命令との実行順に関する問題について。ACTION LOOP
アクションループとは、オブジェクトインスタンスの数に応じた暗黙的ループ処理のことです。
オブジェクトを対象とした命令ではインスタンスの数に応じたアクションループが必須なのですが、アクションループを他オブジェクトから呼び出す形で利用している場合、追加命令を発行すると実行順に狂いが生じます。
e.g. 期待される動作
flowchart LR A[ActionLoop 0] --> B[ActionLoop 1] B --> C[ActionLoop 2] C -.- D>Aster's Function] D --> E{End}
e.g. 実際の動作
flowchart LR A[ActionLoop 0] -.- B>Aster's Function] B --> C[ActionLoop 1] C --> D[ActionLoop 2] D --> E{End}
アクションループが完全に終了してから ( この場合だと登録処理が終了してから ) `Aster's Function` に処理を移したいのですが、アクションループの初回で `Aster's Function` が実行されてしまうため問題が発生します。
対応策
上記問題を避けるための手段として、インスタンス登録を行ったらイベント行を分けて別命令を発行してください。
アクションループの終了を待ってから実行したい命令について、イベント行を分けるのが必須となっています。