Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice:


      

Objetivo:


     Este documento tem por objetivo especificar a atividade “Executar Código Fonte” disponível na Fórmula Visual.

Especificação:

     A atividade “Executar Código Fonte” é uma atividade que permite que um código (que varia de Levantar uma Exceção à realizar rotinas de Selecionar Dados de Tabelas do Banco, entre outras ) seja executado. Devido a sua complexidade,esta atividade exige um nível de conhecimento avançado em Fórmula Visual e em codificação.

Image Removed

Para começarmos a utilizar a atividade, temos que conhecer os parâmetros que ele recebe.

Image Removed

Nome do Parâmetro

Descrição do Parâmetro

Obrigatoriedade

1ExecuteCodeCódigo à ser executadoOBRIGATÓRIO

1) Existem duas formas de preencher a Propriedade ExecuteCode:

1.1) Clicando no Ícone Amarelo ao lado da Propriedade ExecuteCode, ou no botão [...] que aparece ao lado da mesma propriedade, a tela abaixo irá aparecer.

Image Removed

1.2) Clicando duas vezes em cima da Propriedade ExecuteCode, um console de programação .Net irá aparecer abaixo do diagrama do Workflow.

Image Removed

A funcionalidade de Executar Código aparece também clicando:

2) Na parte branca do Workflow, através do Grupo Manipuladores:

Image Removed

Nome do Parâmetro

Descrição do Parâmetro

Obrigatoriedade

1CompletedCódigo à ser executado no momento em que a execução do WorkFlow termina.
Estado
colourYellow
titleOpcional
2InitializedCódigo à ser executado no momento em que a execução do WorkFlow se inicia.
Estado
colourYellow
titleOpcional

Tanto para a Propriedade Completed, quanto para a Propriedade Initialized, existem duas formas de preenchê-las, são elas: 

2.1) Clicando no Ícone Amarelo ao lado das Propriedades Initialized / Completed ou no botão [...] que aparece ao lado das mesmas propriedades, a tela abaixo irá aparecer.

InitializedCompleted
Image Removed
Image Removed

2.2) Clicando duas vezes em cima das Propriedades Initialized / Completed, um console de programação .Net irá aparecer abaixo do diagrama do Workflow.

InitalizedCompleted
Image Removed
Image Removed

3) Na atividade Se / Senão.

3.1) No Grupo Condições Escolher Condição de Código

Image Removed

3.2) Existem duas formas de preencher a Propriedade Condition:

3.2.1) Clicando no Ícone Amarelo ao lado da Propriedade Condition, ou no botão [...] que aparece ao lado da mesma propriedade, a tela abaixo irá aparecer.

Image Removed

3.2.2) Clicando duas vezes em cima da Propriedade Condition, um console de programação .Net irá aparecer abaixo do diagrama do Workflow.

Image Removed

A diferença do console da Propriedade Condition é que ela já vem por padrão com a linha args.Result = true;.

Como é uma atividade que necessita definir uma condição, o resultado desse código deve ser um valor booleano (ou lógico), true ou false.

Exemplo de Utilização da Atividade

EXEMPLO 1:

Iremos utilizar a atividade "Executar Web Service" em conjunto com a atividade "Executar Código".

1) Configure a atividade de Web Service [Utilizando a atividade "Executar Web Service"]

Image Removed 

2) Defina o Retorno como uma Nova Propriedade clicando no botão [...] à frente da Propriedade Retorno

Image Removed

2.1) A tela da Atividade ficará assim

Image Removed

3) Vamos gerar uma exceção trazendo o retorno do Web Service

Image Removed

O Resultado é o mesmo das telas apresentadas abaixo:

Image Removed

Image Removed

EXEMPLO 2: 

Iremos utilizar a atividade "Executar Consulta SQL" em conjunto com as atividades "Executar Código" "Enviar E-mail".

Image Removed

1) Configure a atividade de Consulta SQL [Utilizando a atividade "Consulta SQL"]

Image Removed

Bloco de código
languagesql
firstline1
titleConsulta SQL FVXML01
linenumberstrue
SELECT XMLNFE FROM TNFEMUNICIPAL (NOLOCK) WHERE CODCOLIGADA = 1 AND IDMOV = 2231

2) Configure a atividade de "Executar Código Fonte".

Image Removed

