
Aras Innovatorにおける複雑なサーバーメソッドの調査効率を上げるデバッグ方法
はじめまして。クレスコ・デジタルテクノロジーズの雪コです。
私はAras Innovatorに携わって3年目になります。
日々の業務では、処理が複雑だったりメソッドが深く入れ子になっていたりするため、内容の把握が難しいサーバーメソッドに触れる機会が多くあります。
これまでそうしたメソッドの調査には、ログを追加して動作を確認する方法を用いていましたが、手間を感じていました。そんな中、Visual Studioを使ってサーバーメソッドをデバッグする方法を知り、実際に取り入れてみたところ、調査の効率が大きく向上しました。
今回はその実体験をもとに、Visual Studioを活用したサーバーメソッドのデバッグ方法についてご紹介します。
■関連記事
→「話題のPLM ツール Aras Innovator とは?」
■あわせて読まれている資料
→Aras Innovator 開発支援ソリューション
目次[非表示]
- 1.Visual Studioの事前準備(プロジェクト作成)
- 2.サーバーメソッドのデバッグ方法
- 3.導入の効果
- 4.導入時の注意点
- 5.まとめ
- 6.引用元
Visual Studioの事前準備(プロジェクト作成)
大まかな作成手順は以下になります。
① プロジェクトを作成する
② 参照にIOM.dllを追加する
③ Aras Innovatorへの接続とサーバーメソッドを実行する処理を記載する
では、作成手順の詳細について説明します。
① プロジェクトを作成する
プロジェクトテンプレートは、コンソールアプリ(.NET Framework)を使用します。
フレームワークのバージョンは、Aras InnovatorのInstallation Guideに合わせるようにしてください。
今回はAras InnovatorのRelease28を使用するため、フレームワークのバージョンは「.NET Framework 4.7.2」を選択します。
② 参照にIOM.dllを追加する
※IOM.dllはコードツリーから取得する
③ Aras Innovatorへの接続とサーバーメソッドを実行する処理を記載する
まずは、Aras Innovatorに接続する処理をまとめたInnovatorAccessクラスを作成します。
このクラスでは、接続情報の設定やログイン処理など、基本的なアクセス機能を実装します。
次に、デバッグを行いたいサーバーメソッドの処理を記載するためのItemMethodクラスを作成します。
ここに記載する内容はコードツリーにあるmethod.configを参考にしています。
最後に、Program.cs(Mainメソッド)に、上記で作成したクラスを呼び出す処理を追加します。
これにより、Aras Innovatorへの接続からサーバーメソッドの実行まで、一連の流れが実現できます。
以上でプロジェクトの作成は完了です。
続いて、デバッグ方法について説明します。
サーバーメソッドのデバッグ方法
今回は、引数が必要なサーバーメソッドを想定してデバッグを行っていきます。
サーバーメソッドに渡す引数はProgram.cs(Mainメソッド)に、サーバーメソッドのソースコードはItemMethodクラスに記述します。
【サーバーメソッドに渡す引数の実装例】
【サーバーメソッドのソースコードの実装例】
ここまでの記載で準備は完了です。
続いて、実際にデバッグを開始します。
デバッグを開始するには、Visual Studioの開始ボタンをクリックします。
ここでは、apply後の処理にブレークポイントを置いて、apply前後の値を確認してみます。
確認した結果は以下になります。
値の部分に記載されているAMLを成形したものが以下になります。
【apply前の値(変数:item)】
【apply後の値(変数:result)】
簡単にapply前後の値を確認することができました。
続いて、導入のメリットと注意点について説明します。
導入の効果
導入の効果としては、大きく分けて以下の3つがあります。
① メソッド実行時の挙動を詳細に確認できる
条件分岐や繰り返し処理中、apply前後の変数の値などを確認できることで、
サーバーメソッドの中で何が起こっているのかをステップ毎に追跡出来ます。
これにより、複雑なサーバーメソッドの調査の効率が向上します。
② 例外やエラーの原因を特定しやすい
例外やエラーが発生した際、発生箇所とスタックトレースを明確に表示してくれます。
これにより、根本原因の特定が迅速になります。
③ 開発効率が向上する
上記の内容は処理結果をリアルタイムで確認できるため、
調査だけでなく、開発の際にも作業効率の向上が見込めます。
導入時の注意点
注意点として以下の2つがあります。
① トランザクションが効かない
Aras Innovatorでは、サーバーメソッドやアイテムの保存処理などを行うときに、
一連の処理を「トランザクション」としてまとめて管理します。
全ての処理が成功するとコミットされ、途中でエラーになるとロールバックされます。
しかし、Visual Studioでサーバーメソッドを実行した場合は、IOMを直接呼び出す形になり、
トランザクションが効かない状態でコードが実行されてしまいます。
そのため、アイテムを作成する処理の後にエラーにより異常終了したとしても、
データベースには作成されたアイテムが存在している状態になってしまいます。
② CCO(Core Context Object)が使えない
CCOは、Aras Innovatorがサーバーメソッドを実行した際に、内部的に生成するコンテキスト
情報の集合体です。
主に、実行ユーザや呼び出し元、セッションの情報などが挙げられます。
しかし、①と同様にVisual Studioでサーバーメソッドを実行した場合は、
IOMを直接呼び出す形になり、CCOが生成されない状態でコードが実行されてしまいます。
そのため、Visual Studioでサーバーメソッドの実行する際には、CCOが使えません。
上記2点に注意して是非活用していただければと思います。
まとめ
最後まで読んでいただきありがとうございました。
複雑なサーバーメソッドの調査効率をあげるデバッグ方法について紹介しましたが、いかがでしたでしょうか。
実際の業務では、今回紹介させていただいた方法を用いることで調査時間を半減させることができました。特に、戻り値に設定されない変数や配列の値の確認や、エラーの原因箇所の特定に役立っています。
そのため、同じようにサーバーメソッドの調査に悩んでいる方には、是非お勧めしたいです。
少しでも皆様の日々の業務にお役立ていただければ幸いです。
■サービス資料一覧はこちら↓