同一イベントで複数のロジックユニットを処理する

同一イベントに対して複数の[イベント]ロジックユニットが定義されている場合があります。

このような場合、Magic uniPaaSの実行規則に基づき最初のロジックユニットが実行され、これ以降のイベントはクリアされます。従って、他のロジックユニットは実行されません。

例えば、[印刷]という2つのユーザ定義イベントが定義されているものとします。1つは注文データを印刷するもので、もう1つは送り状を印刷するものです。Magic uniPaaSの実行規則によると、このうち1つのロジックユニットのみ実行されます。

どちらのロジックユニットが処理されるのか?

Magic uniPaaSの実行規則によると、実行ツリーの中で最も実行レベルの低いロジックユニットが処理されます。上記の例では、送り状の印刷処理の下位(ロジックエディタ内の下位の位置)に注文データ印刷のロジックユニットが定義されている場合、注文データのロジックユニットが実行されます。

両方のロジックユニットを処理させたい場合は?

上記の例で、両方のロジックユニットを処理させたい場合、注文データ印刷のロジックユニットの[伝播]特性を「Yes」に設定します。この設定により、注文データ印刷のロジックユニットが終了した後に[印刷]イベントが保持されるようになります。

内部ハンドラの処理を追加することができるか?

Magic uniPaaSの内部ハンドラにアクセスすることはできません。しかし、Magic uniPaaSの内部のハンドラを実行する前に内部イベントを処理するための[イベント]ロジックユニットを定義することはできます。

Magic uniPaaSの内部ハンドラは、常に実行ツリー内の最も高いハンドラとして位置しているため、このようにすることが可能になります。

例えば、[終了]イベントの処理で説明します。

エンドユーザに対して、プログラムを終了する前に注文データを印刷するかどうか確認させたい場合、[終了]イベントを処理する必要がります。しかし、[終了]イベントに対するロジックユニットを定義すると、Magicの内部ハンドラとしての[終了]イベントは実行されなくなり、プログラムは終了しなくなります。[終了]イベントのロジックユニットを処理し、またMagic uniPaaSに[終了]イベントに対する内部ハンドラを実行させるためには、ロジックユニットの[伝播]特性を「Yes」に設定する必要があります。