28.10.2014 Views

Getting Started - Magic Software DEVNET Japan - Magic Software ...

Getting Started - Magic Software DEVNET Japan - Magic Software ...

Getting Started - Magic Software DEVNET Japan - Magic Software ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

第 11 章 - ハンドラ<br />

2 . 一 つ 以 上 のハンドラによる 同 一 イベントの 処 理<br />

場 合 によって、 一 つのイベントに 対 応 する 複 数 のハンドラを 定 義 することがあります。<br />

<strong>Magic</strong> エンジンのデフォルトの 動 作 では、 発 動 されたイベントは(<strong>Magic</strong> エンジンのルールに 従 って) 最 初 に 対 応 づけられ<br />

たハンドラが 処 理 を 行 い、その 後 そのイベントはクリアされます。したがって、もしハンドラが 他 に 定 義 されていたとしても<br />

その 処 理 は 行 われません。<br />

たとえば、< 印 刷 >というユーザ 定 義 イベントに 対 して、 二 つのハンドラが 定 義 してあり、 一 つは 顧 客 からの 注 文 書 を 印 刷<br />

し、 他 方 はその 注 文 に 対 する 顧 客 への 請 求 書 を 印 刷 するとします。このとき、<strong>Magic</strong> エンジンの 実 行 ルールにより、どちらか<br />

のハンドラのみが< 印 刷 >イベントの 発 動 に 対 応 して 処 理 を 行 います。<br />

どのハンドラがイベントを 処 理 するのでしょうか?<br />

<strong>Magic</strong> エンジンの 実 行 ルールにより、 実 行 ツリー 上 の 最 下 位 にあるハンドラがイベントを 処 理 します。たとえば 上 記 の 例 に<br />

おいて、 開 発 者 が 注 文 書 を 印 刷 するハンドラを 請 求 書 印 刷 のためのハンドラよりも([ロジック]エディタ 内 の 位 置 で) 後 に<br />

定 義 した 場 合 、< 印 刷 >イベントを 処 理 するのは 注 文 書 を 印 刷 するハンドラになります。<br />

両 方 のハンドラに 処 理 を 行 わせたい 場 合 はどうしたらよいのでしょうか?<br />

上 記 の 例 において、 注 文 書 を 印 刷 するハンドラの[ 伝 播 ] 特 性 を[Yes]に 設 定 します。この 設 定 により、<strong>Magic</strong> エンジン<br />

は 注 文 書 印 刷 のハンドラ 実 行 後 も< 印 刷 >イベントを 発 動 された 状 態 に 維 持 します。<br />

内 部 ハンドラに 処 理 の 追 加 を 行 いたい 場 合 はどうしたらよいのでしょうか?<br />

<strong>Magic</strong> エンジン 内 部 のハンドラを 直 接 変 更 することはできません。しかし 内 部 のハンドラが 内 部 イベントを 処 理 する 前 に、<br />

[イベント]ロジックユニットに 定 義 するハンドラが 先 に 処 理 を 行 うように 設 定 することができます。<strong>Magic</strong> エンジンに 組 込<br />

まれている 内 部 ハンドラは、 常 に 実 行 ツリー 上 の 最 上 位 に 位 置 しているためです。<br />

分 かりやすい 例 として、[ 終 了 ]イベントについて 操 作 してみましょう。<br />

プログラムの 終 了 前 に、 顧 客 からの 注 文 書 を 印 刷 するかどうかをエンドユーザに 確 認 したいような 場 合 は、[ 終 了 ]イベン<br />

トに 対 するハンドラ 処 理 に 手 を 加 える 必 要 があります。このようなときには、[ 終 了 ]イベントに 対 応 して[イベント]ロジッ<br />

クユニットに 新 しく 定 義 した 注 文 書 印 刷 の 確 認 と 実 行 を 行 うハンドラの[ 伝 播 ] 特 性 を[Yes]とすることで、 引 き 続 き 内 部<br />

の[ 終 了 ]ハンドラが 実 行 され、 印 刷 処 理 後 にプログラムが 終 了 するようになります。<br />

[ 伝 播 ] 特 性<br />

[ 伝 播 ] 特 性 による 動 作 の 違 いは 次 の 通 りです。<br />

• Yes …… <strong>Magic</strong> エンジンは、 実 行 ツリー 上 のより 上 位 に 定 義 されているハンドラを 探 し、 実 行 しようとします。( 定 義 さ<br />

れていないときは 何 も 実 行 されません。)<br />

• No …… <strong>Magic</strong> エンジンはイベントの 発 動 状 態 をクリアするため、 上 位 のハンドラは 実 行 されません。<br />

3 . イベントのハンドラ<br />

前 の 章 でイベントを 定 義 し、[イベント 実 行 ] 処 理 コマンドを 使 用 してそのイベントを 発 動 しました。<br />

ここでは、そのイベントに 対 応 するハンドラを 作 成 しましょう。<br />

この 例 では、< 収 入 レベル>が 4,000,000 よりも 大 きい 場 合 にはの 値 を 'True' にするような ハンドラを 作 成 します。<br />

以 下 の 手 順 で[イベント]ロジックユニットにハンドラを 定 義 します。<br />

1. < 顧 客 -ラインモード>プログラムにズーム(F5)します。<br />

2. [ロジック]エディタを 選 択 します。<br />

3. [ロジック]エディタの 最 終 行 にパークします。<br />

4. メニューから[ 編 集 /ヘッダ 行 作 成 ](Ctrl+H)を 選 択 し、ヘッダ 行 を 作 成 します。<br />

154 <strong>Getting</strong> <strong>Started</strong><br />

<strong>Magic</strong> uniPaaS V1Plus

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!