プロダクションのテストとデバッグ
このトピックでは、プロダクションのテストとデバッグで使用できる機能について説明します。ここで説明する内容は、既に企業で使用しているプロダクション・ソフトウェアのトラブルシューティングと調整にも役立ちます。
プロダクション問題状態の修正
プロダクションが一時停止またはトラブルの場合は、この節に目を通してください。
一時停止されたプロダクション
プロダクションの一時停止は、キュー内のすべての非同期メッセージが処理される前にプロダクションが停止された場合に発生します。これらの非同期メッセージを手動でクリアしない場合、これらはプロダクションのバックアップが開始されるときに自動的に処理されます。メッセージを処理する場合、一時停止されたプロダクションの起動前に他の手順は必要ありません。
トラブル・プロダクションの回復
InterSystems IRIS が停止しても、プロダクションが適切にシャットダウンしなかった場合に、そのプロダクションは [トラブル] ステータスになります。先にプロダクションを停止せずに InterSystems IRIS の再開またはマシンの再起動を実行すると、このステータスが発生する可能性があります。
この場合は、[回復] コマンドが [プロダクション構成] ページに表示されます。[回復] をクリックすると、障害が発生しているプロダクションのインスタンスが終了し、クリーンアップされるので、新しいインスタンスを実行できるようになります。
または、コマンド・ラインを使用してプロダクションを回復しなければならない場合があります。"Ens.Director の使用によるプロダクションの開始および停止" を参照してください。
ネームスペースでのプロダクションのリセット
開発時に、プロダクションのすべてのキューが確実にクリアされてから、またはプロダクションに関する情報をすべて削除してから、別のプロダクションを開始したい場合があります。CleanProduction() メソッドを実行すると、キューがクリアされます。
導入済みで稼働中のプロダクションでは、この手順を使用しないでください。CleanProduction() メソッドを実行すると、キューにあるすべてのメッセージが消去され、プロダクションに関する現在の情報がすべて削除されます。この手順は、開発中のプロダクションでのみ使用してください。
CleanProduction() メソッドを使用するには、以下を実行します。
-
以下のコマンドを入力して、該当のネームスペースに移動します。
set $namespace = "EnsSpace"
ここで EnsSpace は、プロダクションが実行される、プロダクション対応のネームスペースの名前です。
-
以下のコマンドを入力します。
do ##class(Ens.Director).CleanProduction()
管理ポータルからのテスト
プロダクションを開発、テスト、およびデバッグする際に、管理ポータルを使用して以下のようなタスクを実行できます。
-
システム構成の表示と変更ができます。
-
プロダクションの起動と停止ができます。
-
キューとその内容、メッセージとその詳細、アダプタとアクターおよびそれらのステータス、ビジネス・プロセスとそのステータス、コード、構成項目のグラフィカル表現を表示できます。
-
イベント・ログ・エントリの表示、ソート、および選択的パージができます。
-
接続が一時的に遮断されているメッセージを一時停止 (および後で再送) できます。
-
カテゴリまたはメッセージ内容に基づいて、メッセージ・ウェアハウスの内容をフィルタリングして特定のメッセージを検索できます。この操作は、グラフィカル・ユーザ・インタフェースを使用して行うことも、SQL SELECT コマンドを入力して行うこともできます。
-
グラフィカル・ユーザ・インタフェースを使用して、メッセージ・アクティビティをビジュアルにトレースできます。
-
統計レポートの作成と表示ができます。
開発者にとって最も役立つポータルの機能は、モニタ・サービス、テスト・サービス、およびイベント・ログの 3 つです。モニタ・サービスは実行時データを継続的に収集します。テスト・サービスを使用すると、開発中のプロダクションに対して、シミュレートした要求を発行できます。イベント・ログはビジネス・ホストによって発行されたステータス・メッセージのログを記録します。テスト・データの生成と結果の調査には、この 3 つの機能を一緒に使用してください。
ポータルの使用方法は、"プロダクションの管理" を参照してください。
管理ポータルの [テスト] メニューでは、ビジネス・ホストとデータ変換の両方をテストできます。このメニューには以下の項目が含まれています。
-
[ビジネス・ホスト] — [Interoperability]→[テスト]→[ビジネス・ホスト] ページでは、ビジネス・プロセスとビジネス・オペレーションをテストできます。
-
[データ変換] — このオプションは別のページに誘導します。このページで、データ変換を選択して [テスト] をクリックできます。詳細は、"データ変換のテスト" の節を参照してください。
テスト・サービスの使用
テスト・サービスを使用すると、アクティブなネームスペースで実行中のプロダクションのビジネス・プロセスまたはビジネス・オペレーションをテストできます。
ビジネス・プロセスまたはビジネス・オペレーションをテストする前に、次のことを確認してください。
-
適切なプロダクションが動作していることを確認します。"プロダクションの管理" を参照してください。
-
そのプロダクションに対してテストが有効になっていることを確認します。[プロダクション構成] ページで次の操作を行います。
-
[プロダクション設定] リンクを選択します。
-
[設定] タブで、[開発とデバッグ] プロパティ・リストを開き、[テスト使用可能] チェック・ボックスにチェックを付けます。
-
[適用] を選択します。
-
テスト・サービスには、管理ポータル内の以下の場所から移動できます。
-
[Interoperability]→[テスト] を選択した後、[ビジネス・ホスト] または [データ変換] を選択します。
-
[プロダクション構成] ページの構成ダイアグラムで、左ペインにあるビジネス・プロセスまたはビジネス・オペレーションを選択し、[アクション] タブの [テスト] を選択します。
ビジネス・プロセスまたはビジネス・オペレーションでテスト・サービスを使用する手順は、次のとおりです。
-
管理ポータルで、[Interoperability]→[テスト]→[ビジネス・ホスト] を選択して、[テスト・サービス] ページを表示します。
このページには、テストの対象として [ビジネスプロセス] と [ビジネスオペレーション] のどちらかを選択可能なオプションがあります。
-
必要に応じて、[ビジネスプロセス] と [ビジネスオペレーション] のどちらかを選択します。
-
ドロップダウン・リストからテスト対象を選択します。
-
送信するメッセージのタイプを選択します。ページに以下のフィールドが表示されます。
-
[現在のプロダクション] — 現在実行中のプロダクションの名前 (表示専用)。
-
[ターゲット] — 前の [テスト・サービス] ページで選択したビジネス・プロセスまたはビジネス・オペレーション (表示専用)。
-
[要求タイプ] — 要求メッセージのリストから選択します。指定されているターゲットで有効な要求タイプのみが、サポートされているタイプのサブクラスも含め、表示されます。
-
-
選択したメッセージのプロパティに関する値を入力します。
要求メッセージにプロパティが含まれていない場合は、何も表示されません。
仮想ドキュメント・メッセージをテストする場合、テキスト・メッセージを貼り付けることができる自由形式のボックスがあります。このボックスの下に、メッセージのオブジェクト・プロパティを入力できます。
-
[実行] を選択して、入力した値が含まれた要求を送信し、結果を表示します。
テスト・サービスによる要求の試行に時間がかかる場合は、[待機中] のページに以下の表示専用情報が表示されます。
-
[ターゲット] — 要求に関連付けられているセッション ID
-
[要求タイプ] — 選択されたターゲットの要求タイプ。
-
[セッション ID] — 要求に関連付けられているセッション ID
-
[送信済み要求] — 要求が送信された日時。
-
[受信済み応答] — 待機中のステータスと、作業が進行中であることを示すグラフィック進行バー。
最後に、要求によって生成された応答の出力値が [結果] ページに表示されます。エラーがあれば、その完全なエラー・メッセージ・テキストと共に表示されます。
-
テストの完了後は、次のいずれかのコマンドを実行できます。
-
[完了] を選択してホーム・ページに戻ります。
-
[トレース] を選択して [ビジュアル・トレース] ページに移動し、プロダクション内でのメッセージの経路を視覚的にたどります。
EnsLib.Testing パッケージ内のクラスとメソッドを使用することもできます。詳細は、"クラス・リファレンス" の EnsLib.Testing.ServiceOpens in a new tab のエントリを参照してください。
プロダクションのコードのデバッグ
デバッグの最初の手順は、"プロダクションの監視" の説明に従ってトレースを有効にすることです。この手順で問題が発見されなければ、次のように、デバッガを使用してコードにステップインできます。
-
IDE でコードを編集して、デバッグを開始する箇所に BREAK コマンドを挿入します。
-
デバッグ対象のクラスを使用しているビジネス・ホストの [フォアグラウンド] 設定を有効にします。
-
プロダクションを起動します。手順 2 でマークしたジョブが、ターミナル内でフォアグラウンドで実行されます。
-
BREAK コマンドが検出されると、ターミナルがデバッグ・モードに入り、コードをステップスルーできるようになります。
詳細は、"コマンド行ルーチンのデバッグ" を参照してください。
%ETN ロギングの有効化
イベント・ログには、自動的に、システム・レベルの例外 (コード内の例外を含む) に関する部分的な情報が書き込まれます。これらのイベント・ログ・エントリの最後は、デフォルトで、次のようになります。
-- logged as '-' number - @' quit arg1/arg2 }'
このようなエラーのより完全な情報を入手するには:
-
^Ens.Debug("LogETN") グローバル・ノードを任意の値に設定します。
これにより、InterSystems IRIS でシステム・レベルの例外に関する追加の詳細情報が記録されます。
-
例外を引き起こしたと思われるコードを再実行します (メッセージの再送など)。
-
エントリの最後が次のようになっているイベント・ログを再チェックします。
-- logged as '25 Sep 2012' number 15 @' quit arg1/arg2 }'
この情報は、アプリケーション・イベント・ログ内のエントリを参照しています。具体的には、2012 年 9 月 25 日のアプリケーション・エラー・ログ内のエラー 15 を参照しています。
-
次に、これらの例外を検査するために、以下のどちらかを実行できます。
-
[システム処理]→[システムログ]→[アプリケーションエラーログ] を選択します。
-
^%ERN ルーチンを使用します。詳細は、"その他のデバッグ・ツール" を参照してください。
-