Magicエンジン > Magicエンジンの実行規則(オンライン)
タスク前が実行された後、データビューレコードは以下のように処理されます。
レコード前
データビューの最初のレコードに位置付け、レコードを取得します。
注意: |
リッチクライアントタスクでは、レコードが見つからない場合、作成モードでタスクがオープンされます。[タスク特性]の[登録]特性が「Yes」に設定されている場合のみこのように動作します。「No」の場合は、タスクは終了します。 オンラインタスクでは、[タスク特性]の[空のデータビュー許可]特性の設定内容によって動作が異なります。 |
[代入]特性はすべての変数項目で評価されます。タスクが登録モードの場合、カラムの[代入]特性も評価されます。
データソースに対するすべてのリンクが、現在のレコードに対して実行されます。
[タスク特性]の[チェック時期]特性が、「B=前置」に設定されている場合、Magicは[タスク終了条件]特性を評価します。
レコードループが実行されます。つまり、この時点からデータソースカラムを処理することができます。
[レコード前]ロジックユニットの処理コマンドが実行されます。
コントロールの処理
オンラインタスクの各レコードに対し、アクセスされた[コントロール]ロジックユニットが実行されます。エンドユーザは、キーボード(TabまたはShift+Tab)を使用するか、マウスでコントロールをクリックすることで、コントロールにアクセスすることができます。
コントロール前 エンドユーザによってアクセスされる各コントロールに対し、[コントロール前]ロジックユニットの処理コマンドが実行されます。
コントロール検証 [コントロール検証]ロジックユニットが設定されたコントロールからカーソルが抜けたり、(高速モードの場合)コントロールをスキップして通過した場合、[コントロール検証]に定義された処理コマンドが実行されます。このコントロールをスキップして異なるコントロールにカーソルが移動した場合、高速モードでスキップされたことになります。
コントロール後 カーソルがコントロールから抜けた場合、[コントロール後]が実行されます。エンドユーザが別のコントロールにカーソルを移動させたり、(別のレコードに移動することで)レコード処理を終了させたり、タスクを終了した場合に、このトリガが発生します。
項目の処理
オンラインタスクやリッチクライアントタスクの場合、項目の値が変更されると[項目変更]ロジックユニットが実行されます。
レコード後
オンラインタスクやリッチクライアントタスクとブラウザタスクでは、修正されたレコードに対してのみ[レコード後]ロジックユニットが実行されます。
バッチタスクの場合は、常に[レコード後]が実行されます。
オンラインタスクやリッチクライアントタスクとブラウザタスクでは、エンドユーザがレコードの処理を抜けた時点で[レコード後]ロジックユニットが実行されます。これは以下のような場合に発生します。
キーボードまたはマウスのどちらかを使用して、エンドユーザが別のレコードに移動した場合。
エンドユーザは、タスクモード(修正、登録、照会)を変更した場合。
エンドユーザがレコードを削除した場合。
エンドユーザの操作やタスク終了条件が評価されたことによって、タスクの実行が終了した場合
タスクの処理を終了する場合、レコードループが最初に終了します。
レコードの終了処理
レコードが修正された場合、レコードが保存され[レコード後]ロジックユニットが実行されます。レコードが修正されない場合は、これらの処理は実行されません。
次にタスクの終了処理に移ります。
注意: |
オンラインタスクの場合、テーブル内の変数項目を更新すると、現在のレコードだけが新しい値で更新されます。 リッチクライアントタスクの場合は、全てのレコードが新しい値で更新されます。変数項目の[代入]特性に値が設定されていない場合にのみ、このような動作になります。[代入]特性に値が設定されている場合、他の全てのレコードに対してこの値が表示されます。 以下の例のように、「変数項目」は、[レコード前]で更新される変数項目です。オンラインタスクの場合は、現在パークしているレコードだけが更新されます。 |