Você está na página 1de 6

Por meio desta tela são cadastradas as ações que serão executadas em

intervalos periódicos de tempo. Esse comportamento está fundamentado no


funcionamento do quartz (Agendador), que é uma infraestrutura preparada
para configurar o agendamento de tarefas. As expressões podem ser
configuradas como intervalos de tempo, segundos, minutos, horas ou ainda
como expressões do quartz.
Aba Geral Aba Configurar expressão
Botão Outras Opções Ações Agendadas - Exemplo

Para a configuração de uma Ação Agendada, inicialmente é necesário realizar


o preenchimento do campo "Nro. único", que pode ser alimentado de forma
manual ou automática; essa definição é feita através do

botão "Configurações da Tela", opção "Numeração" localizado no


lado superior direito da tela.
A marcação "Ativo" irá determinar se a ação está ou não operante. Sendo
que, quando habilitada, logo a frente, será apresentada a descrição "A ação
está ativa", e quando desabilitada, ficará com a descrição "A ação está
desativada".

Aba Geral
Neste aba, realize a configuração do fundamento da ação. Devem ser
informados os seguintes campos:
No campo "Nome", informe o nome da ação que está sendo criada; este
nome será apresentado no log de execução da ação.
Preencha em "Descrição", a definição da ação que quando informada,
também será exibida no log de execução da ação.
Determine o "Tipo de ação" a ser configurada. Esta poderá ser:
• Proc. Banco de dados: por esta opção, o nome da procedure criada na
base, que será executada conforme o agendamento;
• Java: ao selecionar essa opção, você deve cadastrar um módulo JAVA na
tela Módulo Java, com um arquivo.jar que contenha uma classe que
implemente a interface ScheduledAction do arquico Cuckoo.jar, disponível
na api_outros.

Indique em "Cód. módulo", o código do módulo Java cadastrado que será


carregado a classe Java executada conforme o agendamento.
Selecione no campo "Ação", a ação de acordo com o módulo que ela
pertence, ou seja, a scheduledAction que contenha a ação que você deseja
desempenhar. Quando procedure, o nome da procedure.
Caso a ação necessite de uma sessão do sistema para desempenhar sua
tarefa, informe no campo "Usuário Logado", o usuário com o qual será feito
o login. Nesse caso, devem ser levadas em consideração as permissões do
usuário ser informado conforme a ação a ser desempenhada.
Indique no campo "Fonte de dados", a fonte de dados registrada no sistema,
na qual serão efetuadas as modificações da ação; sendo procedure, a base
onde irá rodar esta procedure.
Quando a marcação "Transação automática" for realizada, indica que a ação
irá utilizar transação automática de banco de dados; se desmarcada, não irá
utilizar.
Observação: ao criar uma ação agendada, o sistema poderá realizar uma
consulta ao Serasa com um CNPJ, CPF ou Prospect automaticamente para
um parceiro, de acordo com a personalização que você definirá.
[voltar ao topo]

Aba Configurar expressão


Nessa aba, você poderá definir as configurações acerca da frequência em
que as ações criadas serão executadas.
Sabendo disso, você poderá configurar os seguintes campos:
Em "Tipo de gatilho", será estipulado a forma como será tratada a sequência
de execução das ações. Temos duas opções:

• Intervalo de tempo: você pode definir um intervalo homogêneo de


segundos, minutos ou horas para ser executada a ação;
• Expressão CRON: É a maneira de configuração que permite um ajuste
mais fino do intervalo de tempo, possibilitando a inserção manual no
campo uma expressão do cron.

O campo "Expressão de gatilho" é preenchido a medida que os intervalos


dispostos em forma de Lista de opções (segundos, minutos, horas, dias,
meses, dias da semana) forem definidos.
Ainda sobre a Lista de Opções, tem-se as seguintes considerações:
Cada lista de opções equivale a um dos caracteres gerados no
campo "Expressão de gatilho", ao passo que qualquer modificação em uma
das listas ou suas opções, irá refletir em uma atualização no referido campo.
Assim, observe:

• O caractere '*' (asterisco) significa "todos". No caso, uma lista vazia gera
um asterisco e significa que o agendamento irá rodar em todos os valores
para aquela determinada lista de opções;
• Você poderá especificar um "dia" ou "dia da semana" para a execução,
mas não os dois simultaneamente, pois tal configuração poderia ser
inconsistente;
• O caractere '?' (interrogação) significa "não importa", ele pode ser utilizado
para dias ou dias da semana. Dessa forma, quando selecionado um ou
mais dias para executar o agendamento, obrigatoriamente o dia da
semana será preenchido com interrogação no campo Expressão do
gatilho. Caso sejam selecionados dias da semana, os dias serão
configurados com interrogação no campo "Expressão do gatilho";
• Caso a marcação "Intervalo?" não esteja realizada, mas vários valores na
lista foram selecionados, serão incluídos no campo os valores
selecionados separados por vírgulas, indicando que o agendamento será
executado para cada valor selecionado;
• Quando a marcação Intervalo? for habilitada em alguma das listas, e esta
estiver com mais de um valor selecionado, o valor gerado será substituído
pelo primeiro e o último valor selecionados separados por um hífen ( - ) no
campo Expressão do gatilho, o que indicará que o agendamento será
executado para todos os valores contidos no intervalo;

