Job Monitor

Conteúdo

  1. Resumo
  2. Job
    1. DataSet Job
    2. Schedule Job
    3. Execute Job
  3. Process
  4. Activity
    1. Definições genéricas
    2. Tipos de atividade
      1. PortletToHTMLFile
      2. HTMLtoPDF
      3. ActivityWait
      4. MailSend
      5. FileMove
      6. FileCopy
      7. FileDelete
      8. SQLCmd
      9. Print
      10. SQLtoSQL
      11. TXTtoSQL
      12. Shell
  5. Aplicativo cpMonitor
  6. Dependências

1. Resumo

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.

2. 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

{
    "job":"job001",
    "key1":"20170102132325",
    "key2":"cyberped1",
    "monitor":"job",
    "processList": [{},{}]    
}

3. Process

É 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

{
    "processId": "p01",
    "processDesc": "Envia pedido PDF por email",
    "activityList": [{},{}]    
}

4. Activity

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).

Definições genéricas

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).

Tipos de atividades

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).
Print Imprime arquivo na impressora padrão.

PortletToHTMLFile

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)

{
  "activityId": "a1",
  "activityOnError": "",
  "activityDesc": "Gera arquivo",
  "activityType": "portletToHTMLFile",
  "varList": [
    {
      "key": "fileName",
      "value": "tmp\\pedido.html"
    },
    {
      "key": "portletId",
      "value": "system.order.1"
    },
    {
      "key": "buser",
      "value": "cyberped1"
    },
    {
      "key": "border",
      "value": "20170101122325"
    }
  ]
}

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)

{
  "activityId": "a1",
  "activityOnError": "",
  "activityDesc": "Envia relatório para aplicativo",
  "activityType": "portletToHTMLFile",
  "varList": [
    {
      "key": "sendTo",
      "value": "app"
    },
    {
      "key": "report",
      "value": "99"
    },
    {
      "key": "reportHeader",
      "value": "Vendas"
    },
    {
      "key": "reportText",
      "value": "Dashboard diário"
    },
    {
      "key": "reportDetail",
      "value": "Atualizado as 13:45"
    },
    {
      "key": "portletId",
      "value": "sales.dashboard"
    },
    {
      "key": "buser",
      "value": "cyberped1"
    }
  ]
}

HTMLtoPDF

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)

{
  "activityId": "a2",
  "activityIdOnError": "",
  "activityDesc": "Transforma arquivo HTML em PDF",
  "activityType": "HTMLtoPDF",
  "varList": [
    {
      "key": "fileNameHTML",
      "value": "tmp\\pedido.html"
    },
    {
      "key": "fileNamePDF",
      "value": "tmp\\pedido.pdf"
    }
  ]
}

ActivityWait

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)

{
  "activityId": "a3",
  "activityIdOnError": "",
  "activityDesc": "Aguarda.",
  "activityType": "activityWait",
  "varList": [
    {
      "key": "milliseconds",
      "value": 5000
    }
  ]
}

MailSend

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)

{
  "activityId": "a4",
  "activityIdOnError": "",
  "activityDesc": "Envia email",
  "activityType": "mailSend",
  "varList": [
    {
      "key": "subject",
      "value": "Envio de pedido"
    },
    {
      "key": "body",
      "value": "Anexo seu pedido. Obrigado."
    },
    {
      "key": "bcc",
      "value": "bkp@cyberpolos.com.br"
    },
    {
      "key": "cc",
      "value": "vendas@cyberpolos.com.br; rep@cyberpolos.com.br"
    },
    {
      "key": "from",
      "value": "cyberped@cyberpolos.com.br"
    },
    {
      "key": "to",
      "value": "cliente@polosit.com.br"
    },
    {
      "key": "attachFile",
      "value": "tmp\\pedido.pdf"
    },
    {
      "key": "senderDef",
      "value": "custom"
    },
    {
      "key": "host",
      "value": "smtp.cyberpolos.com.br"
    },
    {
      "key": "port",
      "value": "123"
    },
    {
      "key": "login",
      "value": "cyberpolos@cyberpolos.com.br"
    },
    {
      "key": "password",
      "value": "123456"
    },
    {
      "key": "auth",
      "value": 1
    }
  ]
}

FileMove

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)

{
  "activityId": "a5",
  "activityIdOnError": "",
  "activityDesc": "Move arquivo",
  "activityType": "fileMove",
  "varList": [
    {
      "key": "fileNameFrom",
      "value": "tmp\\pedido.html"
    },
    {
      "key": "fileNameTo",
      "value": "out\\pedido_enviado.html"
    }
  ]
}

FileCopy

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)

{
  "activityId": "a6",
  "activityIdOnError": "",
  "activityDesc": "Copia arquivo",
  "activityType": "fileCopy",
  "varList": [
    {
      "key": "fileNameFrom",
      "value": "tmp\\pedido.html"
    },
    {
      "key": "fileNameTo",
      "value": "out\\pedido_enviado.html"
    }
  ]
}

FileDelete

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)

{
  "activityId": "a7",
  "activityIdOnError": "",
  "activityDesc": "Apaga arquivo",
  "activityType": "fileDelete",
  "varList": [
    {
      "key": "fileName",
      "value": "tmp\\pedido.html"
    }
  ]
}

