アクションでフィルタを使用する

簡易フィルタを使用する

簡易フィルタは次のような場合に使用します。

デバイスをフォルダに追加、またはフォルダから削除した後で、指定された時間だけアクションの実行を遅延するには[with a delay of(遅延時間)]オプションを使用します。

[Trigger on Active(有効になったら起動)]フィルタを使用する

条件が有効になったときにのみコマンドが実行されるようにアクションを設定するには、[Trigger on Active(有効になったら起動)]フィルタを選択します。 たとえば、「Paper Tray Missing(用紙カセットがありません)」イベントを監視している場合、監視対象プリンタからカセットを取り外すと、このプリンタにより、有効な状態の「Paper Tray Missing(用紙カセットがありません)」イベントが生成されます。 有効状態によりフィルタ条件が満たされ、指定されたアクションが実行されます。 用紙カセットが取り付けられると、プリンタにより、クリア状態の「Paper Tray Missing(用紙カセットがありません)」イベントが生成されます。 クリア状態ではフィルタ条件は満たされないため、指定されたアクションは実行されません。

[Trigger on Either Active or Clear(有効化またはクリアされたときに起動)]フィルタを使用する

条件が有効またはクリアされたときにアクションが実行されるように設定するには、[Trigger on Either Active or Clear(有効化またはクリアされたときに起動)]フィルタを選択します。 たとえば、紙づまりの除去に必要な時間の平均値を判断するために、プリンタで発生するすべての紙づまりのログを記録するにはこのフィルタを使用します。 紙づまりが発生すると、プリンタにより有効状態のイベントが生成されます。 これにより、フィルタの条件が満たされ、アクションが実行されます。 紙づまりが除去されると、プリンタによりクリア状態のイベントが生成されます。 このイベントでも、フィルタの条件が満たされ、アクションが実行されます。 この結果、ログファイルには紙づまりが発生した時刻と、除去された時刻の 2 行が記録されます。

カスタムフィルタを使用する

アクションの実行方法を定義するにはカスタムフィルタを使用します。 スクリプトファイルをアップロードするか、新しいスクリプトファイルを作成します。 MarkVision Messenger には、フィルタを定義するための非常に簡単なスクリプト言語が用意されています。 以下にカスタムフィルタで使用できるすべてのステートメントと条件を示します。

ステートメント:

条件:

スクリプトの例 - [Trigger on Active(有効になったら起動)]フィルタ

例として、付属の[Trigger on Active filter(有効になったら起動)]フィルタのスクリプトを示します。

IfThen (EventDataIs("state", "ACTIVE"))
Distribute

条件 EventDataIs は、イベントのキーワード event: state の値をたずねます。 このキーワードはコマンドラインや電子メールメッセージに挿入できます。 ステートメント IfThen は、条件 EventDataIs ("state", "ACTIVE") が真の場合に、次のステートメントを実行します。 条件 EventDataIs は、キーワード (state) の値が指定された値 (ACTIVE) と一致する場合に真になります。 次のステートメント Distribute は、コマンドが実行されるようにします。

スクリプトの例 - 30 秒の遅延を伴う[Trigger on Active(有効になったら起動)]フィルタ

[Trigger on Active(有効になったら起動)]フィルタアクションを 30 秒の遅延後に行う場合に使用されるスクリプトの例は次のとおりです。

{
WaitUntil (TimeIsAfter(30))
IfThen(EventDataIs("state", "ACTIVE"))
Distribute
}

中括弧({ })は、ステートメントをリストにまとめるのに使用されます。 前の例では、IfThen とそれ以降のものが 1 つのステートメントとして扱われていたために必要ありませんでした。

ステートメント WaitUntil により、スクリプトは条件が真になるまで一時停止されます。 条件 TimeIsAfter は、指定された時間が経過した場合にのみ真偽を確認します。 30 秒後に依然としてイベントが有効であった場合、ステートメント Distribute によりコマンドが実行されます。

スクリプトの例 - [Trigger on Either Active or Clear(有効またはクリアされたときに起動)]フィルタ

付属の[Trigger on Either Active or Clear(有効またはクリアされたときに起動)]フィルタをスクリプトで表現すると次のようになります。このフィルタでは、「Tray 3(カセット 3)」に対して「Paper Tray Missing(用紙カセットがありません)」イベントが選択され、コマンドの実行までの遅延が 20 分間で、条件が有効の場合、コマンドは 20分おきに繰り返されます。

While (And(EventDataIs("state", "ACTIVE"), EventDataIs("location", "Tray 3")))
{
WaitUntil(TimeIsAfter(1200))
IfThen(EventDataIs("state", "ACTIVE"))
Distribute
}

この例では、And は複合条件を作成するために使用されています。 「Tray 3(カセット 3)」に対してイベントが有効である場合のみ、While ループが実行または繰り返されます。 ループ中のコードは、条件 TimeIsAfter が 1200 秒間(20 分間)待機するように設定されていること以外は、[Trigger on Active(有効になったら起動)]フィルタの内容と同じです。