ジョブとしてバックグラウンドで起動するように記述してある場合、バックグラウンドで実行したプログラムの終了を待たずにジョブは終了します。
PowerCOBOL、VisualBASICなどで作成した印刷アプリケーションが、Systemwalker Operation Managerからジョブとして起動される場合で、かつ、プリントマネージャで設定される“標準で使用するプリンタ”を印刷先のプリンタとして採用している場合には、以下の点に注意してください。なお、印刷先のプリンタを選択する方法が、アプリケーションの印刷処理で使用されている開発言語の関数/命令/ステートメント/APIの仕様に依存している場合も含まれます。
“Systemwalker MpMjes”サービスのログオンアカウントでWindowsにローカルログオンしてください。[運用情報の定義]ウィンドウ-[利用機能]シート-[ジョブを所有者の権限で実行する]にチェックがある場合は、ジョブ所有者のユーザーIDでWindows にローカルログオンしてください。さらに、Systemwalker Operation Managerから印刷アプリケーションを起動してください。
アプリケーションでは、プリントマネージャの登録情報“標準で使用するプリンタ”を利用しない関数/命令/ステートメント/APIを使用して印刷するようにしてください。
Systemwalker Operation Managerからアプリケーションを起動する場合、当該アプリケーションで使用するネットワークドライブに関する留意点を以下に示します。
ジョブが参照する資源は、すべてローカルドライブに置いてください。
Windows(R) 2000の場合、ジョブを実行する前にあらかじめ、任意のユーザでシステムにローカルログオンし、必要なネットワークドライブを割り当ててネットワーク接続しておきます。
ログオフするとネットワークドライブが切断されるため、ネットワークドライブを使用するジョブを運用する間は、ログオン状態のままで運用します。
アプリケーションがネットワークパスを参照できるように、UNCパスを使用するようにします。
例えば、ネットワークドライブ“z:”のディレクトリの一覧を表示するジョブがあるとします。このジョブを実行する場合の条件として事前に、“z:”ドライブに対して、コンピュータ名がremote、共有名がshareにネットワーク接続しておきます。この場合、そのジョブのコマンド列におけるUNCパス使用例を以下に示します。
[ドライブzの使用例] cmd.exe /c dir z:\ [UNCパス使用例] cmd.exe /c dir \\remote\share
ドライブ文字の代わりにUNCパスを使用できないアプリケーションの場合は、アプリケーションをバッチファイルから起動するようにして、バッチファイルの先頭と末尾にネットワーク接続/ネットワーク切断するコマンドを追加します。
ネットワーク接続: net use z:\\remote\share ネットワーク切断: net use z:/delete
この場合、このバッチファイルがジョブとして実行している間は、他のジョブやローカルログオンしているユーザが、同じドライブ文字(上記の例では、“z:”ドライブ)を別のネットワークパスに割り当てて使用することはできません。
また、他のジョブやローカルログオンしているユーザがネットワーク接続している場合もこれから起動しようとするジョブで同じドライブ文字を割り当てることもできません。
なお、ネットワーク接続が完了した場合、必ずネットワーク切断してからバッチファイルを終了してください。切断しない場合は、再起動しない限りそのドライブは使用できなくなります。
[運用情報の定義]ウィンドウの[旧互換]シートにおいて、“ジョブ登録時に指定したスクリプトファイルをスプールに複写し、実行する”がチェックされている場合、Systemwalker Operation Managerから起動されたジョブは、以下の場所をカレントディレクトリとして動作します。
Systemwalker Operation Managerインストールディレクトリ |
キュー名:ジョブ投入時のキュー名
ジョブ番号:ジョブ投入時に割り振られた番号
特定のパスをカレントディレクトリとして設定したい場合は、以下のような対処を行ってください。
以下の例に示すバッチファイルを作成し、Systemwalker Operation Managerから起動するようにします。バッチファイルでは、cdコマンドで c:\tempにカレントディレクトリを変更してから、アプリケーションを起動しています。
rem カレントディレクトリを変更します。 |
appl.exe:ユーザアプリケーション
Systemwalker Operation Managerに登録したアプリケーションだけではなく、そのアプリケーション配下で起動されるすべてのアプリケーションが1つのジョブとして監視されます。そのため、Systemwalker Operation Managerに登録したアプリケーションと、そのアプリケーション配下で起動されるすべてのアプリケーションが終了した時点でジョブが終了したと認識されます。
例えば、Systemwalker Operation Managerに登録したアプリケーションAにより、常駐するアプリケーションBが起動された場合、アプリケーションAが終了してもアプリケーションBが終了するまでは、ジョブが終了したと認識されません。
アプリケーション配下で動作しているプロセスの状態は、mjptreeコマンドで確認できます。詳細は、“Systemwalker Operation Manager リファレンスマニュアル”の、“mjptree ジョブのプロセス情報表示コマンド【Windows版】”を参照してください。
例
登録したアプリケーションから起動されるアプリケーションの終了を待ち合わせないようにする場合は、以下の方法を利用してください。
EXECASVR.EXE アプリケーション起動コマンドを利用する
EXECASVR.EXE アプリケーション起動コマンドは、起動したアプリケーションの終了を待ち合わせません。EXECASVR.EXE アプリケーション起動コマンドについては、“Systemwalker Operation Manager リファレンスマニュアル”を参照してください。
Systemwalker Operation Managerの起動について
Systemwalker Operation Managerの起動を伴うコマンドを実行した場合、Systemwalker Operation Manager/Systemwalker Centric Managerの動作は保証されません。詳細については、“B.5.14 ジョブとして実行してはいけないコマンド”を参照してください。