OutSystemsで実現したいことから、実装方法を調べられるようにすることを企図したカテゴリ。各種ファイル操作について。
このカテゴリは、記述すべきことを思いつく度に更新します。
OutSystemsアプリケーション内で発生した問題に対処する方法。
Table of Contents
モジュールをファイルに出力する
Forumなどで質問する際に、実装を確認するためにモジュールをファイル形式で提供するよう求められることがあります。
IPPが効いている環境から出力したファイルは、他の(ライセンスが違う)環境にはそのままインストールできません(Forgeを経由すれば別)。
Service Studio
Moduleメニュー > Export > Save or Save As
omlという形式で保存される。
Integration Studio
Extensionをファイルにエクスポートする方法。
Integration StudioでExtensionを開く。
Fileメニュー > Save or Save As
出力ファイル形式はxif。
実行時の動作を調査する
作成したアプリケーションを実際に動作させ、動作の様子を観察することによって問題を発見する方法。
デバッグでローコード部分のロジックを調査する
最も基本となる調査方法。Service Studioを調査対象のモジュールに接続し、Action Flow上でロジックが流れていくのを確認し、同時にその時点での変数の値を確認できる。
実行方法は公式ドキュメント(アプリケーションをデバッグする)を参照。
注意点として、一般のプログラミング言語・環境では、デバッグ中に変数の値を書き換える方法があるが、OutSystemsにはない。
Producerモジュールのデバッグをする
ユーザーのリクエストを直接受け付けるモジュール以外(Producerモジュール)をデバッグするには、1手間追加する必要があります。
例えばA, Bというモジュールがあり、A->Bの順でActionを呼び出して使っているとします。このとき、Bモジュールをデバッグするには、
- Service StudioでBモジュールを開く
- 画面下部の「Debuggerタブ」を開く
- Debuggerタブ内の「Entry Module」からAを選択する
- 「START DEBUGGING」ボタンをクリックしてデバッグを開始する
ブラウザからサーバに送られる通信内容を確認する
ブラウザとサーバーの境界で問題が発生しているときは、通信内容を確認することで調査を進められることがあります。
Traditional Web: SubmitやAjax Submitするときに通信内容を確認する
Reactive Web App: Client ActionからServer Action等を呼び出すときの通信内容を確認する
また、JavaScriptをラップした部品を使っている場合、JavaScriptやCSSのファイルを想定通りに読み込めているかを確認することが役立つこともある。
手軽な方法としては、ブラウザの開発者ツールを起動(F12キー)し、そのネットワークタブを開いたままアプリケーションを操作すると、その間の通信を確認できます。
以下の例は、Reactive Web AppをChromeの開発者ツールでキャプチャしたもの。CheckRoleWithServer というServer ActionをInput Parameter無しでリクエストしたときの通信。このようにパラメータ・結果のHTTPステータス・戻り値等を確認できる。
あるいは、Fiddlerのような通信をキャプチャしてくれるソフトウェアを利用する方法もあります。
モバイルアプリケーションの実機デバッグ
端末にインストールしたアプリケーションをService Studioに接続してデバッグできます。
参考:
モバイルアプリケーションでトラブルシューティングする方法のまとめ のChrome/Service Studio/Android Studioと実機を接続してのデバッグ
ログを確認する
内容が多いので、別の記事に記述予定
Forgeコンポーネント
Forgeコンポーネントもまた、OutSystemsのアプリケーション・モジュールであるため、一般的な調査方法は通常のOutSystemsモジュールと変わりません。
ただし、インストールしたForgeコンポーネントのバージョンが最新でないことによってドキュメントや掲示板の前提バージョンと異なることがあります。
インストールされているForgeコンポーネントのバージョンを調べる方法として、
- Forge Components Installed Versions (別のForgeコンポーネント) で確認
- Merge/Compareの機能を使って手動で特定する
があります。
参考: