Utilizando Scripts em .NET
São códigos de programação, que serão embutidos no sistema. Possibilitam particularizar ou criar comportamentos e ações sobre os objetos (tags, telas, relatórios) não existentes de forma nativa no sistema. As seções a seguir descrevem como criar scripts usando o Action.NET
Configurar Tarefas
As Tarefas, ou TASKS são códigos de programas, escrito em VB.Net ou CSharp, que executam a partir de eventos de processo, quando ocorre um evento (trigger) ou periodicamente a cada intervalo de tempo pre definido na configuração.
A partir da versão 9.1 também foi incluído suporte para a utilização da linguagem Python, veja descrição desta funcionalidade em Integração com Python, neste guia.
O Action.NET vem com as seguintes Tasks internas, pré definidas:
ServerStartup - Executada quando o projeto começa a ser executado. É executada no servidor (computador que executa TServer.exe).
ServerShutdown - Executada quando o projeto é encerrado. É executada no servidor.
ClientStartup - Executada em cada cliente quando o TVisualizer.exe (módulo DISPLAYS) começa a funcionar.
ClientShutdown - Executada em cada cliente quando o módulo DISPLAYS é fechado.
A figura a seguir mostra a aba TASKS do espaço de trabalho do menu SCRIPTS.
Para configurar tarefas:
Vá para Edit> Scripts> Tasks.
Digite ou selecione as informações, conforme necessário.
Coluna | Descrição |
Name | Digite um nome para a tarefa. O sistema permite que você saiba se o nome não é válido. |
Code | Somente leitura. Por padrão a linguagem dot Net selecionada quando você criou o projeto. Na guia Editor de código, você pode mudar a linguagem do código. Para alterar o padrão de projeto, vá para Info > Settings. |
Trigger | Digite ou selecione o evento (tag ou objeto) que será usado para desencadear a execução da tarefa. A tarefa é executada quando o valor do objeto muda. |
Period | Digite a periodicidade de execução da tarefa. O campo tem o formato hh:mm:ss |
Domain | Selecione o local onde o script é executado:
|
InitialState | Selecione o estado inicial das tarefas:
|
BuildStatus | Somente leitura. Situação do código da tarefa de acordo com o processo de compilação contínua.
|
EditSecurity | Permite escolher o nivel de segurança para a edição do código desta Tarefa. Ao clicar aparece a janela com as categorias de usuários que terão acesso para alterar esta TASK. |
BuildErrors | Somente leitura. Mostrar erros encontrados desde o ultimo "Build" |
Description | Digite uma descrição para a Task. |
Após ter completada a entrada de dados na linha descrevendo a TASK digite o código para a Task.
Um duplo clique sobre a linha leva-o a acessar a área de código da tarefa na aba Code Editor. Veja em "Trabalhando com o Editor de Código" ,
Ao final da alteração de código clique em Save na parte superior do espaço de trabalho.
Configurando Classes
Classes permitem que você crie um repositório de bibliotecas de classes, métodos e funções que você pode usar em toda a aplicação. Você pode chamar estas classe de dentro de Tasks, de outras classes, e de Telas (Code Behind).
O Action.NET vem com as seguintes classes internas:
Biblioteca ServerMain-Métodos disponíveis para todas as tarefas do servidor.
Biblioteca ClientMain-Métodos disponíveis para todos os clientes.
Para configurar classes:
Vá para Edit> Scripts> Classes.
Digite ou selecione as informações, conforme necessário.
Column | Descrição |
Name | Digite um nome para a classe. O sistema indicará se o nome não é válido mostrando em vermelho o contorno do campo. |
Code | Somente leitura. Por padrão a linguagem dot Net selecionada quando você criou o projeto. Na guia Editor de código, você pode mudar a linguagem do código. Para alterar o padrão de projeto, vá para Info > Settings. |
Column | Descrição |
Domain | Selecione o local onde a classe é executada:
|
BuildStatus | Somente leitura. Situação do código da classe de acordo com o processo de compilação contínua.
|
BuildErrors | Somente leitura. Exibe todos os erros encontrados durante a última compilação |
EditSecurity | Permite escolher o nivel de segurança para a edição do código desta Tarefa. Ao clicar aparece a janela com as categorias de usuários que terão acesso para alterar esta TASK. |
Description | Digite uma descrição da classe |
Digite o código para a classe.
Dê um duplo clique na linha para acessar a aba Code Editor (Editor de código). Consulte Trabalhando com o Editor de Código.
Ao final clique em Salvar, na barra superior do espaço de trabalho.
Trabalhando com o Editor de Código
Você pode escrever código tanto no VB.Net como em CSharp. Você também pode alternar entre os dois. Se você mudar a sua opção de seleção de linguagem no editor de código, o sistema converte automaticamente o código existente para a linguagem selecionada.
Se você precisa criar referências (References) à suas próprias partes de código (assemblies), você pode usar as facilidades disponíveis em Run > Build > References.
Por ser uma aplicação totalmente compatívecom o dot NET, você pode encontrar no mercado ou na internet, trechos de código fonte, para uso gratuito, inclusive. produtos e bibliotecas dot NET, além de suas próprias bibliotecas que você pode usar imediatamente.
O Action.NET expõe para o programador de Scripts muitas bibliotecas do dot NET que podem ser utilizadas na aplicação. Existem alguns métodos que são muito frequentemente necessárias, tais como a conversão de tipo, ou cópia de Tags para DataTables o para objetos dot NET, ou para configurar dinamicamente parâmetros de comunicação, que estão incluídos em uma biblioteca kit de ferramentas própria. Para usar esses métodos, você só precisa colocar TK. no editor de código, pré fixando o método.
Exemplo:
double x = TK.ConvertTo <double> ("123");
Os métodos disponíveis estão descritos na Toolkits.html.
Para editar o código:
Vá para Edit> Scripts> CodeEditor .
Na lista drop-down na barra de ferramentas principal, selecione a Tarefa ou Classe que você deseja editar.
Para criar uma nova Task ou Classe, consulte "Configurar Tarefas" ou "Configurando Classes" .
Caso seja necessário, a partir da barra de ferramentas do editor de código, selecione uma linguagem de código fonte diferente.
Clique no ícone de Salvar na barra de ferramentas na parte superior do espaço de trabalho.
Duas bibliotecas dot NET estão disponíveis para uso com Action.NET:
Para o Script interno estão disponíveis métodos embutidos que você pode chamar usando TK. <methodName>. Para mais informações sobre esses métodos, consulte o manual Toolkits.html.
Se você usar o Microsoft Visual Studio, a biblioteca está disponível para uso com o Action.NET. Para mais informações sobre esta biblioteca, consulte a Toolkits.html.
NOTA - Quando você estiver usando o editor de código, o sistema constantemente compila o código em segundo plano. Você também pode "Build" (construir) todo o projeto, conforme necessário. Para mais informações, consulte "Executando a Aplicação"
Configurando Expressões
A ultima aba no espaço de trabalho Scripts é utilizada para a criação de Expressões que também funcionam como uma linha simples de código que será executada em determinadas condições, fornecendo um resultado.
Além da tabela que pode ser atualizada por Edit> Script> Expressions, em vários outros lugares no espaço de Engenharia do Action.NET, você pode digitar e usar expressões, utilizando a mesma sintaxe descrita aqui, para obter um valor resultado da expressão ou para configurar uma condição.
Expressions são meramente codificações na sintaxe VB.Net, como expressões aritméticas ou chamadas para métodos de classes definidas ou acessíveis no projeto. A facilidade Intellisense está orientada apenas para Tags e objetos de aplicação, não considerando a linguagem, mas as expressões são compiladas usando o compilador padrão VB.Net, então o que você puder escrever sem erros de sintaxe no editor de código, também poderá escrever para o código das Expressões.
O Action.NET implementa algumas substituições automatizadas, como == para =, então a sintaxe de uma expressão é muito próxima de uma declaração em C#, mas sem a necessidade de adicionar o ";" no final.
Desta forma, tanto os programadores VB.NET como os de C# são capazes de usar os campos de expressão, sem diferenças.
Em expressões, você não precisa colocar @ antes dos nomes de Tag. Você precisa do @ no editor de código para diferenciar os Tags do projeto das variáveis dot NET. No entanto, como as expressões não têm Variáveis locais dot NET, então pode-se usar os objetos de projeto diretamente.
Para operadores aritméticos, você deve usar os operadores padrão conforme descrito na documentação do dot NET.
Para permitir a avaliação de uma única linha, a linguagem dot NET dispõe do comando IIF, que realmente é utilizado apenas com IF. O comando IF tem três parâmetros.
Por exemplo:
IF (A, B, C)
O primeiro parâmetro é uma condição.
Esse método retornará B se a condição A é verdadeira;
E ele retorna C, se a condição for falsa.
Exemplo: Se (tag.A = 1, "Verdadeiro", "Falso") irá retornar uma string de acordo com o valor do tag.A.
Neste método dot,NET, todos os três parâmetros são avaliados independentemente da condição. Por exemplo, se você tem
IF (tag.A = 1, script.class.client.Func1(),script.class.client.Func2())
Ambos Func1 e Func2 vão sempre ser executados. Apenas o valor de retorno será diferente com base no valor de tag.A.
O método IF ou IIF precisa avaliar os parâmetros antes de chamar o método. Há muitas situações em que você deseja executar apenas a função de acordo com o valor.
Para esse cenário o Action.NET tem um método chamado TIF, que tem esse comportamento. Então, você usa a expressão:
TIF (tag.A = 1,script.class.client.Func1(),script.class.client.Func2())
Apenas a Func1 () ou a Func2 () vai ser executada, de acordo com o valor de Tag.A
O método TIF é definido na biblioteca de classes que é automaticamente exposta a expressões que estão na biblioteca de funções Toolkit.
Para cálculos mais complexos, você pode chamar uma classe que você deve antes criar na aba Classes. Veja em "Configurando Classes".
Para configurar expressões:
Vá para Edit> Scripts> Expressions .
Digite ou selecione as informações, conforme necessário.
Coluna | Descrição |
Object | Selecione uma tag ou objeto existente. |
Expression | Digite a expressão. A expressão pode ser uma expressão matemática básica, usar uma classe, ou ser uma expressão condicional. |
Domain | Selecione onde a expressão é executada:
|
Coluna | Descrição |
Execution | Selecione quando a expressão é executada:
|
Trigger | Digite ou selecione um Tag ou objeto que será usado para disparar a execução da expressão. O disparo da execução ocorrerá quando o valor do tag ou objeto se alterar. |
Time | Tempo horário ou período usado como referência para cada um dos tipos de execução. |
DisableConditio | Digite ou selecione um Tag ou objeto que será usado para desabilitar a execução da expressão |
BuildStatus | Somente leitura. Situação do código atualizado após clicar em
|
BuildErrors | Somente leitura. Exibe todos os erros encontrados durante a última compilação |
Clique em Verify para verificar a validade da expressão.
Usando o depurador .NET
Criando Informação de depuração
O Action.NET tem um depurador dot NET integrado. Para usá-lo, é necessário que o computador local tenha arquivos de cache com os arquivos necessários para executar o depurador.
As etapas para ativar o depurador são:
Ativar o Debug Informações em Run> Build> Messages: na parte superior do painel marque a opção "Include Debug Information".
Se necessário, salve novamente o código fonte que você deseja depurar, deste modo as informações de depuração serão criadas. Esta etapa só é necessária na primeira vez que abrir o projeto no computador. Depois disso, a compilação de "background" irá manter a geração das informações de depuração, à medida que se altera o código, para permitir o uso de pontos de interrupção e execução passo a passo.
Anexando o depurador dot NET
De modo a se ter uma sessão de depuração dot NET, o ambiente de Engenharia deve ser conectado ao ambiente do runtime e o depurador dot NET anexado ("Attached") ao processo do servidor ou processo do cliente.
Siga estes passos.
Durante a execução do projeto, seja em Run>Test ou Run>Startup habilitar a caixa de seleção de conexão.
Se o projeto já estiver em execução, você pode ir para Run>Test ou Run>Startup, de acordo com o tipo de execução que você deseja anexar, e conectar-se ao sistema de execução, pressionando o botão de conexão nessas páginas.
Abra qualquer script que tem informações de depuração e pressione o botão Anexar. depurador NET. Uma mensagem na parte inferior da área de trabalho de engenharia vai mostrar que uma sessão de depuração está ativa com os componentes do servidor ou os componentes do cliente do projeto em execução.
Quando o depurador dot NET está Anexado o sistema irá parar nos pontos de interrupção definidos e também irá parar automaticamente quando ocorrer qualquer NET Exception.
Veja no Editor de Código os Botões para Anexar e Desanexar depurador, executar, executar passo a passo criar pontos de interrupção mostrados no retângulo vermelho. Na parte inferior informação de status da depuração.
Pontos de interrupção, Passo a Passo e Watch
Para configurar um ponto de interrupção, abra o código desejado, selecione a linha e pressione o Insert Breakpoint na barra de ferramenta ou clique na barra vertical esquerda da janela de código.
Quando o sistema para em um ponto de interrupção, você pode executar passo a passo pressionando os botões de execução passo a passo ou mandar seguir pressionando o botão continuar.
A fim de inspecionar variáveis locais do dot NET tags ou objetos do projeto, você pode selecionar o texto no editor de script e, quando a execução for interrompida em um ponto de interrupção, o kit de ferramentas mostrará o valor atual da variável.
Você também pode adicionar. variáveis locais do dot NET ou objetos do projeto na janela Watch do próprio Code Editor (parte inferior) Ao adicionar tags ou objetos do projeto, você precisa usar os símbolos @, example@tag.tag1, para que o sistema distingua entre objetos de projeto, e variáveis locais do dot NET. Tenha em mente que o Watch será atualizado apenas quando a execução é interrompida. Se você quer ter os valores em tempo real para tags e objetos, você pode abrir a ferramenta de diagnóstico PropertyWatch descrita em "Ferramentas de Diagnóstico" .
Objeto Runtime Script
O namespace Script é o ponto de entrada para todos os objetos relacionados ao módulo de Scripts.
O objeto Script.Task lista todas as Tasks configuradas e suas propriedades em tempo de execução.
Os objeto Script.Class lista todas as Classes e suas propriedades em tempo de execução configurado.
Veja em {+}http://www.spinengenharia.com.br/help/an-2016/runtime/index.html+ . para a referência de programação completa em objetos de tempo de execução.