Os filtros personalizados permitem personalizar e definir como a ação será executada. Isso pode ser feito carregando-se um arquivo de script predefinido ou gravando-se um novo.
O MarkVision Messenger fornece uma linguagem de script muito simples para definir filtros. Esta é uma lista completa das instruções e condições que podem ser usadas para gravar um filtro personalizado:
While (Condição)
WaitUntil (Condição)
IfThen (Condição)
{ StatementList }
Distribute
And (Condição_1... condição_n)
Or (Condição_1...Condição_n)
EventDatals (chave, valor)
SourceDatals (chave, valor)
TimeIsAfter
Como exemplo, eis uma representação do script do filtro incorporado Disparar quando ativo:
IfThen (EventDataIs("state", "ACTIVE"))
DistributeO efeito da condição EventDataIs é perguntar ao evento o valor da palavra-chave event.state. Essa é a mesma palavra-chave que pode ser inserida em linhas de comando e mensagens de e-mail. A primeira instrução, IfThen, executa a instrução seguinte se a condição EventDataIs ("state", "ACTIVE") for verdadeira. Uma condição EventDataIs é verdadeira se o valor da palavra-chave (state) corresponder ao valor fornecido (ACTIVE). A instrução seguinte, Distribute, faz com que o comando seja executado.
Agora, vejamos o script a ser gravado quando o filtro Disparar quando ativo estiver configurado para uma espera de 30 segundos:
{
WaitUntil (TimeIsAfter(30))
IfThen(EventDataIs("state", "ACTIVE"))
Distribute
}As chaves ({}) são usadas para agrupar instruções em uma lista. Elas não foram necessárias no exemplo anterior porque a instrução IfThen e as instruções seguintes foram tratadas como uma única instrução.
A instrução WaitUntil faz com que o script pause a execução até que a condição seja verdadeira. A condição TimeIsAfter verifica se é verdadeira somente depois de decorridos os segundos especificados. Se o evento ainda estiver ativo após 30 segundos, a instrução Distribute executa o comando.
A representação do script do filtro incorporado Disparar quando ativo ou eliminado é uma única instrução Distribute. Vamos dizer, por exemplo, que você selecione Bandeja de papel faltando como evento, mas só quer executar o comando quando o evento correr para a Bandeja 3. Além disso, você deseja esperar 20 minutos depois de executar o comando, e executar o comando novamente no mesmo intervalo de 20 minutos se a condição continuar Ativa. O script para esse filtro se pareceria com o seguinte:
While (And(EventDataIs("state", "ACTIVE"), EventDataIs("location", "Tray 3")))
{
WaitUntil(TimeIsAfter(1200))
IfThen(EventDataIs("state", "ACTIVE"))
Distribute
}Neste exemplo, And foi usado para criar uma condição composta. O loop While só é iniciado ou repetido se o evento estiver ativo para a Bandeja 3. O código dentro do loop é o mesmo que o do filtro Disparar quando ativo, com a exceção de que a condição TimeIsAfter é definida para aguardar 1.200 segundos (20 minutos).