• O botão "Limpar" de uma determinada lista, irá limpar a seleção


da lista e troca o valor referente a mesma por um asterisco, indicando que
o agendamento será executado para todos os valores desse intervalo;

Nota: o botão Limpar será apresentado somente na versão flex dessa tela.

• Já o botão "Limpar listas" limpa a seleção de todas as


listas, o que possibilita o reinício da seleção dos valores desejados para a
configuração;

• O botão "Validar Expressão" analisará a


expressão e caso ocorra algum erro, irá exibi-lo na tela, e quando
não houver erro, o sistema exibirá o horário da próxima execução.

[voltar ao topo]

Botão Outras Opções


Localizado no lado superior central da tela, temos o botão Outras
Opções... que possibilita a geração do log dos jobs. Ele possui duas opções,
sendo elas:

• Ações ativas: essa opção exibirá um pop-up denominado "Lista de jobs


cadastrados", na qual será apresentado o log relacionado às ações ativas.
• Ações em execução no momento: por meio dessa opção, o pop-up "Lista
de jobs em execução" será aberto onde conterá o log das ações em
execução no momento.

[voltar ao topo]

Ações Agendadas - Exemplo


Ao utilizar a Configuração do Arquivo de Remessa, é possível gerar o arquivo
de configuração de forma automática a partir de Ações Agendadas. Isso é
feito em um ambiente de desenvolvimento Java. Assim, considere o exemplo
abaixo:

package br.com.sankhya.servicedesk;
import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.cuckoo.core.ScheduledAction;
import org.cuckoo.core.ScheduledActionContext;
import com.sun.jmx.snmp.Timestamp;
import br.com.sankhya.extensions.actionbutton.AcaoRotinaJava;
import br.com.sankhya.extensions.actionbutton.ContextoAcao;
import br.com.sankhya.jape.dao.JdbcWrapper;
import br.com.sankhya.modelcore.PlatformService;
import br.com.sankhya.modelcore.PlatformServiceFactory;
import br.com.sankhya.modelcore.PlatformServiceFactory.ServiceDescriptor;
import br.com.sankhya.modelcore.util.EntityFacadeFactory;
public class ScheduleGeraEDI implements ScheduledAction {
public void onTime(ScheduledActionContext contexto) {
try{
//Para que seja possível preencher os parâmetros sem a interface com o us
uário
//criamos uma colection e preenchemos essa colection com cada
parâmetro de cada
//"registro" (chamo de registro a configuração de linha do arquivo).
Collection<Map<String, Object>> params = new ArrayList<Map<String, Object>>()
;
//O primeiro "registro" é o 1.02.00, ele usa duas variáveis: "DATA INICIO"
e "DATA FINAL"
params.add(buildParam(10200, "DATA INICIO", "01/04/2016"));
params.add(buildParam(10200, "DATA FINAL", "30/04/2016"));
//O segundo "registro" é o 1.03.00, esse usa "DATData Inicial" e
"DATData Inicial"
params.add(buildParam(10300, "DATData Inicial", "01/04/2016"));
params.add(buildParam(10300, "DATData Final", "30/04/2016"));
//e segue...
params.add(buildParam(10400, "DATData Inicial", "01/04/2016"));
params.add(buildParam(10400, "DATData Final", "30/04/2016"));
params.add(buildParam(10500, "DATData Inicial", "01/04/2016"));
params.add(buildParam(10500, "DATData Final", "30/04/2016"));
params.add(buildParam(10600, "DATData Inicial", "01/04/2016"));
params.add(buildParam(10600, "DATData Final", "30/04/2016"));
PlatformService ps =
PlatformServiceFactory.getInstance().lookupService(
"@core:edi.comercial.service");
ps.set("codLayout", new BigDecimal(10000));
ps.set("parametros", params);
ps.set("caminhoRepositorio", "IntercambioEletronico/relatorio10000");
ps.set("emails", "hamir@hamir.com.br,jose@jose.com.br");
/*Descomente se for usar FTP
ps.set("caminhoFTP", "arquivos/edi/relatorio10000");
ps.set("enderecoFTP", "ftp://meuftp.com.br");
ps.set("usuarioFTP", "hamir");
ps.set("senhaFTP", "123456");
*/
ps.execute();
} catch (Exception e){
RuntimeException re = new RuntimeException(e);
throw re;
}
}
//Esse método serve só pra agilizar a criação da Map, pois como cada parâmetro
//precisa de 3 informações, ficaria extenso escrever linha a linha
private Map<String, Object> buildParam(long codigo, String nome, Object valor)
{
Map<String, Object> param = new HashMap<String, Object>();
param.put("codigo", new BigDecimal(codigo));
param.put("nome", nome);
param.put("valor", valor);
return param;
}
}

Você também pode gostar