jp.go.aist.dmrc.platform.beans.interpreter
クラス PFScriptInterpreter

java.lang.Object
  上位を拡張 jp.go.aist.dmrc.platform.beans.interpreter.PFScriptInterpreter
すべての実装されたインタフェース:
java.io.Serializable, PFComponent, PFXMLSerializable, PFActionEventSource, PFEventSource, PFProcessTerminateEventSource

public class PFScriptInterpreter
extends java.lang.Object
implements PFComponent, PFXMLSerializable, PFActionEventSource, PFProcessTerminateEventSource

スクリプト言語の実行コンポーネント。 スクリプト言語で記述された文字列を解釈して実行し、MZアプリケーションと相互作用させることが可能。 MZ側から変数の取得と設定ができ、スクリプト内で"mz_event(番号)"および"mz_event2(番号,データ)"を 呼び出すとコンポーネントから所定のイベントを発生させることができる。

言語はデフォルトでJavaScriptと簡略化Java(BeanShell http://www.beanshell.org/)に対応。 言語の指定はメソッド起動か属性の設定で行い、JavaScriptはjs、Javaはjavaと指定する。 JRE6以降に追加されたjavax.script.*パッケージのAPIに対応する処理系があれば独自に追加可能。 例として、Python(Jython http://jython.org/)は対応するjython.jarを取得してパスに追加し、 言語指定をpythonとすれば利用できる。また、Ruby(JRuby http://www.jruby.org/) は対応するjruby.jarをパスに追加して言語をrubyとすれば利用できる。 ただし、PythonとRuby以外の言語を独自に追加した場合は、 MZ側イベント発生用の関数(mz_event/mz_event2)をスクリプト側で独自に設定する必要がある。

このコンポーネントから以下のイベントが発生する。

関連項目:
直列化された形式

コンストラクタの概要
PFScriptInterpreter()
          デフォルトコンストラクタ
 
メソッドの概要
 void addPFActionListener(PFActionListener lis)
          引数で与えられたイベントリスナを登録し、 アクションイベント発生時に処理を行う対象とする。
 void addPFProcessTerminateListener(PFProcessTerminateListener lis)
          引数で与えられたイベントリスナを登録し、 処理完了イベント発生時に処理を行う対象とする。
 void clear()
          スクリプト環境を初期化する。
 java.lang.Object evaluate()
          現在の環境で保存スクリプトを実行する(戻り値あり)。
 java.lang.Object evaluate(java.lang.String script)
          現在の環境でスクリプト文字列を実行する(戻り値あり)。
 java.lang.Object evaluateRuleTable(PFObjectTable table, boolean all)
          実行中の環境でルールテーブルを解釈して実行する。
 void execute()
          現在の環境で保存スクリプトを実行する(戻り値なし)。
 void execute(java.lang.String script)
          現在の環境でスクリプト文字列を実行する(戻り値なし)。
 void fireEvent(int eventNo)
          アクションイベントを発生させる。
 void fireEvent(int eventNo, java.lang.Object data)
          処理完了イベントを発生させる。
protected  void firePFActionPerformed(PFActionEvent event)
          アクションイベントを発生させる。
protected  void firePFProcessTerminated(PFProcessTerminateEvent event)
          処理完了イベントを発生させる。
 int getComponentID()
          コンポーネントIDを取得する。
 java.lang.String getComponentKey()
          コンポーネントキーを取得する。
 PFMultiLocaleString getComponentKeys()
          全ロケール分のコンポーネントキーを返す。
 java.lang.String getComponentName()
          コンポーネント名称を取得する。
 java.lang.String getComponentPublicName()
          コンポーネント公開名を取得する.
 java.lang.String getComponentString()
          コンポーネントの文字列表現を取得する。
 java.lang.String getLanguage()
          スクリプトの言語を取得する。
 java.util.Iterator getPFActionListenerList()
          アクションイベントリスナ配列を取得する。
 java.util.Iterator getPFProcessTerminateListenerList()
          処理完了イベントリスナ配列を取得する。
 java.lang.String getStoredScript()
          保存用スクリプト文字列を取得する。
 java.lang.Object getVariable(java.lang.String name)
          実行中のスクリプト環境から変数を取得する。
 boolean isAllowPullTransfer()
          他PFからのPull型コンポーネント転送要求に対する可否属性を取得する.
 boolean isAllowPushTransfer()
          他PFへのPush型コンポーネント転送要求に対する可否属性を取得する.
 boolean isAllowRemoteInvocation()
          他PFからのコンポーネント連携要求に対する可否属性を取得する.
 void localeUpdated()
          ロケール変更に対応する。
 void readXML(PFXMLLoader in)
          コンポーネントのXML入力.
 void removePFActionListener(PFActionListener lis)
          引数で与えられたイベントリスナを削除し、 アクションイベント発生時に処理を行う対象から外す。
 void removePFProcessTerminateListener(PFProcessTerminateListener lis)
          引数で与えられたイベントリスナを削除し、 処理完了イベント発生時に処理を行う対象から外す。
 void setAllowPullTransfer(boolean flag)
          他PFからのPull型コンポーネント転送要求に対する可否属性を設定する.
 void setAllowPushTransfer(boolean flag)
          他PFへのPush型コンポーネント転送要求に対する可否属性を設定する.
 void setAllowRemoteInvocation(boolean flag)
          他PFからのコンポーネント連携要求に対する可否属性を設定する.
 void setComponentID(int id)
          コンポーネントIDを設定する。
 void setComponentKey(java.lang.String key)
          コンポーネントのキー情報を設定する
 void setComponentKeys(PFMultiLocaleString keys)
          全ロケール分のコンポーネントキーを設定する。
 void setComponentPublicName(java.lang.String publicName)
          コンポーネント公開名を設定する.
 void setLanguage(java.lang.String name)
          スクリプトの言語を設定する。
 void setStoredScript(java.lang.String script)
          保存用スクリプト文字列を設定する。
 void setVariable(java.lang.String name, java.lang.Object obj)
          実行中のスクリプト環境に変数を設定する。
 void setVariableByExecute(java.lang.String name, java.lang.String value)
          実行中の環境で変数を設定するスクリプトを作成して実行する。
 void writeXML(PFXMLGenerator out)
          コンポーネントのXML出力.
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

PFScriptInterpreter

public PFScriptInterpreter()
デフォルトコンストラクタ

メソッドの詳細

getComponentName

public java.lang.String getComponentName()
コンポーネント名称を取得する。

定義:
インタフェース PFComponent 内の getComponentName
戻り値:
コンポーネント名
関連項目:
PFComponent.getComponentName()

getComponentKey

public java.lang.String getComponentKey()
コンポーネントキーを取得する。

定義:
インタフェース PFComponent 内の getComponentKey
戻り値:
コンポーネントキー文字列
関連項目:
PFComponent.getComponentKey()

setComponentKey

public void setComponentKey(java.lang.String key)
コンポーネントのキー情報を設定する

定義:
インタフェース PFComponent 内の setComponentKey
パラメータ:
key - 設定するコンポーネントのキー
関連項目:
PFComponent.setComponentKey(java.lang.String)

getComponentKeys

public PFMultiLocaleString getComponentKeys()
全ロケール分のコンポーネントキーを返す。

戻り値:
全ロケール分のコンポーネントキー

setComponentKeys

public void setComponentKeys(PFMultiLocaleString keys)
全ロケール分のコンポーネントキーを設定する。

パラメータ:
keys - 全ロケール分のコンポーネントキー

getComponentID

public int getComponentID()
コンポーネントIDを取得する。

定義:
インタフェース PFComponent 内の getComponentID
戻り値:
コンポーネントID
関連項目:
PFComponent.getComponentID()

setComponentID

public void setComponentID(int id)
コンポーネントIDを設定する。
コンポーネントIDはプラットフォームPFComponentBusから設定される。 各コンポーネント内では操作しないこと。

定義:
インタフェース PFComponent 内の setComponentID
パラメータ:
id - 設定するコンポーネントID
関連項目:
PFComponent.setComponentID(int)

getComponentString

public java.lang.String getComponentString()
コンポーネントの文字列表現を取得する。
形式:"Component Name" [ ID : "ID" ]

定義:
インタフェース PFComponent 内の getComponentString
戻り値:
コンポーネントの文字列表現を返す。
関連項目:
PFComponent.getComponentString()

getComponentPublicName

public java.lang.String getComponentPublicName()
コンポーネント公開名を取得する.

定義:
インタフェース PFComponent 内の getComponentPublicName
戻り値:
コンポーネント公開名

setComponentPublicName

public void setComponentPublicName(java.lang.String publicName)
                            throws PFComponentException
コンポーネント公開名を設定する.
空文字のみの公開名は、nullに置き換える。数字のみの公開名は許可しない。 また、既存コンポーネントとの重複も認めない.

定義:
インタフェース PFComponent 内の setComponentPublicName
パラメータ:
publicName - 設定するコンポーネント公開名
例外:
PFComponentException - 規約に反する名前が設定されようとした場合

isAllowRemoteInvocation

public boolean isAllowRemoteInvocation()
他PFからのコンポーネント連携要求に対する可否属性を取得する.

定義:
インタフェース PFComponent 内の isAllowRemoteInvocation
戻り値:
コンポーネント連携要求可否属性

setAllowRemoteInvocation

public void setAllowRemoteInvocation(boolean flag)
他PFからのコンポーネント連携要求に対する可否属性を設定する.

定義:
インタフェース PFComponent 内の setAllowRemoteInvocation
パラメータ:
flag - コンポーネント連携要求に対する可否

isAllowPullTransfer

public boolean isAllowPullTransfer()
他PFからのPull型コンポーネント転送要求に対する可否属性を取得する.

定義:
インタフェース PFComponent 内の isAllowPullTransfer
戻り値:
Pull型コンポーネント転送要求可否属性

setAllowPullTransfer

public void setAllowPullTransfer(boolean flag)
他PFからのPull型コンポーネント転送要求に対する可否属性を設定する.

定義:
インタフェース PFComponent 内の setAllowPullTransfer
パラメータ:
flag - Pull型コンポーネント転送要求に対する可否

isAllowPushTransfer

public boolean isAllowPushTransfer()
他PFへのPush型コンポーネント転送要求に対する可否属性を取得する.

定義:
インタフェース PFComponent 内の isAllowPushTransfer
戻り値:
Push型コンポーネント転送要求可否属性

setAllowPushTransfer

public void setAllowPushTransfer(boolean flag)
他PFへのPush型コンポーネント転送要求に対する可否属性を設定する.

定義:
インタフェース PFComponent 内の setAllowPushTransfer
パラメータ:
flag - Push型コンポーネント転送要求に対する可否

getPFActionListenerList

public java.util.Iterator getPFActionListenerList()
アクションイベントリスナ配列を取得する。

定義:
インタフェース PFActionEventSource 内の getPFActionListenerList
戻り値:
イベントリスナイテレータ

addPFActionListener

public void addPFActionListener(PFActionListener lis)
引数で与えられたイベントリスナを登録し、 アクションイベント発生時に処理を行う対象とする。

定義:
インタフェース PFActionEventSource 内の addPFActionListener
パラメータ:
lis - 追加対象イベントリスナ

removePFActionListener

public void removePFActionListener(PFActionListener lis)
引数で与えられたイベントリスナを削除し、 アクションイベント発生時に処理を行う対象から外す。

定義:
インタフェース PFActionEventSource 内の removePFActionListener
パラメータ:
lis - 削除対象イベントリスナ

firePFActionPerformed

protected void firePFActionPerformed(PFActionEvent event)
アクションイベントを発生させる。

パラメータ:
event - アクションイベント

getPFProcessTerminateListenerList

public java.util.Iterator getPFProcessTerminateListenerList()
処理完了イベントリスナ配列を取得する。

定義:
インタフェース PFProcessTerminateEventSource 内の getPFProcessTerminateListenerList
戻り値:
イベントリスナイテレータ

addPFProcessTerminateListener

public void addPFProcessTerminateListener(PFProcessTerminateListener lis)
引数で与えられたイベントリスナを登録し、 処理完了イベント発生時に処理を行う対象とする。

定義:
インタフェース PFProcessTerminateEventSource 内の addPFProcessTerminateListener
パラメータ:
lis - 追加対象イベントリスナ

removePFProcessTerminateListener

public void removePFProcessTerminateListener(PFProcessTerminateListener lis)
引数で与えられたイベントリスナを削除し、 処理完了イベント発生時に処理を行う対象から外す。

定義:
インタフェース PFProcessTerminateEventSource 内の removePFProcessTerminateListener
パラメータ:
lis - 削除対象イベントリスナ

firePFProcessTerminated

protected void firePFProcessTerminated(PFProcessTerminateEvent event)
処理完了イベントを発生させる。

パラメータ:
event - 処理完了イベント

localeUpdated

public void localeUpdated()
ロケール変更に対応する。

定義:
インタフェース PFComponent 内の localeUpdated
関連項目:
PFComponent.localeUpdated()

readXML

public void readXML(PFXMLLoader in)
コンポーネントのXML入力.

定義:
インタフェース PFXMLSerializable 内の readXML
パラメータ:
in - XML入力ユーティリティ

writeXML

public void writeXML(PFXMLGenerator out)
              throws java.io.IOException
コンポーネントのXML出力.

定義:
インタフェース PFXMLSerializable 内の writeXML
パラメータ:
out - XML出力ユーティリティ
例外:
java.io.IOException

fireEvent

public void fireEvent(int eventNo)
アクションイベントを発生させる。 スクリプト内で呼び出される。

パラメータ:
eventNo - イベント番号

fireEvent

public void fireEvent(int eventNo,
                      java.lang.Object data)
処理完了イベントを発生させる。 スクリプト内で呼び出される。

パラメータ:
eventNo - イベント番号
data - イベント内包データ

evaluate

public java.lang.Object evaluate(java.lang.String script)
                          throws PFComponentException
現在の環境でスクリプト文字列を実行する(戻り値あり)。

パラメータ:
script - 文字列
例外:
PFComponentException

execute

public void execute(java.lang.String script)
             throws PFComponentException
現在の環境でスクリプト文字列を実行する(戻り値なし)。

パラメータ:
script - 文字列
例外:
PFComponentException

evaluate

public java.lang.Object evaluate()
                          throws PFComponentException
現在の環境で保存スクリプトを実行する(戻り値あり)。

例外:
PFComponentException

execute

public void execute()
             throws PFComponentException
現在の環境で保存スクリプトを実行する(戻り値なし)。

例外:
PFComponentException

clear

public void clear()
           throws PFComponentException
スクリプト環境を初期化する。

例外:
PFComponentException

setVariable

public void setVariable(java.lang.String name,
                        java.lang.Object obj)
                 throws PFComponentException
実行中のスクリプト環境に変数を設定する。 指定した値はその型のまま変数に設定されるため注意が必要。 例えば数値を指定しようとして文字列が設定されたり、数値でもBigIntegerやIntegerの違いで スクリプト内で計算ができないという問題が発生する。 安全のためには変数設定用のスクリプト文字列を実行して変数の値を設定した方がよい。

パラメータ:
name - 変数名
obj - 値
例外:
PFComponentException

getVariable

public java.lang.Object getVariable(java.lang.String name)
                             throws PFComponentException
実行中のスクリプト環境から変数を取得する。

パラメータ:
name - 変数名
戻り値:
例外:
PFComponentException

setVariableByExecute

public void setVariableByExecute(java.lang.String name,
                                 java.lang.String value)
                          throws PFComponentException
実行中の環境で変数を設定するスクリプトを作成して実行する。 現バージョンではすべて"(変数名)=(値)"という文字列を作成。変数名が空の場合は何もしない。

パラメータ:
name - 変数名
value - 値を表す文字列
例外:
PFComponentException - 実行エラー

evaluateRuleTable

public java.lang.Object evaluateRuleTable(PFObjectTable table,
                                          boolean all)
                                   throws PFComponentException
実行中の環境でルールテーブルを解釈して実行する。 ルールテーブルは2列以上の文字列型のテーブルで、0列目に条件、 1列目に条件を満たしたときの処理を記述しているものとする。 2列目に文字列型がある場合は、条件を満たしていないときの処理として解釈する。 条件と処理はそれぞれ現在の言語に応じた記述をする必要がある。 引数allをtrueにした場合は与えられたすべてのルールを実行してその結果をリストとして返し、 falseにした場合は最初に条件を満たした処理を実行してその結果のみを返す。

パラメータ:
table - ルールテーブル
all - 全ルールを実行する場合true
戻り値:
唯一の実行結果(Object)または全ルールの実行結果(PFObjectList)
例外:
PFComponentException - 実行エラー

getLanguage

public java.lang.String getLanguage()
スクリプトの言語を取得する。

戻り値:
言語名

setLanguage

public void setLanguage(java.lang.String name)
スクリプトの言語を設定する。

パラメータ:
name - 言語名

setStoredScript

public void setStoredScript(java.lang.String script)
保存用スクリプト文字列を設定する。

パラメータ:
script - 文字列

getStoredScript

public java.lang.String getStoredScript()
保存用スクリプト文字列を取得する。

戻り値:
文字列