オブジェクトの実行モードに「フォアグラウンド」「バックグラウンド」「排他的」の3つがあります。
1つの端末でプロセスを稼働させる時、同じオブジェクトを使っているプロセスの並行稼働を許すかどうか、設定ができる機能です。
詳細はこちら↓
オブジェクトの初期化ページからプロパティ→情報タブに表示されるアレです。
オブジェクトの実行モード同士の組み合わせによって、並行稼働が可能かが変わってきます。
実行モード1 | 実行モード2 | 並行稼働可? | 備考 |
フォアグラウンド | フォアグラウンド | × | |
フォアグラウンド | バックグラウンド | 〇(※) | ※フォアグラウンド1つのみ稼働可能。 |
フォアグラウンド | 排他的 | × | |
バックグラウンド | バックグラウンド | 〇 | |
バックグランド | 排他的 | × | |
排他的 | 排他的 | × |
実験1. セッション実行してみる
以下プロセスとオブジェクトを用意します。
今回は動作内容は関係ないため、オブジェクトは、Sleep(10秒)アクションのみ実行するものとします。
(例)実行モード:フォアグラウンドのオブジェクト
上記の要領で、実行モードがバックグラウンド、排他的のオブジェクトをそれぞれ用意します。
(例)実行モード:フォアグラウンドのオブジェクトを配置したプロセス
同様に、実行モードがバックグラウンド、排他的のオブジェクトのみ配置したプロセスをそれぞれ用意します。
プロセス名は「フォアグラウンドプロセス」「バックグラウンドプロセス」「排他的プロセス」とします。
ここまで準備ができたら、コントロールルームを開き、自端末にてセッション実行してみます。前述した表を上から順に試してみます。
フォアグラウンド × フォアグラウンド
エラーが出てしまい、並行稼働は不可です。
フォアグラウンド × バックグラウンド
フォア/バックグラウンドのセッションが保留中の状態で、フォアグラウンドをセッションにためようとすると、エラーになります。
これは前述したフォア×フォアで検証したとおりですね。
バックグラウンドのセッションについては、いくつでも並行稼働可能です。
フォアグラウンド × 排他的
実行モードが排他のオブジェクトが配置されているプロセスは、フォア/バックとも並行稼働不可です。
バックグラウンド × バックグラウンド
いくつでも並行稼働可能です。
バックグラウンド × 排他的
排他なのでダメですね。
排他的 × 排他的
排他なので(以下略)
実験2. 1つのプロセスに複数の実行モードのオブジェクトが混在している場合
例えば、1つのプロセスに「フォアグラウンド」「バックグラウンド」が混在している場合はどうなるのでしょうか?
試しに、バックグランドプロセスにフォアグラウンドのオブジェクトを追加してみます。
バックグラウンドのセッションが保留中の状態で、さらにバックグラウンドのセッションをためようとすると…
フォアグラウンドと同様の扱いになるようです。
ちなみに、フォアグラウンドのオブジェクトがリンクで繋がれていなくても、プロセスはフォアグラウンド扱いになりました。
実行モードの強さ(?)は
排他的 > フォアグラウンド > バックグラウンド
のようです。
まとめ
フォアグラウンド × バックグラウンドの組み合わせっていつ使うの?
と疑問に思いましたが、例えば、
- (フォアグラウンドのプロセス)基幹システムにデータ入力 → メール下書き保存
- (バックグラウンドのプロセス)メール送信
上記プロセス群を1台の端末で並行稼働させる、といった用途に使えそうです。
(1端末において、複数画面で基幹データ入力を行うことは難しい)
画面入力を行うプロセス × 1 + メール送信などバックグラウンド実行で支障ないプロセス × α
を1端末で並行稼働させることで、ライセンス消費を抑えられそうですね。
あえて排他モードにする必要はなさそうな気がしています。。。