アクティブキューとは?
実は数年前の6.7時代にはもうあった(もっと前からあったかもしれない)んですが、いまひとつ話題にのぼらない地味な機能です。
なんでそんな扱いなのかというのは機能を知ると察せられます。
どこにあるの
ここです。
制御室のキューとスケジュールの間にあります。
公式の説明はこちらのリンクからご覧ください。6.10のガイド
こちらが公式6.9のガイド
公式の説明は、親切であろうとする心は感じられるんですが、これだったらいっそ英語でお願いします……というわかりづらさがなくもない。
ざっくり言うと
「このキューにアイテムが入ったら、このRRを使ってこのプロセスで処理してね!」
という機能です。
設定
材料
- プロセス
- 制御室に公開されている
- スタートアップパラメータがない
- キュー処理のループにIsStopRequested()がある
- RR
試しにこういうサンプルのプロセスを作ってみました。
Pendingのキューアイテムを取得して、1秒待って完了マークするだけの内容です。
作り方
システム>リソース>管理
-
リソースグループを新規で作成します。
-
作成したリソースグループの中にRRを入れます。
プールのようにリソースが確保されちゃうわけではないので、用がないときは他でも単独で自由に使えます。
システム>ワークフロー>ワークキュー
- 当該キューの「アクティブキュー」のチェックボックスをONにします。
- プロセスとリソースグループをプルダウンから選択します。
制御室
「アクティブキュー」のところに、今作成したリソースグループが表示されています。
中身を見ると、こんなかんじ
「使用可能なリソース」の数は、リソースグループに入れたRRの数です。
「ターゲットリソース」は初期値が0。▲をクリックして、使用したいRR数まで増やします。「使用可能なリソース」の数が最大値です。
使い方
当該キューにアイテムを格納すると
指定したプロセスが、指定したRRの数だけ自動で始まって
解決できていない問題
リソースグループのRRは使い切り
上図の、キューアイテムを全部完了にしたところの画面の「ターゲットリソース」欄を見ると、さきほど「使用可能なリソース」の数まで増やしたはずの値が「0」に変わっています。
つまり、リソースでプロセスが実行されて完了したら、そのリソースは再利用されないのです。
1個のプロセスが完了すると、「ターゲットリソース」の値が1減ります。
そして、「ターゲットリソース」の値が0になったら、キューにアイテムが入ってきてももう処理してくれないのです。
人間が手で「ターゲットリソース」の値を増やしに行ってあげる必要があります。
やったー!この機能があったら、ライセンス1個占有してキュー監視プロセスをグルグル実行し続けるやつをやらなくて済むんじゃん!
……と一瞬糠喜びしたんですが、そううまい具合にはいかない模様。
Login Agentどうする問題
RRを使う前にLogin AgentでLoginしないといけない場合は、どう指定したらいいかが不明です。
スケジュールならタスクを順番に登録すればいいのですけど……。
終わりです
端的に言うと「この機能が何に使えるかよくわからん」のであんまり話題にならないっていうね……。
でもせっかくいい機能があるので(※前からあった)、これのいい使い途を見つけたいです。