カスタム フィルタにより、アクションの実行方法をカスタム化できます。これは、以前に定義したスクリプト ファイルをアップロードしてもできるし、新しいものを書くこともできます。
MarkVision メッセンジャには、フィルタの定義のために非常に簡便なスクリプト言語が含まれています。以下に、カスタム フィルタを書く際に使えるステートメントが網羅されています。
ステートメント:
条件:
例として、付属の有効になったら実行フィルタをスクリプトとして見てみましょう。
IfThen (EventDataIs("state", "ACTIVE"))
Distribute
条件EventDataIs
の効果は、イベントのキーワード event.state の値を調べることです。これはコマンド行や電子メール メッセージに挿入できるのと同じキーワードです。最初のステートメントIfThen
は、条件EventDataIs ("state",
"ACTIVE")
が真の場合に、次のステートメントを実行します。条件EventDataIs
は、キーワード(state
)が与えられた値(ACTIVE
)と一致している場合に、真になります。次のステートメントDistribute
は、コマンドが実行されるようにします。
それでは、有効になったら実行フィルタが 30 秒間の遅延時間で設定されている場合をスクリプトとして見てみましょう。
{
WaitUntil (TimeIsAfter(30))
IfThen(EventDataIs("state", "ACTIVE"))
Distribute
}
中括弧({}
)は、ステートメントをリストにまとめるのに使われます。前の例では、IfThen
とその次のものが一つのステートメントとして扱われていたために必要ありませんでした。
ステートメントWaitUntil
により、スクリプトは条件が満たされるまで一時停止されます。条件TimeIsAfter
は、指定された時間が経過した後にのみ真偽を確認します。30 秒が経過すると、イベントが未だ真の場合は、ステートメント Distribute
がコマンドを実行します。
付属の有効化またはクリアされた時に実行フィルタは、スクリプトとして見ると、一つの Distribute
ステートメントです。
例えば、イベントとして用紙カセット無しを選択し、それがカセット 3 で起った時にのみ実行されるようにしたいとします。
また、コマンドの実行を 20 分間遅延させ、さらに 20 分後にも未だ条件が満たされていたら再びコマンドを実行したいとします。
このフィルタのために書くスクリプトを見てみましょう。
While (And(EventDataIs("state", "ACTIVE"), EventDataIs("location", "Tray 3")))
この例では、And
を使って複合条件が作られています。イベントがカセット 3 で真の場合にのみ While
ループに入ります。ループの中のプログラムは、条件 TimeIsAfter
が 1200 秒(20 分)待つように設定されていること以外は、有効になったら実行フィルタの内容と同じです。