Skip to main content

 

アプリケーションの開発

 

OutSystems

スレッド

OutSystemsでは、以下によりスレッドが発生する場合があります。

  • Platform Serverにリクエストされたサーバーアクション
  • モバイルアプリのユーザーからトリガーされたクライアントアクション、またはモバイルアプリでトリガーされたイベント(画面のOnReadyイベントなど)
  • 起動されたTimerアクション
  • Processインスタンスの実行
  • モジュールにより公開されたインテグレーションメソッド(SOAP WebサービスまたはRESTサービス)

スレッドの実行は、たとえばボタンが押されると実行されるアクションやWeb Serviceメソッド(Web Serviceメソッドの呼び出し)などのような、デザインされたアクションフローに従います。

モジュール要素やランタイム値を調べたい場所でブレークポイントを使用すると、モジュールのスレッド実行をサスペンドすることができます。

ブレークポイントで実行フローをサスペンドする際のデバッガの動作は、スレッドの種類により異なります。

  • クライアント/サーバーアクションまたはモバイルアプリイベントからのスレッド: これらのスレッドは、Webまたはモバイルアプリの画面上でユーザーがとったアクション、またはモバイルアプリ内でトリガーされたイベント(OnReady、OnInitializeなど)により作成されます。そして設定しておいたブレークポイントで分離・サスペンドされます。これは他のすべてのユーザーのPCでも同様です。

  • 他のタイプのスレッド: Processフロー、Timerアクション、インテグレーションメソッドなどを実行するスレッドは、Public Areaでどのユーザーが開始したデバッグセッションのブレークポイントに到達しても、必ず実行をサスペンドされます。これは分離されていないためです。このため、自分のスレッドだけでなく他のユーザーのスレッドもデバッグすることになりえます。逆もまた同様です。こうした状況を避けるには、同一モジュールをデバッグ中のユーザーが他にもいる場合には、[Users]タブにチェックを入れる必要があります。チェックを入れた場合、サスペンドされたスレッドが自分のものか確認するため、サスペンドされた各スレッドのモジュール要素とランタイム値を([Scope]タブで)自ら確認する必要があります。

**モバイルアプリではJavaScriptのevent loop同時実行モデルにより、実行できるクライアント側スレッドは1つのみとなります。ただし、サーバーで実行中のアクション(サーバーアクションまたはデータアクションなど)で実行ポイントがサスペンドされた場合、他のクライアント側イベント(OnAfterFetchイベントやAggregateなど)が発生する可能性はあります。

その場合、[Debugger]タブの[Thread]タブに追加スレッドが表示されます。イベントハンドラアクションでブレークポイントを設定している場合、このブレークポイントに到達するとService Studioはそのアクションフローをキャンバスに表示します。

サーバースレッドの実行を中止する

サーバーで実行中のアクションに対応するサーバースレッドのデバッグ中に、その実行を中止し、終了させることができます。

これには、[Debugger]ツールバーまたは[Debugger]メニューの[Abort Running Server Threads]ボタンを使用します。

すべてのサーバースレッドの実行のサスペンド

1つ以上のサーバースレッドの実行に想定以上の時間がかかり、異常が疑われる場合は、実行をサスペンドすることができます。

Debuggerメニューの[Suspend Running Server Threads]オプションを選択します。各スレッドにつき、[Threads]タブにエントリが作成されます。

サスペンドを実行すると、Service Studioはスレッドのサスペンド時にサーバースレッドが実行していた要素にフォーカスします。

Web Serviceメソッドの呼び出しやデータベースクエリなど、現在実行中のものがプラットフォームにより制御されているものではない場合、このオプションは即座に動作しない可能性があります。データベースクエリの場合、終了していないとサーバースレッドが効果的にサスペンドされません。

  • Was this article helpful?