Академический Документы
Профессиональный Документы
Культура Документы
00
Christiano Coutinho de Moraes/ 10 - 2010
XII) Prtica 06 Complementando a atividade anterior : E-Mail XIII) Atividade Executar Processo XIV) Prtica 07 Execuo de Processos XV) At onde posso chegar com as Frmulas Visuais?
No Workflow acima, as regras so definidas pelos losangos, associados s tarefas que os precedem. Existe apenas um papel que o do pedestre e as rotas definem as possveis trajetrias que definem destinos para o processo.
5
A Frmula Visual RM possui um princpio reativo individual. Isso quer dizer que a sua execuo est vinculada ao contexto do usurio que disparou a atividade inicial. A Frmula Visual depende da iterao do usurio para ser executado
Portanto deve-se entender que a princpio, uma nica Frmula Visual RM no poder ser utilizado para se criar Workflows de aprovao de requisies e qualquer outro de natureza assncrona, onde a iterao de vrios usurios seja necessria para a concluso do processo de negcio. Uma Frmula Visual enxergar apenas o usurio corrente.
10
12
13
14
Prtica 01: criar uma Frmula Visual no RM Labore que bloqueie qualquer alterao nos cadastros de sees cujo nome das sees contenha o texto RM Sistemas
15
16
17
18
19
20
21
22
23
25
Arrastar e soltar ao centro do diagrama uma atividade do tipo Se/Seno. A utilizao dessa atividade muito comum, utilizada sempre para se avaliar condies e estados dos itens da Frmula Visual RM
26
Faz sentido utilizar mais de uma ifElseBranchActivity quando houver mais de uma condio a ser avaliada, sendo que cada uma dessas condies podem direcionar o fluxo para sentidos diferentes. Caso contrrio, podemos utilizar apenas uma (que na verdade o nosso caso). Ento, selecione com o mouse a segunda atividade e exclua a mesma.
27
Dentro da Atividade, vamos definir a condio a ser avaliada, e que quando for verdadeira, ir disparar suas atividades filhas
28
a Frmula Visual RM pode utilizar recursos do .net Framework atravs da sua linguagem utilizada para de criar as expresses a serem avaliadas nas atividades se/seno. A linguagem bem parecida com C#, mas as classes no so necessariamente idnticas a j conhecida FCL (Framework Component Library). Se voc conhece a linguagem C#, tome cuidado para no fazer confuso entre as classes da FCL e as classes da Frmula Visual RM. Exemplo: O objeto Table ( o qual utilizamos nesse exemplo) no um DataTable, e por isso no foi necessrio se indicar qual o ndice da linha a ser comparada Quo maior for o seu conhecimento em C# e .net, maiores sero as possibilidades de se utilizar a Frmula Visual RM.
29
Como desejamos interromper o fluxo da Frmula Visual quando determinada condio for atendida, devemos ento arrastar e soltar sobre a atividade de se/seno uma atividade do tipo Gerar Exceo. Esse tipo de atividade possui exatamente essa finalidade (interromper o fluxo), e como filha de um se/seno, s ser disparado caso a condio de sua atividade me for verdadeira.
30
Selecionando a atividade rmsThrowActivity1, basta que a propriedade Mensagem de Erro seja preenchida. Esta mesma mensagem ser exibida em dilogo de erro quando o usurio tentar executar tarefa associada cuja condio da atividade me seja atendida.
31
Caso todos os passos tenham sido executados corretamente, a janela de erro ser exibida ao se alterar o cadastro de uma seo que atenda condio estabelecida na regra.
32
Ao se associar um Frmula Visual um gatilho que disparado por uma viso, os campos da viso podem ser facilmente acessados atravs das propriedades Tables, DataSet e Fields. Tanto os novos valores quanto valores antigos do registro podem ser acessados atravs da Frmula Visual pelos gatilhos disparados antes de se salvar o registro A atividade se/seno utilizada para se criar uma estrutura condicional cuja lgica determinada pelo usurio final.
33
Para dominar a utilizao das frmulas visuais, necessrio conhecer como as atividades se encaixam Nessa primeira atividade, j aprendemos um tipo de encaixe que deve ser memorizado: devemos utilizar a propriedade : this.Tables[nome_tabela][nome_campo] quando desejarmos criar um diagrama que ir ser disparado por um gatilho que tratar um registro.
34
Outro fato importante o de se considerar a criao de uma frmula visual para cada gatilho. Isso se faz necessrio, pois em cada situao, a condio de encaixe das atividades muda. Alm de criar, a frmula visual dever ser associada corretamente ao cadastro ou processo para o qual foi criada
35
Utilizada para se realizar consultas SQL cadastradas no sistema que retornem uma ou N linhas. Normalmente utilizada em operaes de validao; Apesar da quantidade de propriedades, uma das atividades mais fceis de ser utilizadas.
36
Prtica 02: criar um Frmula Visual que restrinja o cadastro de dependentes a no mximo dois dependentes por funcionrio (cadastro de funcionrios .net)
37
SELECT COUNT(CODCOLIGADA) QTD FROM PFDEPEND (NOLOCK) WHERE CODCOLIGADA = :CODCOLIGADA AND CHAPA = :CHAPA
38
39
40
41
42
Passo 6) Clicar em cada um dos parmetros na atividade de consulta, selecionando a propriedade Item. Pressionando a tecla F2, ser possvel informar qual o nome da coluna do registro atual ser passado como parmetro.
43
Passo 6) Configurar os respectivos parmetros conforme as imagens acima. Observe que o tipo retornado deve ser compatvel com o tipo do parmetro.
44
45
46
47
48
49
50
51
Identificamos que a atividade de consulta SQL utiliza apenas consultas cadastradas no sistema , sendo que no possvel escrever a consulta dentro da prpria atividade. Uma das formas mais convenientes de se recuperar o valor retornado pela consulta SQL atravs da propriedade: atividadeConsultaSql.Fields[nome_campo] CUIDADO para no fazer confuso entre Fields da atividade e Fields da frmula visual!
52
Utilizada para se executar expresses (as mesmas j utilizadas no produto, como por exemplo, no gerador de relatrios). uma tima alternativa para tratamento de dados. A sintaxe das expresses no foram alteradas, e continuam muito semelhantes ao Object Pascal.
53
Utilizaremos a atividade de expresso para definirmos uma mensagem de erro mais amigvel. Para isso, ser necessrio acrescentar a referida atividade ao diagrama anterior, conforme imagem ao lado.
54
55
56
57
58
Exerccio 01: criar uma frmula visual que no permita a alterao ou incluso de um funcionrio com salrio menor que R$ 500,00. Tempo para execuo: 15 Min
59
Caso as atividades existentes no produto no sejam suficientes para atender s necessidades de uma determinada customizao, novas atividades podero ser desenvolvidas e plugadas aa Frmula Visual RM Partindo desse princpio, a possibilidade de customizaes na Linha RM ainda mais ampla, pois o cliente poder definir quais as atividades ele deseja utilizar no produto.
Aps definidas, ele poder desenvolver ou solicitar proposta de desenvolvimento equipe de customizao.
60
61
62
Equivalente estrutura de repetio foreach do C#, normalmente utilizado para iterao sobre uma coleo de itens.
63
Prtica 04: criar Frmula Visual que resultar em uma nova coluna no cadastro da viso do cadastro de funcionrios. A coluna ir indicar se o funcionrio possui valores forados no envelope para a competncia e perodo atuais (do usurio).
64
SELECT COUNT(VALORESFORCADOS) VALORESFORCADOS FROM PFPERFF(NOLOCK) WHERE CAST(CODCOLIGADA AS INTEGER) = :CODCOLIGADA AND CHAPA = :CHAPA AND ANOCOMP = :ANOCOMP AND MESCOMP = :MESCOMP AND CAST(NROPERIODO AS INTEGER) = :PERIODO AND VALORESFORCADOS = 1
65
66
Passo 3) A atividade Para cada Iterao requer uma coleo de itens para ser utilizada, que configurada atravs da propriedade Lista de Items. Ao acrescentar essa nova atividade, j sabemos de antemo que essa lista ser o DataSet de leitura da viso (o evento associado ser o aps ler viso.
67
68
Passo 5) Acrescentar uma atividade sequncia dentro de rmsForEachActivity1. Seu nome bem sugestivo. Essa atividade delimita uma sequencia de execuo para todas as suas atividades filhas. necessria quando queremos executar mais de uma atividade em sequncia.
69
Passo 6)
Acrescentar uma atividade Consulta SQL dentro de rmsForEachActivity1. Muita ateno: esta frmula visual ir executar uma consulta SQL para cada registro da viso. Se o filtro da viso no for muito restritivo, o tempo de carga da mesma poder aumentar bastante.
70
Passo 7) Uma vez acrescentada, ser necessrio configurar a atividade para que a mesma execute a consulta SQL criada anteriormente. Para tal, basta clicar sobre a mesma com o boto direito selecionando em seguida o menu de contexto Selecionar Consulta SQL.
71
Passo 8) Os parmetros de funcionrio devero ser apontados para a propriedade Fields da atividade rmsForEachActivity. essa a atividade que cuida de selecionar os registros um a um em um lao de repetio. Para se preencher a propriedade Fields com o nome da coluna desejada, deve ser utilizada a tecla F2.
72
Passo 9) Os demais parmetros devero ser preenchidos a partir das propriedades da atividade de parmetros do RMLabore (RMSFopParamsProc). Esses parmetros sero sempre os mesmos para todos os funcionrios dentro da execuo da frmula visual.
73
Passo 10)
Verifique se os parmetros foram preenchidos corretamente, conforme a ilustrao abaixo:
74
Passo 11) Agora ser necessrio recuperar o resultado da consulta SQL e grav-lo em uma nova coluna da viso. Para isso, iremos utilizar uma nica atividade: Expresso. Essa a funo bsica da atividade de expresso: vincular propriedades de uma atividade outra atividade ou objeto da formula visual.
75
76
Passo 11) Agora, precisamos definir onde o valor da expresso calculada ser gravado. Sabemos que ser calculado um valor para cada registro. Portanto, podemos declarar uma nova coluna na propriedade Fields da atividade rmsForEachActivity1
77
Basta ento associar a frmula visual criada ao gatilho que desejamos disparar, selecionando tambm a tela de cadastro para a qual a frmula visual foi elaborada. A nova coluna dever ento ser exibida ao se acessar a viso de funcionrios.
78
79
At a verso atual do produto, o recurso de frmulas visuais est vinculado a cadastros e processos, conforme a ilustrao ao lado. Observe que todos os gatilhos disponveis so disparados partir de uma dessas funcionalidades. Boa parte das dificuldades de utilizao podem surgir sobre quais as propriedades de cada atividade deve ser utilizada em cada gatilho.
80
Prtica 05: criar uma frmula visual que possa ser chamada partir de uma viso, como um processo. Este processo dever aumentar em 10% o salrio de todos os funcionrios selecionados na viso cujo salrio seja menor que 1000,00.
81
82
83
Passo 02) Como ser necessrio executar uma srie de atividades em sequencia para atingirmos o objetivo final, precisaremos ento acrescentar dentro da atividade anterior uma atividade de sequncia.
84
Passo 03) Ser necessrio avaliar o valor atual do salrio do funcionrio selecionado. Para isso, ser includa a atividade se/seno, cuja condio de regra declarativa ser setada conforme ilustrao abaixo:
85
Passo 04) Sempre que se desejar alterar um registro, necessrio ler o mesmo atravs da atividade Ler de Registro. Logo, vamos acrescentar essa atividade e configurar a sua propriedade Nome do DataServer para ler do cadastro de funcionrios.
86
Passo 05) Configurar a chave primria da leitura, para que a atividade faa a leitura correta do registro. Observe que a origem do registro lido A ATIVIDADE rmsForEachActivity!
87
Passo 06)
Para realizar o clculo do salrio (salrio atual + 10%), utilizaremos a atividade Expresso, configurando sua frmula conforme ilustrao abaixo.
88
Passo 07) Precisamos ainda indicar que o resultado da frmula ser gravado na coluna SALARIO do registro lido. Faremos isso na propriedade Valor Calculado da frmula. Observe que ele deve ser setado na atividade rmsReadRecordActivity!
89
90
91
92
Identificamos que para se realizar qualquer alterao no banco de dados, necessrio utilizar no mnimo 3 atividades: Ler Registro, expresso e Salvar Registro; Identificamos tambm que necessria a utilizao de uma atividade do tipo para cada iterao sempre que desejarmos executar atividades para uma lista ou coleo de itens/registros.
93
94
95
Passo 01) Detalhes Observe que podemos enxergar a coluna E-Mail tanto na atividade de leitura de registro quanto na atividade para cada iterao. Utilizamos AsStringArray por que a propriedade Destinatrio espera um array de endereos (mesmo que tenha apenas um item).
96
Para se criar uma mensagem do e-mail individualizada, utilizaremos uma atividade Expresso. Basta inclu-la no diagrama conforme ilustrao ao lado, configurando sua expresso conforme imagem abaixo:
97
Passo 04) Precisamos ento direcionar o valor da expresso para a propriedade do corpo da mensagem da atividade de envio de e-mails. Faremos isso na propriedade Valor Calculado da frmula recm adicionada:
98
Passo 05) Na execuo da formula visual, podem ocorrer erros durante sua chamada (EMail no existe, registro nulo, etc...) Podemos ento tratar estes erros em algumas atividades atravs da opo Exibir manipuladores de Fault.
99
100
Comportamento desejado: Quando ocorrer algum erro de qualquer natureza, um E-Mail dever ser enviado para uma pessoa especfica informando o erro
101
102
Passo 07) Precisamos ento preencher a atividade de Envio de E-Mail de forma apropriada para que em caso de erro, uma mensagem seja enviada para um E-Mail j conhecido. TENTE EXECUTAR ESTA TAREFA SEM O AUXLIO DO INSTRUTOR!
103
Realiza a chamada a um processo; Quando vinculada um cadastro, pode ser amarrada ao mesmo atravs da propriedade Tabela de chave Primria. Apenas parmetros simples so exibidos na aba de propriedades
104
Prtica 06: Criar uma frmula visual que ir encadear a execuo de 2 processos na emisso de um cheque
105
Passo 01) Abra a viso de Extrato de Caixa e clique no menu de processos. Observe que o processo de gerar cheque manual e o de Compensar esto ligados viso, ou seja: so executados para os itens selecionados dessa viso.
106
107
Passo 03) Iremos executar duas atividades: uma para gerar o cheque e outra para compens-lo. Vamos ento adicionar 3 atividades ao nosso diagrama: duas para a execuo de processo e uma atividade de Expresso, que ser utilizada para o preenchimento do parmetro do segundo processo.
108
109
110
111
112
113
114
Sem o auxlio do instrutor: crie um novo campo complementar no cadastro de funcionrios, e em seguida, crie uma frmula visual para forar o preenchimento deste campo na edio do registro.
115
Observao: parmetros complexos (listas, arrays e datasets) podem ser preenchidos, desde que o desenvolvedor crie um designer editor para o referido tipo de propriedade. A tendncia a de que o usurio no necessite utilizar as atividades de execuo de processo em um futuro breve, pois as equipes de desenvolvimento podero criar atividades especficas para o mesmo fim.
116
Posso Chegar Criar novas regras de validao de um cadastro com base nele mesmo ou em outros cadastros, desde que no viole a integridade referencial de um registro no banco. Automatizar tarefas encadeando leituras e gravaes, e execuo de processos atravs da Frmula Visual. Criar novas colunas e restries em cadastros j existentes At onde a sua criatividade (e a atividade) permitir...
117
No Posso Chegar A frmula visual no um recurso completo de Frmula Visual. Portanto, no ser possvel criar uma regra de aprovao de requisies (por exemplo) em um nico diagrama. No ser possvel obrigar o cadastro de um registro em uma tabela filha partir do cadastro de item em sua tabela me. No possvel chamar cadastros ou telas de dilogo atravs das frmulas visuais.
118
QUESTES ?
Christiano Coutinho
christiano.coutinho@totvs.com.br
119