Bloco de código
languagec#
firstline1
titlecodeActivity1: ExecuteCode
linenumberstrue
string Xml = null;
private void codeActivity1_ExecuteCode(object sender, System.EventArgs args)
{
    string xml = Convert.ToString(this.rmsConsSQLActivity1.Tables[0].Row[0]);
    
    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
    this.XmlResultEmail  = encoding.GetBytes(xml); 
}
Informações
titleOUTROS EXEMPLOS DE CÓDIGO

EXEMPLO (Geração de Erro com conteúdo de SQL de uma Atividade Consulta SQL e retornando um erro):

Bloco de código
languagec#
firstline1
titlecodeActivity1: ExecuteCode
linenumberstrue
string Xml = null;
private void codeActivity1_ExecuteCode(object sender, System.EventArgs args)
{
	string xml = Convert.ToString(this.rmsConsSQLActivity1.Tables[0].Row[0]);
	
	this.rmsThrowActivity1.Message = "Erro"+xml;

	//this.XmlResult = xml;
	// outra opção que pode ser utilizada para passar o conteúdo para a Gera Exceção, porém é necessário criar um novo campo na Atividade Gera Exceção, através da 	Aba "Associar a um novo membro"
}

EXEMPLO Geração de Erro com conteúdo de SQL de dentro da Atividade Executar Código e retornando um erro:

Bloco de código
languagec#
firstline1
titlecodeActivity1: ExecuteCode
linenumberstrue
string Xml = null;
private void codeActivity1_ExecuteCode(object sender, System.EventArgs args)
{
 	string xml = Convert.ToString(DBS.QueryValue("", "SELECT XMLNFE FROM TNFEMUNICIPAL (NOLOCK) WHERE CODCOLIGADA = 1 AND IDMOV = 2231"));
 
 	this.rmsThrowActivity1.Message = "Erro"+xml;
}

3) Configure a atividade de "Enviar E-mail" [Utilizando a atividade "Enviar E-mail"].

Image Removed

4) Ao executar a Fórmula Visual o E-mail com o XML da Nota Fiscal Eletrônica (Exemplo Utilizado) será enviado aos destinatários configurados.

Image Removed

Image Removed

Image Removed

o bloco Saúde da Aplicação do Cockpit.

1 - Especificação:


HTML
<style type="text/css">
.confluence-information-macro {
    width: calc(100% - 25px);
    background: #fff !important; 
    border: 0;
    -moz-border-radius: 0px !important;
    -webkit-border-radius: 0px !important;
    border-radius: 0px !important;
    color: #333;
    margin: 10px 0 1em 0;
    min-height: 20px;
    padding: 10px;
    position: relative;
}


.confluence-information-macro p.title{
    padding-left: 20px;
    margin-top: 0px;
margin-bottom: 5px;
}

.confluence-information-macro .confluence-information-macro-icon.aui-iconfont-error{
	color: #fff;
}
.confluence-information-macro-warning{
	background-color: #d04437 !important;
	color: #fff;
}

.confluence-information-macro-information{
border: 1px solid #aab8c6 !important;
}

</style>


1.1 - Bloco Saúde da Aplicação e Verificação de Serviços:



Para acessar a tela do Cockpit acesse, em qualquer módulo, o Menu Ambiente >> Cockpit, 

Image Added


Na tela do Cockpit, observe que para cada servidor conhecido, um bloco de informações é apresentado. Esse bloco de informações possui grupos distintos, que são: 

  • Processos
  • Servidores de Aplicação
  • Saúde da Aplicação

Nesse documento iremos explicar apenas o bloco "Saúde da Aplicação".

Image Added


Vamos descrever os componentes desse grupo.

Image Added


Componente

Descrição do Componente

1Ícone de StatusSituação da Saúde do Servidor Conhecido/ Situação do Processo Executado (Visual)
2Situação da Aplicação / Situação do Processo ExecutadoAqui é apresentado de forma textual a situação da saúde do servidor conhecido/ situação do processo executado dentro do grupo "Saúde da Aplicação". Refere-se aos processos executados pelos botões (4, 5 e 6).
3Descrição dos Serviços Indisponíveis.Aqui é apresentado de forma textual os serviços indisponíveis que poderão ser recuperados através do Processo de Recuperar Serviços (Botão 6).
4Verificação RápidaRealiza uma verificação superficial dos serviços do Host do RM para um determinado servidor conhecido.
5Verificação CompletaRealiza uma verificação de todos os serviços do Host do RM para um determinado servidor conhecido.
6Recuperar ServiçosO processo de Recuperar Serviços tentará recuperar todos os serviços que por algum motivo se tornaram indisponíveis.


