UJMLサンプル110:importとexportの話 その3 state-machineのimport/export(2006/05/06)
今回は<state-machine>エレメントのimport/exportの話。<state-machine>はUJMLのソースコードをコンポーネント化するときに重要なポイントだが、コンポーネントをimport/exportにより共有することも可能である。今回はその簡単なサンプルを紹介する。
親(exportする側)は下のmain.ujmlのようにステートマシンの宣言時にaccess属性をexportとする。これにより、リンク先の子パーティション内でこのステートマシンをimport可能だ。このステートマシンは数値12345を返す関数fHugaを実装しているだけだが、_link()先のnewPart.ujml内でfHugaを呼び出して画面にラベル表示している。
---main.ujml
<ujml>
<application>
<state-machines>
<state-machine name="smHuga" access="export">
<functions>
<function name="fHuga" type="int" visibility="public">
<return>12345</return>
</function>
</functions>
</state-machine>
</state-machines>
<script>
_link("test","build/110_newPart.ujbc");
</script>
</application>
</ujml>
----
----newPart.ujml
<ujml>
<partition>
<state-machines>
<state-machine name="smHuga" access="import">
<functions>
<function name="fHuga" type="int" visibility="public"/>
</functions>
</state-machine>
</state-machines>
<state-variables>
<state-var name="sHoge" type="boolean"/>
</state-variables>
<variables>
<var name="val" type="int"/>
</variables>
<script>
val = smHuga.fHuga();
sHoge = true;
</script>
<states>
<state var="sHoge">
<transition value="true">
<display>
<label>
<text><eval>val</eval></text>
<bg>&_COLOR_WHITE;</bg>
</label>
</display>
</transition>
</state>
</states>
</partition>
</ujml>
----
ソースコードダウンロード用:
Download 110_main.ujml
Download 110_newPart.ujml
コメント