SQLCmd

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)

{
  "activityId": "a8",
  "activityIdOnError": "",
  "activityDesc": "Inserir",
  "activityType": "sqlCmd",
  "varList": [
    {
      "key": "cmd",
      "value": "insert into batt(batt, batt_desc) values ('123','teste 123')"
    }
  ]
}

Print

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)

{
  "activityId": "a9",
  "activityIdOnError": "",
  "activityDesc": "Imprimir",
  "activityType": "print",
  "varList": [
    {
      "key": "fileName",
      "value": "out\\pedido.pdf"
    }
  ]
}

SQLtoSQL

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)

{
  "activityId": "a10",
  "activityIdOnError": "",
  "activityDesc": "ETL - SQLtoSQL",
  "activityType": "sqltosql",
  "varList": [
    {
      "key": "fromConnStr",
      "value": "Database=;User_Name=;Server=;Password=;DriverID="
    },
    {
      "key": "fromReadSQL",
      "value": "select dsku, nsku from ldsku_app"
    },
    {
      "key": "toConnStr",
      "value": "Database=;User_Name=;Server=;Password=;DriverID="
    },
    {
      "key": "toReadSQL",
      "value": "select dsku, nsku from dsku"
    },
    {
      "key": "toWriteSQL",
      "value": "insert into dsku (dsku, nsku) values (:dsku, :nsku)"
    }
  ]
}

TXTtoSQL

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).

{
  "job": "template.txttosql",
  "key1": "",
  "key2": "",
  "monitor": "job",
  "processList": [
    {
      "processId": "p01",
      "processDesc": "TXT to SQL",
      "activityList": [
        {
          "activityId": "a1",
          "activityIdOnError": "",
          "activityDesc": "Insere dados sem insert ou replace",
          "activityType": "txttosql",
          "varList": [
            {
              "key": "fileName",
              "value": "M:\\tmp\\DEM\\demo.csv"
            },
            {
              "key": "defSeparator",
              "value": ","
            },
            {
              "key": "toConnStr",
              "value": "Database=<db>; User_Name=<user>; Server=<server>; Password=<pwd>; DriverID=<driverId>"
            },
            {
              "key": "toTableName",
              "value": "teste"
            }
          ]
        }
      ]
    }
  ]
}

2 - template.txttosql.insert

Template que carrega dados e usa comando select para mapeamento de campos.

{
  "job": "template.txttosql",
  "key1": "",
  "key2": "",
  "monitor": "job",
  "processList": [
    {
      "processId": "p01",
      "processDesc": "TXT to SQL",
      "activityList": [
        {
          "activityId": "a1",
          "activityIdOnError": "",
          "activityDesc": "Insere dados sem insert ou replace",
          "activityType": "txttosql",
          "varList": [
            {
              "key": "fileName",
              "value": "M:\\tmp\\DEM\\demo.csv"
            },
            {
              "key": "defSeparator",
              "value": ","
            },
            {
              "key": "toConnStr",
              "value": "Database=<db>; User_Name=<user>; Server=<server>; Password=<pwd>; DriverID=<driverId>"
            },
            {
              "key": "toReadSQL",
              "value": "select campo1, campo2, campo3 from teste"
            }
          ]
        }
      ]
    }
  ]
}

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.

{
  "job": "template.txttosql",
  "key1": "",
  "key2": "",
  "monitor": "job",
  "processList": [
    {
      "processId": "p01",
      "processDesc": "TXT to SQL",
      "activityList": [
        {
          "activityId": "a1",
          "activityIdOnError": "",
          "activityDesc": "Insere dados com insert",
          "activityType": "txttosql",
          "varList": [
            {
              "key": "fileName",
              "value": "M:\\tmp\\DEM\\demo.csv"
            },
            {
              "key": "defSeparator",
              "value": ","
            },
            {
              "key": "toConnStr",
              "value": "Database=<db>; User_Name=<user>; Server=<server>; Password=<pwd>; DriverID=<driverId>"
            },
            {
              "key": "toReadSQL",
              "value": "select campo1, campo2, campo3 from teste"
            },
            {
              "key": "toWriteSQL",
              "value": "insert into teste (campo1, campo2, campo3) values (:campo1, :campo2, :campo3)"
            }
          ]
        }
      ]
    }
  ]
}

Shell

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.

Mais detalhes...

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)

{
  "activityId": "a9",
  "activityIdOnError": "",
  "activityDesc": "Executar batch",
  "activityType": "shell",
  "varList": [
    {
      "key": "command",
      "value": "out\\lerPasta.bat"
    }, 
    { 
      "key": "param",
      "value": "usr01"
    }, 
    {
      "key": "waitAfter",
      "value": "5000"
    }
  ]
}

5. Applicativo cpMonitor

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.

Parametrização da 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.

1.Criação do monitor

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).

2.Parametrização da instância do cpMonitor

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)

{
    "monitor":"jobteste",
    "monitorToken":"jobteste123",
    "connType":"subs",
    "monitorOpt":{
        "logType":"2",
        "queryInterval":30000,
        "enableJobRun":true,
        "enableJobSchedule":true,
        "enableMonitor":true,
        "cycleWait":10
    }
}

3.Configuração de pastas

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.