A Tarefa de Script consiste em uma tarefa computacional que permite executar os seguintes tipos de script:
- SQL (select, insert, update, blocos de código e chamadas as Stored Procedures);
- Comandos Powershell;
- Classe .NET C# (a partir da versão 3.5 do Orquestra BPM).
Esta tarefa deve ser utiliza somente por pessoal técnico.
Comando SQL
O comando é executado diretamente no banco de dados do Orquestra BPM. Caso se deseje executar um comando em outro banco de dados ou servidor, crie uma conexão e configure a atividade para usar essa conexão.
Para tarefas configuradas sem definição de Conexão
O comando será executado dentro de uma transação que o Orquestra abre a cada execução de tarefa, portanto não é necessário incluir os comandos de iniciar ou fechar transação. Ao ocorrer um erro, a transação sofrerá rollback.
Para tarefas configuradas com Conexão dos provedores SQL Server e Oracle
O comando será executado sem uso de transação. Nesse caso é possível explicitar no campo "Comando" da tarefa a utilização de transação, commit, rollback, etc. Essa operação será feita diretamente na conexão a base de dados destino. Ao ocorrer um erro, a transação sofrerá rollback.
Para tarefas configuradas com Conexão do provedor ODBC
O comando será executado dentro de uma transação no banco de dados destino, portanto não é necessário incluir os comandos de iniciar ou fechar transação. Ao ocorrer um erro, a transação sofrerá rollback.
Por questões de segurança e integridade não são permitidos o uso de comandos de DELETE ou DROP neste elemento. Ao tentar configurar esse tipo de comando será gerada mensagem de erro "O campo COMANDO possui um comando de exclusão inválido
Comandos Powershell
Permite a execução de comandos Powershell a serem executados no servidor de aplicação.
Classe .NET C#
Disponível a partir da versão 3.5 do Orquestra BPM
Permite declarar classes em linguagem C# para executar operações de processamento de dados. O resultado de uma chamada a um método em C# poderá ser direcionado para ser salvo em um campo do formulário eletrônico do processo.
É possível chamar classes das seguites bibliotecas do .Net Framework:
- System.dll
- System.Configuration.dll
- System.Data.dll
- System.Linq.dll
- System.Web.dll
- System.Web.Services.dll
- System.Xml.dll
- System.Xml.Linq.dll
Configurações
Ao clicar em uma tarefa deste tipo, sua caixa de propriedades possuirá os seguintes campos:
- Título: o título da tarefa, para identificação;
- Descrição: uma breve descrição da tarefa, para referência;
- Variáveis: selecione uma das variáveis do processo para utilizá-las na execução do comando;
- Comando: digite o comando SQL a ser utilizado. Ex.:
EXEC PROCEDIMENTO1 {Processo.Codigo}, {Formulario.Titulo}
- Conexão: caso esse comando deva ser executado em outro banco de dados que não o banco de dados do Orquestra, selecione aqui a conexão com banco de dados pré-configurada.
- Permitir mais de uma execução a cada instância: caso marcada essa opção se o fluxo do processo passar mais de uma vez pela tarefa ela será executada a cada passada. Caso desmarcada, mesmo que o fluxo do processo passe mais de uma vez por esta tarefa ela será executada apenas uma vez. Neste último caso o registro do processo ter passado pela tarefa de script será realizado normalmente na tabela que armazena esse tipo de informação (wfflow_execute_task).
Atenção. Jamais configure uma tarefa de stored procedure para utilizar uma conexão que aponte para o próprio banco de dados do Orquestra. Caso deseje utilizar o banco de dados do Orquestra, deixe a conexão em branco.
Deve-se atentar para questões de segurança desta tarefa. O usuário sob o qual é executado o comando tem acesso total as tabelas do banco de dados do Orquestra BPM.
Atenção!! O tempo máximo para a duração da execução de um comando na base de dados é de 30 segundos. Passando desse tempo o sistema apresentará erro de "timeout". |
Restrições a comandos ORACLE
Caso esteja executando comandos em um banco de dados ORACLE, poderá receber o seguinte erro:
ORA-00911: invalid character
Esse erro ocorre geralmente devido a uso do caracter ponto-e-vírgula (";") para delimitar comandos diferentes. Infelizmente o conector Oracle utilizado pelo Orquestra não suporte esse delimitador. Você deverá encapsular o seu código em uma Stored Procedure ou utilizar mais de uma tarefa de banco de dados.