Versões comparadas
Chave
- Esta linha foi adicionada.
- Esta linha foi removida.
- A formatação mudou.
Objetivo
Demonstrar
Produto | : | TOTVS Framework Versão : 11.5x | 11.8x |
Processo | : | Fórmula Visual |
Subprocesso | : | Criando uma nova atividade |
Data da publicação | : | 04/09/2014 |
...
o que é necessário para realizar a criação de uma nova atividade de fórmula visual.
Como Funciona
Para criação de uma nova atividade de Fórmula Visual são necessários os seguintes passos:
Referenciar as DLLs "RM.Lib.dll,RM.Lib.WinForms.
...
dll e RM.Lib.Workflow.Activities.dll"
...
ao projeto.
Image Added
A classe implementada deve herdar da classe RMSActivity, ou outra herança desta, como RMSDynamicActivity.
Image Added
- Implementar sua regra de negócio internamente ao método "Execute", a ser sobrescrito (override).
No Exemplo abaixo demonstra uma classe que executa um processo
Exemplo: CancelarMovimentoActivity.cs
Exemplo de como utilizar um DataServer através da atividade
No Exemplo abaixo é executado um ReadView do DataServer Informado.
Exemplo: ExemploDataServerActivity.cs
4. Manipulando um dataServer de metadados via atividade customizada:
O código exemplo abaixo utiliza as funcionalidades do dataServer para manipular uma tabela de Metadados.
Foram utilizados os recursos de ReadView (para leitura da lista de registros da tabela de metadados),
ReadRecord (para leitura de um registro do metadados) e SaveRecord para enviar os dados para o dataServer do metadados.
Foram simuladas as operações de inclusão de um novo registro, alteração do registro existente e exclusão registro em questão.
Bloco de código |
---|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; using RM.Lib.WinForms; using RM.Lib.Workflow; using RM.Lib; using System.Data; namespace RM.ExemploAtividadeCustom { [RMSDescription(typeof(Properties.Resources), "sActivityTeste")] [RMSActivityCategory(typeof(Properties.Resources), "sCategoryIntegracao")] public class ConTotvsMessageActivity : RMSActivity { //Implementação da regra de execução da atividade de FV. protected override void OnExecute() { // verifica se o serviço esta disponível... if (this.BrokerService == null) throw new RMSWorkflowException("Serviço não disponível!"); //Cria uma nova instancia do DataServer gerado pela ferramenta de medatados. //No exemplo abaixo, foi gerado o dataServer de metadados "RMSPRJ3249920Server". O nome desse dataserver //poderá ser consultado no arquivo "_Broker.dat" localizado dentro do diretório de instalação das dlls do Rm. IRMSDataServer dataServerProduto = (IRMSDataServer)this.BrokerService.CreateServer("RMSPRJ3249920Server"); //Cria uma instancia da classe RMSContext para informar a coligada e usuario. RMSContext context = new RMSContext(); context.CodColigada = 1; context.CodUsuario = "mestre"; //Objeto ownerData em caso de existencia do mesmo em um dataServer. object ownerData = null; //Exemplo de filtro a ser enviado para o método readView. string filter = "Codigo like '%000%' "; //Leitura da visão dos dados. //Método READVIEW: Esse método retornará os dados fornecidos pelo DataServer através do filtro passado //e contexto. Esse método é o mesmo que é executado em todas as visões do RM. DataSet dsView = dataServerProduto.ReadView(context, new object[] { filter }, ownerData); if (dsView.Tables[0].Rows.Count == 3) RM.Lib.RMSException.Throw("Foram encontrados 3 registros!"); //Inclusão de um novo registro //Busca um registro inexistente. DataSet dsNewRecord = dataServerProduto.ReadRecord(context, null, ownerData); //Preenche os dados do registro. DataRow r = dsNewRecord.Tables[0].NewRow(); r["CodColigada"] = "1"; r["Id"] = "1"; r["Codigo"] = "00010"; r["Descricao"] = "Produto teste"; dsNewRecord.Tables[0].Rows.Add(r); //Executa o método abaixo para enviar o registro para o DataServer dataServerProduto.SaveRecord(context, ref dsNewRecord, ownerData); //READRECORD: Esse método retornará apenas um registro. Esse método é o mesmo que é executado ao realizar a edição //ou inclusão de um novo registro.Ele retornará o registro com as seguintes chaves: //CodColigada = 1 e Id = 1 DataSet dsRecord = dataServerProduto.ReadRecord(context, new object[] { 1, 1 }, ownerData); if (dsRecord.Tables[0].Rows.Count == 0) RM.Lib.RMSException.Throw("Registro não encontrado!"); //Realiza uma alteração no registro,,, dsRecord.Tables[0].Rows[0]["Descricao"] = "Produto teste alterado"; //Executa o método abaixo para enviar o registro para o DataServer dataServerProduto.SaveRecord(context, ref dsRecord, ownerData); //Execlui o registro. dsRecord.Tables[0].Rows[0].Delete(); dataServerProduto.SaveRecord(context, ref dsRecord, ownerData); } } } |
Informações |
---|
Esse exemplo foi criado utilizando um dataServer simples criado através do recurso de Metadados do RM. |
Aviso | ||
---|---|---|
| ||
Ao executar o SaveRecord os registros serão, Inseridos, Atualizados ou Removidos de acordo com o rowState do DataSet informado no SaveRecord. |
Para a compilação e execução deste projeto pode ser necessário seguir os passos:
- Atualizar as referências das DLLs do RM Utilizadas "RM.Lib.dll, RM.Lib.WinForms.dll , RM.Lib.Workflow.Activities.dll, RM.Mov.Processos.Intf" com o caminho das mesmas direcionando para o local da Biblioteca RM.
Efetuar "Clean Solution"
Efetuar o "Build Solution" em modo Release.
- Copiar a DLL "Gerada" para a pasta da Biblioteca RM.
Efetuar o cadastro da Atividade de Fórmula Visual acesse o menu
Image Added,
Image Added,
Image Added, clique no botão Incluir
Image Added, será exibida a seguinte tela.
Preencha os campos
Image Added
Nome da Classe: RM.Spx.Exemplo.Activities.CancelarMovimentoActivity
Nome do Assembly: RM.Spx.Exemplo.Activities
Image Added
Após salvar a atividade estará disponível para utilização.
Image Added
Informações | ||
---|---|---|
| ||
Ao retirar a dll referente à atividade criada, da pasta, onde os binários estão localizados, [RM.Net], por exemplo, da próxima vez que a fórmula visual for executada, apenas as atividades válidas, ou seja, apenas as atividades vinculadas às dll's existentes na pasta [RM.Net] serão efetivamente executadas. Ao abrir uma fórmula visual será observado, que apenas as atividades válidas estarão presentes no design da mesma. Desta forma não temos como garantir o correto funcionamento da fórmula visual, caso a dll de alguma atividade seja retirada da pasta [RM.Net]. |
Informações | ||
---|---|---|
|
Consulte o WikiHelp TOTVS
...
|
...
Canais de Atendimento |
...
Chamado: Através do Portal |
...
TOTVS - www.suporte.totvs.com.br Telefônico: 4003-0015 Escolhendo as opções |
...
2-2-3-9-5 (Framework) ou 2-2-3-9-4 (BI) |
Produto | Framework |
---|---|
Versão | 11.82.XX e 12.01.XX |
Processo | Fórmula Visual |
Subprocesso | Criando uma nova atividade |
Status do Documento: | Produção |
---|---|
Data: | 04/09/2014 |
Versão: | 11.82.XX e 12.01.XX |
Versão Anterior: | 11.82.XX e 12.01.XX |
Autores: |