Processo composto por aplicativo cpMonitor que processa atividade(s) definida(s) em um objeto chamado Job.
Um objeto Job é composto por um ou mais processos (Process).
Um processo (Process) é composto por uma ou mais atividades (Activity).
Uma atividade possui um tipo, que define sua ação.
Job > Process > Activity
O aplicativo cpMonitor é o responsável por interpretar e executar as atividades definidas e sequencializadas em um objeto Job.
É um objeto que agrupa definições de processos a serem executados. O Job possui os seguintes atributos:
Atributo | Descrição | Exemplo |
---|---|---|
job | Identificação única do job. Tem o objetivo de identificar o job com o uso de templates e nos logs de processamento (string). | job0001 |
key1 | Campo auxiliar para localização do job. Usado principalmente nos logs quando da utilização do job como template (string). | 20170102132325 |
key2 | Campo auxiliar para localização do job. Mesma função do campo key1 (string). | cyberped1 |
monitor | Identificação do monitor responsável pelo processamento do job (string). | job |
processList | Conjunto de Processos (Process) do job (object array). |
Exemplo JSON
É o objeto que pertence a um Job e agrupa atividades (Activity) a serem executadas. Possui os seguintes atributos:
Atributo | Descrição | Exemplo |
---|---|---|
processId | Identificação do processo (string) | p01 |
processDesc | Descrição do processo (string) | Envia pedido PDF por email |
activityList | Conjunto de Atividades (Activity) do processo (object array). |
Exemplo JSON
A atividade (Activity) pode ser de vários tipos e cada tipo possui definições genéricas (comuns a todos os tipos de atividades) e específicas (que são associadas somente ao tipo de atividade).
São atributos comuns entre os tipos de atividades e tem o objetivo de controlar o fluxo e execução da atividade.
São eles:
Atributo | Descrição |
---|---|
activityId | Identificação da atividade (string). |
activityDesc | Descrição da atividade (string). |
activityType | Tipo de atividade (string). |
activityOnError | Identificação da atividade a ser executada em caso de erro (string). |
varList | Lista de atributos específicos do tipo de atividade (object array). |
Os tipos de atividades são:
Tipo de atividade | Descrição |
---|---|
PortletToHTMLFile | Executa um Portlet e grava o resultado da execução em um arquivo. |
HTMLToPDF | Transforma um arquivo HTML em um arquivo PDF. |
ActivityWait | Pausa o processamento por determinado tempo. |
MailSend | Envia email. |
FileMove | Move arquivo. |
FileCopy | Copia arquivo. |
FileDelete | Apaga arquivo. |
SQLCommand | Executa comandos sql de modificação de dados (insert, update, delete, replace, call). |
Imprime arquivo na impressora padrão. |
Executa um Portlet e grava o resultado da execução em um arquivo.
Atributos:
Atributo | Descrição |
---|---|
fileName | Path e nome do arquivo a ser gerado. |
portletId | Identificação do Portlet a ser utilizado. |
sendTo | Tipo de envio. O tipo file é o padrão (caso atributo seja ausente), e envia o resultado para arquivo em disco. Pode-se usar o tipo app para enviar o resultado ao aplicativo. |
report* | Identificação do report a ser enviado ao app mobile (int). |
reportHeader* | Descrição do report (Header) no app mobile (string). |
reportDetail* | Descrição do report (Detail) no app mobile (string). |
reportText* | Descrição do report (Text) no app mobile (string). |
Podem ser adicionados outros atributos que serão aplicados como variáveis no Portlet. |
Requerido se atributo sendTo = app. Neste caso atributo *fileName é ignorado.
Exemplo 1:
A atividade abaixo gera um arquivo HTML de uma impressão de pedido, onde o Portlet requer os filtros border e buser para filtro.
Atributos específicos (varList)
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
fileName | tmp\\pedido.html |
Arquivo a ser gerado. Considera-se como path inicial o do aplicativo cpMonitor. |
portletId | system.order.1 |
Identificação do Portlet. |
buser | cyberped1 |
Usuário, parte da chave para localização do pedido. |
border | 20170101122325 |
Identificação do pedido, parte da chave para localização do pedido. |
Atividade completa (JSON)
Exemplo 2:
Envia report para aplicativo
Atributos específicos (varList)
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
sendTo | app |
Envio para aplicativo mobile. |
report | 99 |
Identificação do report (breport) (int). |
reportHeader | Vendas |
Grupo de relatórios (string). |
reportText | Dashboard diário |
Nome do relatório (string). |
reportDetail | Atualizado as 13:45 |
Detalhes adicionais do relatório (string). |
portletId | sales.dashboard |
Identificação do Portlet. |
buser | cyberped1 |
Filtro utilizado para geração do relatório (string). |
Atividade completa (JSON)
Transforma um arquivo HTML em um arquivo PDF.
Atributos:
Atributo | Descrição |
---|---|
fileNameHTML | Path e nome do arquivo HTML. |
fileNamePDF | Path e nome do arquivo PDF. |
Exemplo
Considerando um arquivo pedido.html gerando em uma pasta, o processo a seguir gera um arquivo no formato pdf (pedido.pdf).
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
fileNameHTML | tmp\\pedido.html |
Arquivo HTML existente. Considera-se como path inicial o do aplicativo cpMonitor. |
fileNamePDF | tmp\\pedido.pdf |
Arquivo PDF a ser gerado. Considera-se como path inicial o do aplicativo cpMonitor. |
Atividade completa (JSON)
Pausa o processamento por determinado tempo.
Geralmente usado quando da necessidade de aguardar algum processamento não sincronizado (Ex. uma chamada shell), ou não sobre-carga de processos consecutivos (Ex. envio de email).
Atributos:
Atributo | Descrição |
---|---|
milliseconds | Tempo em milésimos de segundos (1000 = 1 segundo) da pausa (int). |
Exemplo
O processo deve esperar por 5 segundos.
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
milliseconds | 5000 |
Tempo de pausa. |
Atividade completa (JSON)
Envia email.
Atributos:
Atributo | Descrição |
---|---|
subject | Assunto da mensagem (string). |
body | Texto da mensagem (string). |
bcc | Endereço de email para cópia oculta. Pode ser adicionado mais de um email, separados por ";" (string). |
cc | Endereço de email para cópia. Pode ser adicionado mais de um email, separados por ";" (string). |
from | Endereço de email do remetente. Apenas um endereço pode ser colocado. Este endereço será o de resposta caso o email seja respondido (string). |
to | Endereço do destinatário do email. Pode ser adicionado mais de um email, separados por ";" (string). |
attachFile | Endereço do arquivo a ser anexado ao email. Pode-se adicionar mais de um arquivo, separados por ";". Considera-se como base o path do aplicativo cpMonitor (string). |
senderDef | Indica o tipo de definição dos dados de conexão da conta de email para envio. No caso de se utilizar o tipo custom, deve-se informa os dados de conexão como atributos (string). |
host* | Endereço do servidor de envio (string). |
port* | Porta do servidor de envio (string). |
login* | Usuário de conexão da conta de envio (string). |
password* | Senha do usuário de conexão da conta de envio (string). |
auth* | Indica se conta exige autenticação. Normalmente deve-se preencher "1" (exige) (int). |
Deve ser preenchido apenas se o atributo senderDef for do tipo *custom.
Exemplo
Envio de email com arquivo anexado.
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
subject | Envio de pedido |
Opcional. |
body | Anexo seu pedido. Obrigado. |
Opcional. |
bcc | bkp@cyberpolos.com.br |
Opcional. |
cc | vendas@cyberpolos.com.br; rep@cyberpolos.com.br |
Opcional |
from | cyberped@cyberpolos.com.br |
Requerido |
to | cliente@polosit.com.br |
Requerido |
attachFile | tmp\\pedido.pdf |
Opcional. |
senderDef | custom |
Requerido. |
host | smtp.cyberpolos.com.br |
Requerido se senderDef = custom |
port | 123 |
Requerido se senderDef = custom |
login | cyberpolos@cyberpolos.com.br |
Requerido se senderDef = custom |
password | 123456 |
Requerido se senderDef = custom |
auth | 1 |
Requerido se senderDef = custom |
Atividade completa (JSON)
Move arquivo.
A atividade usa como path inicial o do aplicativo cpMonitor.
Atributos:
Atributo | Descrição |
---|---|
fileNameFrom | Path e nome origem do arquivo a ser movido (string). |
fileNameTo | Path e nome destino do arquivo a ser movido (string). |
Exemplo
Mover o arquivo pedido.html da pasta tmp para a pasta out.
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
fileNameFrom | tmp\\pedido.html |
Requerido. |
fileNameTo | out\\pedido_enviado.html |
Requerido. |
Atividade completa (JSON)
Copia arquivo.
A atividade usa como path inicial o do aplicativo cpMonitor.
Atributos:
Atributo | Descrição |
---|---|
fileNameFrom | Path e nome origem do arquivo a ser copiado (string). |
fileNameTo | Path e nome destino do arquivo a ser copiado (string). |
Exemplo
Copiar o arquivo pedido.html da pasta tmp para a pasta out.
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
fileNameFrom | tmp\\pedido.html |
Requerido. |
fileNameTo | out\\pedido_enviado.html |
Requerido. |
Atividade completa (JSON)
Apaga arquivo.
A atividade usa como path inicial o do aplicativo cpMonitor.
Atributos:
Atributo | Descrição |
---|---|
fileName | Path e nome do arquivo a ser apagado (string). |
Exemplo
Apagar o arquivo pedido.html da pasta tmp.
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
fileName | tmp\\pedido.html |
Requerido. |
Atividade completa (JSON)
Executa comandos sql de modificação de dados (insert, update, delete, replace, call).
Atributos:
Atributo | Descrição |
---|---|
cmd | Comando sql a ser executado (string). |
connStr | Opcionalmente pode-se definir a conexão onde o comando será executado. O formato segue o padrão Database=;User_Name=;Server=;Password=;DriverID= (string). |
Exemplo
Inserir um registro na tabela batt (campos batt, batt_desc).
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
cmd | insert into batt(batt, batt_desc) values ('123','teste 123') |
Requerido. Comando SQL a ser executado (string). |
connStr | Database=; User_Name=; Server=; Password=; DriverID= |
Opcional. Dados de conexão ao banco de dados. Caso não seja especificado, usará conexão atual (string). |
Atividade completa (JSON)
Imprime arquivo na impressora padrão.
A impressora deve estar disponível para o aplicativo cpMonitor.
Para impressão é utilizado o aplicativo padrão de abertura do tipo de arquivo. Ex. para imprimir arquivos PDF, deve estar instalado o aplicativo Adobe Reader, ou similar. A definição do arquivo padrão é dada pelo sistema operacional.
Atributos:
Atributo | Descrição |
---|---|
fileName | Path e nome do arquivo a ser impresso. O Path inicial deve ser o do aplicativo cpMonitor. |
Exemplo
Imprimir arquivo pedido.pdf.
Atributo (key) | Atributo (value) | Descrição |
---|---|---|
fileName | out\\pedido.pdf |
Requerido. |
Atividade completa (JSON)
Transporta dados de um banco de dados para outro, a partir de comandos SQL.
Atributos
Atributo | Descrição |
---|---|
fromConnStr | String de conexão ao banco de dados origem. Segue o padrão Database=;User_Name=;Server=;Password=;DriverID= . Se atributo for omitido, atividade usará conexão atual (string). |
fromReadSQL | Comando SQL a ser executado na conexão definida no atributo fromConnStr. Caso atributo seja omitido, torna-se obrigatório usar fromTableName (string). |
fromTableName | Nome da tabela origem. Ignorado caso seja definido atributo fromReadSQL (string). |
toConnStr | String de conexão ao banco de dados destino. Segue o padrão Database=;User_Name=;Server=;Password=;DriverID= . Se atributo for omitido, atividade usará conexão atual (string). |
toReadSQL | Comando SQL a ser executado na conexão definida no atributo toConnStr. Caso atributo seja omitido, torna-se obrigatório usar toTableName (string). |
toTableName | Nome da tabela destino. Ignorado caso seja definido atributo toReadSQL (string). |
toWriteSQL | Comando SQL a ser executado no banco destino. Usa parâmetro com os mesmos nomes da origem. Pode-se usar comandos Insert, Replace ou Procedure. Caso omitido usará campos da origem (string). |
mode | Modo de execução. Caso omitido ou usado atributo toWriteSQL, será adotado alwaysInsert. Ver tabela de modos de execução para mais detalhes (string). |
insertQueryCheck | Especifica query para consulta de registro antes da inserção. Usada quando tabela de destino não possui PK. Pode-se usar no comando SQL parâmetros com o mesmo nome dos campos com prefixo ":". O primeiro campo indica se deve (retorno 1) ser inserido ou não (retorno 0 ou ausência de retorno, eof). O uso deste atributo automaticamente ajusta o mode para alwaysInsert e o commitCount para 1 (string). |
commitCount | Número de registros processados antes do commit. Padrão é 100 (int). |
Modos de execução
Modo | Descrição |
---|---|
alwaysInsert | Executa somente insert. Pode-se usar o atributo insertQueryCheck para verificação se registro existe sem usar a PK do banco. |
append | Insere caso não exista registro. Usa PK do banco para verificação (obrigatório haver PK definida). |
appendUpdate | Faz o mesmo do append, mas atualiza registros existentes (obrigatório uso de PK do banco) |
delete | Apaga registros |
update | Atualiza registros |
Atividade completa (JSON)
Transporta dados de um arquivo texto para banco de dados.
Atributos básicos
Atributo | Descrição |
---|---|
fileName | Nome e caminho do arquivo texto a ser lido. c:\\tmp\\demo.csv . Usar duas barras (\\) para separação de pastas. |
toConnStr | String de conexão ao banco de dados destino. Segue o padrão Database=;User_Name=;Server=;Password=;DriverID= . Se atributo for omitido, atividade usará conexão atual (string). |
toReadSQL | Comando SQL a ser executado na conexão definida no atributo toConnStr. Caso atributo seja omitido, torna-se obrigatório usar toTableName (string). Caso tabela não exista, será criada. |
toTableName | Nome da tabela destino. Ignorado caso seja definido atributo toReadSQL (string). |
toWriteSQL | Comando SQL a ser executado no banco destino. Usa parâmetro com os mesmos nomes da origem. Pode-se usar comandos Insert, Replace ou Procedure. Caso omitido usará campos da origem (string). |
mode | Modo de execução. Caso omitido ou usado atributo toWriteSQL, será adotado alwaysInsert. Ver tabela de modos de execução para mais detalhes (string). |
insertQueryCheck | Especifica query para consulta de registro antes da inserção. Usada quando tabela de destino não possui PK. Pode-se usar no comando SQL parâmetros com o mesmo nome dos campos com prefixo ":". O primeiro campo indica se deve (retorno 1) ser inserido ou não (retorno 0 ou ausência de retorno, eof). O uso deste atributo automaticamente ajusta o mode para alwaysInsert e o commitCount para 1 (string). |
commitCount | Número de registros processados antes do commit. Padrão é 100 (int). |
Atributos de definição de arquivo texto
Atributo | Padrão | Descrição |
---|---|---|
encoding | ecDefault |
Tipo de codificação do arquivo. Valores possíveis: ecUTF8 , ecUTF16 , ecANSI . |
guessTextFormat | true |
Indica se processo identifica campos automaticamente. Valores possíveis: true , false . |
defDelimiter | " |
Delimitador de texto, apenas um caracter é permitido. |
defEndOfLine | elDefault |
Indica o tipo de finalização de arquivo. Valores possíveis: elWindows , elPosix . |
defRecordFormat | rfCustom |
Indica tipo de finalização de campo / linha. Valores possíveis: rfFixedLength , rfFieldPerLine , rfCommaDoubleQuote , rfSemicolonDoubleQuote , rfTabDoubleQuote . |
defSeparator | ; |
Caracter de separação de campos, apenas um caracter é permitido. |
defStrsEmpty2Null | false |
Indica se gera valor null para campos string vazios. Valores possíveis true ,false . |
defTrimLeft | true |
Indica se desconsidera espaços em branco a esquerda. Valores possíveis true , false . |
defTrimRight | true |
Indica se desconsidera espaços em branco a direita. Valores possíveis true , false . |
defWithFieldNames | true |
Indica se arquivo texto possui primeira linha com nomes de campos. Valores possíveis true , false . |
Modos de execução
Modo | Descrição |
---|---|
alwaysInsert | Executa somente insert. Pode-se usar o atributo insertQueryCheck para verificação se registro existe sem usar a PK do banco. |
append | Insere caso não exista registro. Usa PK do banco para verificação (obrigatório haver PK definida). |
appendUpdate | Faz o mesmo do append, mas atualiza registros existentes (obrigatório uso de PK do banco) |
delete | Apaga registros |
update | Atualiza registros |
Exemplos (JSON)
1 - template.txttosql.tablename
Template que carrega dados e cria tabela, caso não exista. Caso a tabela já exista, o nome dos campos deverão ser iguais (arquivo texto x tabela).
2 - template.txttosql.insert
Template que carrega dados e usa comando select
para mapeamento de campos.
3 - template.txttosql.insert
Template que carrega dados e usa comando select
e insert
para mapeamento de campos. Podem ser usados outros comandos na gravação, como replace
ou até mesmo call <procedure>
, conforme dialeto do banco a ser utilizado.
Executa comandos em shell no ambiente Windows.
O processo é executado de forma assíncrona, ou seja, a execução da atividade segue antes de sua conclusão.
Atributos:
Atributo | Descrição | Valor Padrão |
---|---|---|
command | Comando a ser executado. Não colocar parâmetros. | '' |
param | Parâmetros do comando. | '' |
waitBefore | Tempo em milésimos de segundos (1000 = 1seg), que o processo aguarda para executar o comando. | 0 |
waitAfter | Tempo em milésimos de segundos (1000 = 1seg), que o processo aguarda após executar o comando. | 0 |
showCmd | Tipo de visualização da janela de execução do processo. Detalhes no quadro Tipos de visualização de janela | 0 (oculta janela) |
Tipos de visualização de janela
Comando (showCmd) | Descrição |
---|---|
SW_HIDE (0) | Hides the window and activates another window. |
SW_MAXIMIZE (3) | Maximizes the specified window. |
SW_MINIMIZE (6) | Minimizes the specified window and activates the next top-level window in the z-order. |
SW_RESTORE (9) | Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window. |
SW_SHOW (5) | Activates the window and displays it in its current size and position. |
SW_SHOWDEFAULT (10) | Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window. |
SW_SHOWMAXIMIZED (3) | Activates the window and displays it as a maximized window. |
SW_SHOWMINIMIZED (2) | Activates the window and displays it as a minimized window. |
SW_SHOWMINNOACTIVE (7) | Displays the window as a minimized window. The active window remains active. |
SW_SHOWNA (8) | Displays the window in its current state. The active window remains active. |
SW_SHOWNOACTIVATE (4) | Displays a window in its most recent size and position. The active window remains active. |
SW_SHOWNORMAL (1) | Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time. |
Exemplo
Executar um arquivo batch (lerPasta.bat
), passando código de usuário (usr01
) como parâmetro. Aguardar 5 segundas para garantir que comando seja executado antes da próxima atividade.
Atividade completa (JSON)
O aplicativo é responsável por interpretar e executar o Job.
Pode ser rodado em mais de uma instância desde que com um monitor diferente, pois caso exista mais de uma instância com o mesmo monitor, poderá existir duplicidade de processamento de Job.
O monitor é o responsável por indicar qual job será processado em qual instância do cpMonitor.
A parametrização é dividida em 2 etapas. A primeira é a criação do monitor e assinatura, e a segunda a parametrização do arquivo de inicialização.
Nesta etapa deve-se criar um usuário na nuvem e associá-lo a uma ou mais assinaturas do tipo JOB. O login deste usuário será o monitor, e sua senha o token.
Exemplo
Criando um monitor jobteste.
Dados de usuário nuvem (cpportal).
Campo | Valor | Obs. |
---|---|---|
buser | jobteste |
Nome do monitor |
buser_login | jobteste |
Repetir buser |
buser_desc | Monitor Job Teste |
Descrição da função do monitor |
buser_pwd | jobteste123 |
Senha e token do monitor |
Criação da assinatura (fsubs).
Campo | Valor | Obs |
---|---|---|
bsubs | 101 |
Id. (sequencial) da assinatura. |
bservice | JOB |
Tipo de serviço. |
bdt_max | 2018 |
Data de expiração da assinatura. |
bstatus | 30 |
Indica que assinatura está ativa. |
... | ... | Demais dados de configuração de acesso (conexão ao banco de dados da assinatura). |
Associação do usuário nuvem a assinatura (fsubsxuser).
Campo | Valor | Obs |
---|---|---|
buser | jobteste |
Usuário / monitor. |
bsubs | 101 |
Id. da assinatura. |
Um usuário (monitor) pode estar associado a mais de uma assinatura. Assim como uma assinatura pode ter mais de um usuário (monitor).
A instância do cpMonitor é realizada por arquivo de configuração que deve estar presente na mesma pasta do executável do aplicativo.
O arquivo deve-se chamar cpJob.lic, e deve ser gerado a partir da ferramenta de configuração cpMonitorSetup.exe.
Estrutura do arquivo de configuração:
Campo | Valor | Obs |
---|---|---|
monitor | jobteste |
Usuário / monitor a ser utilizado pela instância do aplicativo cpMonitor (string). |
monitorToken | jobteste123 |
Senha / token do usuário / monitor (string). |
connType | subs |
Indica o tipo de conexão a ser usada pelo aplicativo. O tipo subs indica o uso da assinatura na nuvem padrão. Caso seja necessário usar outra fonte de autenticação, deve-se usar o tipo db (string). |
monitorOpt | Conjunto de parâmetros de execução do aplicativo (object). | |
monitorOpt.logType | 2 |
Indica o nível de detalhe do log de execução gerado. Padrão 2 . (string). |
monitorOpt.queryInterval | 30000 |
Indica o tempo (em milésimos de segundos, 1000 = 1 segundo) do ciclo de consultas a solicitações de job. O intervalo mínimo permitido é 2000 e o padrão é 15000 . (int). |
monitorOpt.enableJobRun | true |
Indica se o aplicativo cpMonitor deve executar job. Padrão true . (boolean). |
monitorOpt.enableJobSchedule | true |
Indica se o aplicativo cpMonitor deve executar jobSchedule. Padrão true (boolean). |
monitorOpt.enableMonitor | true |
Indica se o aplicativo cpMonitor deve monitorar requisições. Quando false, monitor executará apenas uma requisição. Padrão true (boolean). |
monitorOpt.cycleWait | 10 |
Indica o número de ciclos que o processo deverá aguardar pela execução de um job. Junto com o parâmetro queryInterval define o tempo máximo de execução de um processo. Padrão 10 . Ex. queryInterval = 30000 e cycleWait = 10, tempo total de espera será de 300000 (5 minutos) |
Arquivo de exemplo (JSON)
As sub-pastas servem com base para atividades que necessitam geração de arquivo. Devem ser previamente criadas, conforme processos a ser executados.
Para geração de log, deve ser criada uma sub-pasta chamada log.
Algumas pastas podem ser necessárias, conforme descrito no item Dependências, para armazenar aplicações e ou biblioteca de apoio para determinadas tipos de atividades.