Vamos Iniciar a Verificação Rápida para tentar descobrir se algum serviço está indisponível e se poderá impactar na Saúde do Servidor Conhecido.

- Clique no botão Verificação Rápida (4):

Você poderá obter dois resultados:

  • Sucesso
    Se a Verificação Rápida for executada com sucesso, quer dizer que não foi identificado serviço indisponível (lembrando que uma busca superficial é feita nesse caso), o que é um ótimo indicativo. Caso deseje, poderá executar a Verificação Completa para ter certeza que realmente não há nenhum serviço indisponível que poderá impactar na Saúde do Servidor.

Image Added


  • Falha
    Se o Ícone (1) for vermelho (critico) e o Texto (2) for "Indisponivel", algum problema ocorreu no processo de Verificação, então execute novamente o processo de Verificação Rápida.

    Informações
    titleObservação

    Caso essa mensagem persista, verifique se o servidor está offline.

Image Added


Agora iremos realizar a Verificação Completa para confirmar  se algum serviço está indisponível.

2 - Clique no botão Verificação Completa (5):

Você poderá obter 2 resultados: 

  • Sucesso
    Caso a Verificação Completa termine em sucesso, quer dizer que todos os serviços do host do RM estão ativos e disponíveis para uso, ou seja, tanto a aplicação quanto o servidor estarão em sua atividade plena.

Image Added


  • Falha (Atenção)
    Caso a Verificação Completa termine em falha, verifique:
      • O Status da Aplicação:
        • se o Ícone (1) for amarelo (atenção) e o Texto (2) for "Indisponível", confira em seguida o campo Serviços Indisponíveis (3) e verifique se algum serviço foi apresentado. Caso algum serviço tenha sido apresentado selecione-o, e clique no botão Recuperar Serviços (6).

Image Added


      • se o Ícone (1) for vermelho (critico) e o Texto (2) for "Indisponivel", algum problema ocorreu no processo de Verificação, então execute novamente o processo de Verificação Completa.

        Informações
        titleObservação

        Caso essa mensagem persista, verifique se o servidor está offline.


Image Added


Se a Verificação Completa apontar algum serviço indisponível, devemos recuperar esses serviços, para que a saúde do servidor conhecido seja recuperada.

3 - Para isso selecione o(s) serviço(s) indisponível(is) e clique no botão Recuperar Serviços (6):

Informações
titleObservação

Os serviços selecionados serão recuperados e uma nova Verificação Completa é realizada, podendo gerar os dois resultados vistos acima, no segundo apêndice.

Aviso
titleAtenção

Se a situação (Status) da Saúde da Aplicação estiver como Indisponível juntamente com o Ícone Amarelo, clique no botão Recuperar Serviços (6) até que a Situação (Status) mude para "Verificação Completa Finalizada".


1.2 - Verificação Total:


Iremos abordar agora sobre a Verificação Total.

Image Added


A Verificação Total tem o objetivo de verificar/analisar a saúde de todos os servidores conhecidos.

A Verificação Total pode ser feita de dois modos:

  • Verificação Rápida
  • Verificação Completa


Image Added


Tudo o que foi dito na seção 1.1 - Bloco Saúde da Aplicação e Verificação de Serviços serve para a Verificação Total. A diferença é que as verificações são realizadas em todos os servidores conhecidos.

No exemplo abaixo, perceba que a Verificação Completa realizada no servidor BHN0501030950:8050, não culminou em sucesso, um serviço (GatewayService) não estava disponível no momento, porém a Verificação Completa no servidor BHN0509503010:8050 terminou com sucesso, indicando perfeita saúde nesse servidor.


Image Added

Informações
iconfalse
Informações
iconfalse

Produto: Framework

Informações
iconfalse

Versão: 12.1.17 ou Superior

Informações
iconfalse

Processo: Atividade "Executar Código Fonte" da Fórmula Visual Saúde da Aplicação - Cockpit

Informações
iconfalse
Informações
iconfalse

Status: Finalizado

Informações
iconfalse

Data:  

Informações
iconfalse

Autores:

Alexandre de Sousa José

Carlos Philippe de Farias Marques

Carlos Roberto Pereira Garcia

Diogo Damiani Ferreira

Stella Gleyse Macedo Vilaca

Fábio Augusto Amaral Melo Nunes

Informações
iconfalse