SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
No exemplo se está mostrando um workflow de uma empresa que vende mercadoria
“por atacado”.
Podem ser observados claramente as tarefas consecutivas seguintes para fazer o
processo de venda.
Gxflow é uma ferramenta integrada ao GeneXus que nos permite e brinda:
1) Modelar os processos da empresa: Diagramar os processos nos da vantagem de poder
mudar a ordem de suas tarefas, tirar ou incluir tarefas novas e/ou mudar as condições de sua
execução, sem tocar o código dos mesmos objetos.
2) Definir segurança: Se definem regras e quais podem executar quais tarefas. Isto evita ter
que incluir código para a segurança nos objetos.
3) Definir calendários, alertas, deadlines
4) Etapas de Modelado e Desenvolvimento de aplicação operacional integradas: Em
GeneXus X é muito prático e simples relacionar os objetos GeneXus desenvolvidos que
implementam a aplicação operacional com os diagramas que modelam os processos.
Veremos como se arrastam os objetos aos diagramas e a prática resultante em ter modelado
os processos integrados com o desenvolvimento da aplicação operacional.
5) Etapa de execução que brinda proatividade: Cada usuário ao executar, de primeira
verá as tarefas que precisam ser feitas (não terá que buscar na aplicação o trabalho
pendente).
6) Auditoria: GXflow permite ver o que está em cada usuário, quanto tempo leva cada tarefa,
etc.
7) Melhor entendimento: para um membro novo da equipe de trabalho, e também para
fazer mostras aos clientes.
A partir do “Folder View” se arrasta um objeto transação ou web panel ao diagrama, se
estará agregando una “tarefa / atividade interativa” ao fluxo, e a mesma já ficará com
dito objeto associado para a etapa de execução. Também dita “tarefa / atividade
interativa” agregada ao diagrama, ficará automaticamente nominada com o mesmo
nome que a transação ou web panel que foi arrastado.
Por outro lado se agregar uma “tarefa/atividade interativa” ao diagrama arrastando o
símbolo correspondente a partir do toolbox disponível para confeccionar diagramas de
processos de negócios, depois será necessário associar a dita tarefa um objeto
transação ou web panel definida na KB. Para isso, simplesmente de ter agregado a
tarefa no diagrama e a tendo selecionada, terá que editar suas propriedades (F4 para
abrir o diálogo de propriedades) e completar a propriedade Web Application com o
objeto que corresponda, assim como a propriedade Name com o nome que se queira
dar a “tarefa/atividade interativa”.
Não serão descritos todos os símbolos disponíveis na toolbox de workflow, mas sim
os símbolos básicos que no início devemos conhecer.
Símbolo: Condição
Quando se está modelando um diagrama de processo e em determinada parte do
fluxo de atividades se necessita avaliar uma condição porque dependendo dela ser
cumprida ou não, siga com certo fluxo de atividades ou outro, por isso que contamos
com o símbolo de condição.
Bastará agregar um símbolo de condição (losango verde) ao diagrama (conectado desde a
atividade prévia) e a partir do losango poderão sair N rotas (que terão a cor verde também).
Cada uma destas rotas verdes que partem de um losango de condição, deverá ter associada
uma condição a ser avaliada (fazendo clique duplo em cada rota verde, um editor é aberto
para ingressar sua condição associada); e em tempo de execução do diagrama, como
veremos mais adiante, quando se chegue a condição na execução do processo, dependendo
de quais avaliações for verdadeira continua com a execução de uma rota e seu fluxo de
atividades segue, ou outro.
Em breve veremos exemplos de definição de condições (sintaxe e possibilidades).
Símbolo: Batch Activity
Permite agregar a um diagrama de processo de negócio, um processo batch (por exemplo um
processo maciço) que será executado no servidor.
É agregado arrastando o símbolo correspondente desde a toolbox, depois será necessário
associar a dito processo batch um objeto procedimento definido na KB. Para isso,
simplesmente depois de ter agregado o símbolo de processo batch no diagrama e tendo
selecionado, terá que editar suas propriedades (F4 para abrir o diálogo de propriedades) e
completar na propriedade Procedure o nome do procedimento que corresponda. Assim
mesmo terá que atribuir um nome em sua propriedade Name.
Se por outro lado a partir do “Folder View” se arrasta um determinado procedimento, estará
sendo agregado ao diagrama como processo batch que executará no servidor; e o mesmo já
ficará com dito procedimento e nome associado para a etapa de execução.
Aqui vemos que temos confeccionado o diagrama de processo que criamos. Temos
agregado tarefas interativas e uma condição.
Vemos que com um duplo clique nas rotas verdes que partam da condição, se abre
o editor de condições para editar cada condição (em caso dela se cumprir uma ou
outra se seguirá com certo fluxo de atividades ou outro).
Em seguida veremos o conceito de “Dados Relevantes” que é fundamental para
compreender qual informação podemos envolver nas condições.
Quando são definidos dados relevantes em um diagrama de processo (definidos automaticamente
ou definidos explicitamente) algo a ser dito é que não são os mesmos atributos definidos na KB.
A sintaxe do nome de um dado relevante definido em um diagrama de processo, é totalmente
análoga a sintaxe do nome de um atributo (e além disso tem um tipo de dados associado)...mas
não é um atributo, mas sim um “dado global” que será conhecido em todo esse diagrama de
processo.
Ou seja que ao ver num diagrama de processo um dado relevante de nome InvoiceId, não
devemos confundir com o atributo definido na KB.
Todavia, para os dados relevantes que são definidos automaticamente com mesmo nome e tipo
que as chaves primárias das transações (como neste exemplo: InvoiceId), tem uma
correspondência automática entre o dado relevante e o atributo PK, no sentido que quando
modelamos o diagrama “o dado relevante é o dado global conhecido nesse contexto” e nos objetos
GeneXus que desenvolvemos as atividades do diagrama “recebemos no parm o atributo PK”
(tratando-se da mesma informação ou no contexto do diagrama, ou no contexto do
desenvolvimento da funcionalidade respectivamente). Em outras palavras tem um mapa
automático entre o dado relevante com o mesmo nome e tipo que um atributo chave primária com
dito atributo chave primária.
A maioria de Dados Relevantes num diagrama de processo se correspondem com as chaves
primárias, também existem casos que surge a necessidade de definir explicitamente outros dados
relevantes. Em seguida veremos exemplos, e também veremos como definir correspondência
entre dados relevantes que definiremos em um diagrama de processo e variáveis que deveremos
definir nos objetos GeneXus associados as atividades do diagrama (veremos que utilizaremos
tipos de dados workflow, propriedades e métodos, para que variáveis “a nível de objeto”
correspondam com dados relevantes definidos “a nível do diagrama de processo”).
Inicialmente explicamos que quando trabalhamos no GeneXus com workflow, realizamos
basicamente os seguintes passos:
• Criar objetos GeneXus
• Criar diagramas de processos de negócios
• Associar objetos GeneXus a diagramas de processos de negócios
• Executar processo
Estamos assim confeccionando um diagrama de processo em nossa KB; tínhamos previamente
definidos alguns objetos GeneXus que arrastamos ao diagrama, e vamos desenvolvendo outros
objetos e incorporá-los ao diagrama também. Mais adiante veremos como atribuir regras as
diferentes atividades do diagrama. Por enquanto a idéia é que contamos na KB com uma
transação “Invoice”, a qual foi arrastada ao diagrama como primeira atividade interativa do
processo e mais adiante definiremos que esta tarefa interativa poderá ser executada pelas
vendedoras da empresa.
Quando uma vendedora ingresse uma venda (através da transação “Invoice”), entrará o cliente, a
mercadoria solicitada, as quantidades, a forma de pagamento solicitada pelo cliente, gravará a
venda com um número interno (não o nro da fatura formal) e aí terminará a primeira atividade.
Depois essa venda deverá ser avaliada por um supervisor (quem vai avaliar de qual cliente se
trata, o montante, a forma de pagamento), e o supervisor deverá aceitar ou recusar a venda. Esta
segunda atividade interativa do processo foi agregada ao diagrama arrastando a web panel
“Authorization”.
Então, a nível do diagrama de processo contamos com o dado relevante InvoiceId (com o mesmo
nome e tipo de dado que o atributo InvoiceId), o qual significa que dito dado se conhece ao longo
de todo o fluxo de atividades. E no que se refere aos objetos GeneXus relacionados ao diagrama,
a web panel “Authorization” implementa a 2da atividade do processo e recebe por parâmetro o
atributo InvoiceId. No form da web panel “Authorization” serão visualizados os dados da fatura, o
limite de crédito e o saldo do limite de crédito do cliente e possibilita ter o histórico das faturas
Vale explicar que quando trabalhamos com workflow em GeneXus, no código dos objetos já não
podemos chamar de um objeto a outro. Por outro lado, nos diagramas de processos que
confeccionamos já ficam implícitas as chamadas entre atividades consecutivas.
Mais adiante veremos que na etapa de execução vamos executar uma aplicação que nos permite
criar instancias dos processo que definimos (por exemplo poderão ser criadas N instancias do
processo de venda definido). Ao criar uma nova instancia de processo, começa a execução da
primeira atividade (será mostrada a trn “Invoice” para isso, e se foram definidas, será validado que
em particular essa atividade seja realizada por uma vendedora, seguirá a segunda atividade (para ser
efetuada por ele rol que corresponda, que em nosso exemplo é um supervisor) e assim
sucessivamente e as atividades da instancia do processo vão sendo finalizadas e executando as
seguintes atividades até concluir dita instancia do processo.
De modo que não codificamos mais calls nos objetos GeneXus, e caso se necessite mudar a ordem
de precedências das atividades em um processo, ou agregar ou tirar atividades, assim como mudar
as condições de execução das atividades, fazemos no diagrama de processo sem tocar o código dos
objetos no diagrama de processo.
Algo que se deve notar é que não definimos calls no código mesmo dos objetos, mas definimos regra
parm nos objetos, se definimos a regra parm nos objetos GeneXus que participam num diagrama de
processo. Isto é porque os objetos são chamados – com outro esquema de trabalho do que
conhecíamos – e precisa passar a informação necessária ... Assim é que são recebidos por
parâmetro os atributos chaves primárias que são análogas aos dados relevantes no diagrama de
processo (e que tem uma correspondência entre esses conceitos).
Agora que isso foi explicado, seguiremos estudando passo a passo a implementação da segunda
atividade do processo que estamos confeccionando. A web panel “Authorization” recebe por
parâmetro o atributo InvoiceId, que mostra em seu form informação para a tomada de decisão da
autorização ou recusa e para isso tem 2 botões “Authorize” e “Refuse” respectivamente.
Se nosso objetivo é carregar uma variável com valor 1 no evento “Authorize” e com valor 0 no evento
“Refuse”, e queremos que o valor atribuído “seja visto” no diagrama de processo, bastará realizar o
seguinte:
1) No tab “Relevant Data” do diagrama de processo, precisa criar um dado relevante (por exemplo de
nome: InvoiceAuthorized) de tipo Numeric.
2) Na web panel "Authorization“ terá que ler o dado relevante e carregá-lo em cada evento da web
panel, assim:
Sendo:
&wfAuthoriz: uma variável definida na web panel, de tipo de dados é: WorkflowApplicationData
&wfProcessInstance: uma variável definida na web panel, de tipo de dados:
Vimos que definimos um dado relevante no diagrama de processo (de nome InvoiceAuthorized) e
depois na web panel “Authorization” se lê o dado relevante na variável &wfAuthoriz de tipo
WorkflowApplicationData. O tipo de dados WorkflowApplicationData significa “dado relevante”.
Também temos definido na web panel uma segunda variável de tipo WorkflowProcessInstance. O
tipo de dados WorkflowProcessInstance significa “instancia de processo”. Ou seja se analisarmos
a primeira linha codificada dos 2 eventos, estamos recuperando na variável &wfAuthoriz (de tipo
“dado relevante”) o valor do dado relevante de nome ‘InvoiceAuthorized’ (entre aspas vai o nome
do dado relevante tal como foi definido no diagrama de processo) pertencente a instancia do
processo que está sendo executado.
Depois na segunda linha codificada em ambos eventos, se está atribuindo a variável
&wfAuthoriz (de tipo “dado relevante”) o valor 0 ou 1 segunda corresponda (utilizando a
propriedade Numeric do tipo de dado WorkflowApplicationData, por estar atribuindo um valor
numérico).
Por último em cada evento se faz return, porque já foi recuperado o valor do dado relevante, se foi
carregado o valor desejado e se deseja culminar com a execução desta atividade.
Desta maneira então lemos e carregamos dados relevantes nos objetos GeneXus associados as
atividades de um diagrama de processo (exceto quando se trata de dados relevantes com mesmo
nome e tipo que as chaves primárias, já que nesses casos são recebidos por parm os atributos
primários diretamente e pronto).
Com esta solução, não temos necessidade de definir Dado Relevante InvoiceAuthorized,
já que temos num atributo a informação se a invoice foi autorizada/recusada… e no fluxo
podem ser inferidos atributos através dos Dados Relevantes correspondentes a chaves
primárias, e avaliar diretamente atributos.
A definição de regras a nível da KB na seção de Preferences.
Depois selecionando cada atividade do diagrama e pressionando F4, na propriedade Roles poderá
atribuir a lista de regras que dita atividade poderá executar.
Se o supervisor autoriza uma venda, a seguinte atividade no diagrama é
“InvoiceToBePrepared”. Esta atividade interativa tem uma web panel associada que
recebe por parâmetro o atributo InvoiceId, mostra a informação da venda autorizada e
tem um botão para que a pessoa do pacote quando terminar de preparar a mercadoria o
pressione. O evento associado a esse botão, vai chamar um procedimento que gravará
num atributo da invoice, um valor indicador (flag) de que o pacote já foi realizado.
A seguinte atividade é interativa e tem uma panel associada que recebe por parâmetro o
atributo InvoiceId, mostra a informação da venda preparada e tem um botão para emitir a
fatura. Quando uma vendedora pressionar este botão, o evento associado ao botão
chama um procedimento que grava na invoice o número de fatura formal e emitirá a
impressão.
A última atividade deste fluxo que estamos explicando, corresponde a distribuição da
mercadoria. Esta atividade também tem uma web panel associada que mostra os dados
da venda e pressionando um botão, uma proc grava que a mesma foi entregue.
As datas/horários que foram efetuadas cada uma das atividades, ficarão registradas
durante a execução do workflow.
Tem 2 modalidades de execução:
• Prototyper
• Full Client
Na seção de Preferences se configura a desejada:
Logicamente a modalidade “Prototyper” está orientada a etapa de prototipação. E a
modalidade “Full-Client” a etapa de produção.
Na etapa de prototipação não nos interessa testar a segurança, motivo pelo qual ao executar a
aplicação na modalidade “Prototyper” inicialmente são limpas todas as instancias de testes
anteriores e é permitido executar todas as atividades sem controlar regras.
Ao executar a aplicação na modalidade “Full-Client”, não se aborta nada inicialmente e se
requer criar usuários (para login) cada um deles com a lista de regras que o corresponda, já
que neste caso a segurança é controlada.

Mais conteúdo relacionado

Destaque

Destaque (16)

7 c gonçalo e denilsa visita de estudo
7 c gonçalo e denilsa visita de estudo7 c gonçalo e denilsa visita de estudo
7 c gonçalo e denilsa visita de estudo
 
QuestoesenemhabilidadesFIS
QuestoesenemhabilidadesFISQuestoesenemhabilidadesFIS
QuestoesenemhabilidadesFIS
 
Concurso enviar
Concurso enviarConcurso enviar
Concurso enviar
 
O+privilé..
O+privilé..O+privilé..
O+privilé..
 
Atributos de deus
Atributos de deusAtributos de deus
Atributos de deus
 
Nomenclaturas
NomenclaturasNomenclaturas
Nomenclaturas
 
Proposta para reforma na EMDUR
Proposta para reforma na EMDURProposta para reforma na EMDUR
Proposta para reforma na EMDUR
 
Meu futuro toque no altar
Meu futuro   toque no altarMeu futuro   toque no altar
Meu futuro toque no altar
 
Q1 2015 Newsletter
Q1 2015 NewsletterQ1 2015 Newsletter
Q1 2015 Newsletter
 
Eliminar La Pobreza
Eliminar La PobrezaEliminar La Pobreza
Eliminar La Pobreza
 
Capm pmo caffe 2015 photo documentation
Capm pmo caffe 2015 photo documentationCapm pmo caffe 2015 photo documentation
Capm pmo caffe 2015 photo documentation
 
2.introdução á história.15.
2.introdução á história.15.2.introdução á história.15.
2.introdução á história.15.
 
O SILÊNCIO DA ALMA
O SILÊNCIO DA ALMA O SILÊNCIO DA ALMA
O SILÊNCIO DA ALMA
 
DeclaraçãO De Amor
DeclaraçãO De AmorDeclaraçãO De Amor
DeclaraçãO De Amor
 
Doc 1 Jonathan Sanchez 1 Am
Doc 1 Jonathan Sanchez 1 AmDoc 1 Jonathan Sanchez 1 Am
Doc 1 Jonathan Sanchez 1 Am
 
Backdreamsslide
BackdreamsslideBackdreamsslide
Backdreamsslide
 

Semelhante a 16 gx flow-curso-gxxbr

introdução ao enterprise architect
introdução ao enterprise architectintrodução ao enterprise architect
introdução ao enterprise architectRanieri de Souza
 
Aula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSI
Aula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSIAula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSI
Aula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSIMaria Alice Jovinski
 
Data Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI AndroidData Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI AndroidVinícius Thiengo
 
Projeto de Máquina de Cálculo de Folha de Pagamento Orientado a Objeto
Projeto de Máquina de Cálculo de Folha de Pagamento Orientado a ObjetoProjeto de Máquina de Cálculo de Folha de Pagamento Orientado a Objeto
Projeto de Máquina de Cálculo de Folha de Pagamento Orientado a ObjetoMarcos Tito de Pardo Marques
 
ApresentaçãO Metodologia
ApresentaçãO MetodologiaApresentaçãO Metodologia
ApresentaçãO MetodologiaMarcos Yonamine
 
Excel Basic com VBA - Macros
Excel Basic com VBA - MacrosExcel Basic com VBA - Macros
Excel Basic com VBA - MacrosJoao Sousa
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphihildebertomelo
 
Es 02 desenvolvimento de software dirigido por casos de uso - parte i
Es 02   desenvolvimento de software dirigido por casos de uso - parte iEs 02   desenvolvimento de software dirigido por casos de uso - parte i
Es 02 desenvolvimento de software dirigido por casos de uso - parte iRodrigo Gomes da Silva
 
Arquitetura orientada a serviço
Arquitetura orientada a serviçoArquitetura orientada a serviço
Arquitetura orientada a serviçocadeirudo
 

Semelhante a 16 gx flow-curso-gxxbr (20)

14 patterns-curso gxxbr
14 patterns-curso gxxbr14 patterns-curso gxxbr
14 patterns-curso gxxbr
 
12 db atualizacao-curso-gxxbr
12 db atualizacao-curso-gxxbr12 db atualizacao-curso-gxxbr
12 db atualizacao-curso-gxxbr
 
11 data providers-cursogxxbr
11 data providers-cursogxxbr11 data providers-cursogxxbr
11 data providers-cursogxxbr
 
introdução ao enterprise architect
introdução ao enterprise architectintrodução ao enterprise architect
introdução ao enterprise architect
 
Aula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSI
Aula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSIAula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSI
Aula de revisão 2º bimestre - Análise Projeto e Programação para Web - TSI
 
Data Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI AndroidData Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI Android
 
Projeto de Máquina de Cálculo de Folha de Pagamento Orientado a Objeto
Projeto de Máquina de Cálculo de Folha de Pagamento Orientado a ObjetoProjeto de Máquina de Cálculo de Folha de Pagamento Orientado a Objeto
Projeto de Máquina de Cálculo de Folha de Pagamento Orientado a Objeto
 
Aula 6 14042011 sii
Aula 6   14042011 siiAula 6   14042011 sii
Aula 6 14042011 sii
 
Apostila visual basic
Apostila visual basicApostila visual basic
Apostila visual basic
 
Aubr 45 apostila
Aubr 45 apostilaAubr 45 apostila
Aubr 45 apostila
 
CURSO JAVA 02
CURSO JAVA 02CURSO JAVA 02
CURSO JAVA 02
 
Relatório
RelatórioRelatório
Relatório
 
Apostila de vb
Apostila de vbApostila de vb
Apostila de vb
 
ApresentaçãO Metodologia
ApresentaçãO MetodologiaApresentaçãO Metodologia
ApresentaçãO Metodologia
 
Excel Basic com VBA - Macros
Excel Basic com VBA - MacrosExcel Basic com VBA - Macros
Excel Basic com VBA - Macros
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
Es 02 desenvolvimento de software dirigido por casos de uso - parte i
Es 02   desenvolvimento de software dirigido por casos de uso - parte iEs 02   desenvolvimento de software dirigido por casos de uso - parte i
Es 02 desenvolvimento de software dirigido por casos de uso - parte i
 
Bpmn aula unb
Bpmn aula unbBpmn aula unb
Bpmn aula unb
 
Arquitetura orientada a serviço
Arquitetura orientada a serviçoArquitetura orientada a serviço
Arquitetura orientada a serviço
 
03 formulas globais-cursogxxbr
03 formulas globais-cursogxxbr03 formulas globais-cursogxxbr
03 formulas globais-cursogxxbr
 

Mais de Cristiano Rafael Steffens

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCristiano Rafael Steffens
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...Cristiano Rafael Steffens
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESCristiano Rafael Steffens
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Cristiano Rafael Steffens
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...Cristiano Rafael Steffens
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...Cristiano Rafael Steffens
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedCristiano Rafael Steffens
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionCristiano Rafael Steffens
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationCristiano Rafael Steffens
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Cristiano Rafael Steffens
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Cristiano Rafael Steffens
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Cristiano Rafael Steffens
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Cristiano Rafael Steffens
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionCristiano Rafael Steffens
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Cristiano Rafael Steffens
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoCristiano Rafael Steffens
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Cristiano Rafael Steffens
 

Mais de Cristiano Rafael Steffens (20)

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automated
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
 
Php Math and arrays
Php Math and arraysPhp Math and arrays
Php Math and arrays
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section Presentation
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)
 
Introdução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplosIntrodução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplos
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em Vídeo
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
 
G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1
 

16 gx flow-curso-gxxbr

  • 1.
  • 2. No exemplo se está mostrando um workflow de uma empresa que vende mercadoria “por atacado”. Podem ser observados claramente as tarefas consecutivas seguintes para fazer o processo de venda.
  • 3.
  • 4. Gxflow é uma ferramenta integrada ao GeneXus que nos permite e brinda: 1) Modelar os processos da empresa: Diagramar os processos nos da vantagem de poder mudar a ordem de suas tarefas, tirar ou incluir tarefas novas e/ou mudar as condições de sua execução, sem tocar o código dos mesmos objetos. 2) Definir segurança: Se definem regras e quais podem executar quais tarefas. Isto evita ter que incluir código para a segurança nos objetos. 3) Definir calendários, alertas, deadlines 4) Etapas de Modelado e Desenvolvimento de aplicação operacional integradas: Em GeneXus X é muito prático e simples relacionar os objetos GeneXus desenvolvidos que implementam a aplicação operacional com os diagramas que modelam os processos. Veremos como se arrastam os objetos aos diagramas e a prática resultante em ter modelado os processos integrados com o desenvolvimento da aplicação operacional. 5) Etapa de execução que brinda proatividade: Cada usuário ao executar, de primeira verá as tarefas que precisam ser feitas (não terá que buscar na aplicação o trabalho pendente). 6) Auditoria: GXflow permite ver o que está em cada usuário, quanto tempo leva cada tarefa, etc. 7) Melhor entendimento: para um membro novo da equipe de trabalho, e também para fazer mostras aos clientes.
  • 5.
  • 6.
  • 7.
  • 8. A partir do “Folder View” se arrasta um objeto transação ou web panel ao diagrama, se estará agregando una “tarefa / atividade interativa” ao fluxo, e a mesma já ficará com dito objeto associado para a etapa de execução. Também dita “tarefa / atividade interativa” agregada ao diagrama, ficará automaticamente nominada com o mesmo nome que a transação ou web panel que foi arrastado. Por outro lado se agregar uma “tarefa/atividade interativa” ao diagrama arrastando o símbolo correspondente a partir do toolbox disponível para confeccionar diagramas de processos de negócios, depois será necessário associar a dita tarefa um objeto transação ou web panel definida na KB. Para isso, simplesmente de ter agregado a tarefa no diagrama e a tendo selecionada, terá que editar suas propriedades (F4 para abrir o diálogo de propriedades) e completar a propriedade Web Application com o objeto que corresponda, assim como a propriedade Name com o nome que se queira dar a “tarefa/atividade interativa”.
  • 9. Não serão descritos todos os símbolos disponíveis na toolbox de workflow, mas sim os símbolos básicos que no início devemos conhecer. Símbolo: Condição Quando se está modelando um diagrama de processo e em determinada parte do fluxo de atividades se necessita avaliar uma condição porque dependendo dela ser cumprida ou não, siga com certo fluxo de atividades ou outro, por isso que contamos com o símbolo de condição.
  • 10. Bastará agregar um símbolo de condição (losango verde) ao diagrama (conectado desde a atividade prévia) e a partir do losango poderão sair N rotas (que terão a cor verde também). Cada uma destas rotas verdes que partem de um losango de condição, deverá ter associada uma condição a ser avaliada (fazendo clique duplo em cada rota verde, um editor é aberto para ingressar sua condição associada); e em tempo de execução do diagrama, como veremos mais adiante, quando se chegue a condição na execução do processo, dependendo de quais avaliações for verdadeira continua com a execução de uma rota e seu fluxo de atividades segue, ou outro. Em breve veremos exemplos de definição de condições (sintaxe e possibilidades). Símbolo: Batch Activity Permite agregar a um diagrama de processo de negócio, um processo batch (por exemplo um processo maciço) que será executado no servidor. É agregado arrastando o símbolo correspondente desde a toolbox, depois será necessário associar a dito processo batch um objeto procedimento definido na KB. Para isso, simplesmente depois de ter agregado o símbolo de processo batch no diagrama e tendo selecionado, terá que editar suas propriedades (F4 para abrir o diálogo de propriedades) e completar na propriedade Procedure o nome do procedimento que corresponda. Assim mesmo terá que atribuir um nome em sua propriedade Name. Se por outro lado a partir do “Folder View” se arrasta um determinado procedimento, estará sendo agregado ao diagrama como processo batch que executará no servidor; e o mesmo já ficará com dito procedimento e nome associado para a etapa de execução.
  • 11. Aqui vemos que temos confeccionado o diagrama de processo que criamos. Temos agregado tarefas interativas e uma condição. Vemos que com um duplo clique nas rotas verdes que partam da condição, se abre o editor de condições para editar cada condição (em caso dela se cumprir uma ou outra se seguirá com certo fluxo de atividades ou outro). Em seguida veremos o conceito de “Dados Relevantes” que é fundamental para compreender qual informação podemos envolver nas condições.
  • 12.
  • 13. Quando são definidos dados relevantes em um diagrama de processo (definidos automaticamente ou definidos explicitamente) algo a ser dito é que não são os mesmos atributos definidos na KB. A sintaxe do nome de um dado relevante definido em um diagrama de processo, é totalmente análoga a sintaxe do nome de um atributo (e além disso tem um tipo de dados associado)...mas não é um atributo, mas sim um “dado global” que será conhecido em todo esse diagrama de processo. Ou seja que ao ver num diagrama de processo um dado relevante de nome InvoiceId, não devemos confundir com o atributo definido na KB. Todavia, para os dados relevantes que são definidos automaticamente com mesmo nome e tipo que as chaves primárias das transações (como neste exemplo: InvoiceId), tem uma correspondência automática entre o dado relevante e o atributo PK, no sentido que quando modelamos o diagrama “o dado relevante é o dado global conhecido nesse contexto” e nos objetos GeneXus que desenvolvemos as atividades do diagrama “recebemos no parm o atributo PK” (tratando-se da mesma informação ou no contexto do diagrama, ou no contexto do desenvolvimento da funcionalidade respectivamente). Em outras palavras tem um mapa automático entre o dado relevante com o mesmo nome e tipo que um atributo chave primária com dito atributo chave primária. A maioria de Dados Relevantes num diagrama de processo se correspondem com as chaves primárias, também existem casos que surge a necessidade de definir explicitamente outros dados relevantes. Em seguida veremos exemplos, e também veremos como definir correspondência entre dados relevantes que definiremos em um diagrama de processo e variáveis que deveremos definir nos objetos GeneXus associados as atividades do diagrama (veremos que utilizaremos tipos de dados workflow, propriedades e métodos, para que variáveis “a nível de objeto” correspondam com dados relevantes definidos “a nível do diagrama de processo”).
  • 14. Inicialmente explicamos que quando trabalhamos no GeneXus com workflow, realizamos basicamente os seguintes passos: • Criar objetos GeneXus • Criar diagramas de processos de negócios • Associar objetos GeneXus a diagramas de processos de negócios • Executar processo Estamos assim confeccionando um diagrama de processo em nossa KB; tínhamos previamente definidos alguns objetos GeneXus que arrastamos ao diagrama, e vamos desenvolvendo outros objetos e incorporá-los ao diagrama também. Mais adiante veremos como atribuir regras as diferentes atividades do diagrama. Por enquanto a idéia é que contamos na KB com uma transação “Invoice”, a qual foi arrastada ao diagrama como primeira atividade interativa do processo e mais adiante definiremos que esta tarefa interativa poderá ser executada pelas vendedoras da empresa. Quando uma vendedora ingresse uma venda (através da transação “Invoice”), entrará o cliente, a mercadoria solicitada, as quantidades, a forma de pagamento solicitada pelo cliente, gravará a venda com um número interno (não o nro da fatura formal) e aí terminará a primeira atividade. Depois essa venda deverá ser avaliada por um supervisor (quem vai avaliar de qual cliente se trata, o montante, a forma de pagamento), e o supervisor deverá aceitar ou recusar a venda. Esta segunda atividade interativa do processo foi agregada ao diagrama arrastando a web panel “Authorization”. Então, a nível do diagrama de processo contamos com o dado relevante InvoiceId (com o mesmo nome e tipo de dado que o atributo InvoiceId), o qual significa que dito dado se conhece ao longo de todo o fluxo de atividades. E no que se refere aos objetos GeneXus relacionados ao diagrama, a web panel “Authorization” implementa a 2da atividade do processo e recebe por parâmetro o atributo InvoiceId. No form da web panel “Authorization” serão visualizados os dados da fatura, o limite de crédito e o saldo do limite de crédito do cliente e possibilita ter o histórico das faturas
  • 15. Vale explicar que quando trabalhamos com workflow em GeneXus, no código dos objetos já não podemos chamar de um objeto a outro. Por outro lado, nos diagramas de processos que confeccionamos já ficam implícitas as chamadas entre atividades consecutivas. Mais adiante veremos que na etapa de execução vamos executar uma aplicação que nos permite criar instancias dos processo que definimos (por exemplo poderão ser criadas N instancias do processo de venda definido). Ao criar uma nova instancia de processo, começa a execução da primeira atividade (será mostrada a trn “Invoice” para isso, e se foram definidas, será validado que em particular essa atividade seja realizada por uma vendedora, seguirá a segunda atividade (para ser efetuada por ele rol que corresponda, que em nosso exemplo é um supervisor) e assim sucessivamente e as atividades da instancia do processo vão sendo finalizadas e executando as seguintes atividades até concluir dita instancia do processo. De modo que não codificamos mais calls nos objetos GeneXus, e caso se necessite mudar a ordem de precedências das atividades em um processo, ou agregar ou tirar atividades, assim como mudar as condições de execução das atividades, fazemos no diagrama de processo sem tocar o código dos objetos no diagrama de processo. Algo que se deve notar é que não definimos calls no código mesmo dos objetos, mas definimos regra parm nos objetos, se definimos a regra parm nos objetos GeneXus que participam num diagrama de processo. Isto é porque os objetos são chamados – com outro esquema de trabalho do que conhecíamos – e precisa passar a informação necessária ... Assim é que são recebidos por parâmetro os atributos chaves primárias que são análogas aos dados relevantes no diagrama de processo (e que tem uma correspondência entre esses conceitos). Agora que isso foi explicado, seguiremos estudando passo a passo a implementação da segunda atividade do processo que estamos confeccionando. A web panel “Authorization” recebe por parâmetro o atributo InvoiceId, que mostra em seu form informação para a tomada de decisão da autorização ou recusa e para isso tem 2 botões “Authorize” e “Refuse” respectivamente. Se nosso objetivo é carregar uma variável com valor 1 no evento “Authorize” e com valor 0 no evento “Refuse”, e queremos que o valor atribuído “seja visto” no diagrama de processo, bastará realizar o seguinte: 1) No tab “Relevant Data” do diagrama de processo, precisa criar um dado relevante (por exemplo de nome: InvoiceAuthorized) de tipo Numeric. 2) Na web panel "Authorization“ terá que ler o dado relevante e carregá-lo em cada evento da web panel, assim: Sendo: &wfAuthoriz: uma variável definida na web panel, de tipo de dados é: WorkflowApplicationData &wfProcessInstance: uma variável definida na web panel, de tipo de dados:
  • 16. Vimos que definimos um dado relevante no diagrama de processo (de nome InvoiceAuthorized) e depois na web panel “Authorization” se lê o dado relevante na variável &wfAuthoriz de tipo WorkflowApplicationData. O tipo de dados WorkflowApplicationData significa “dado relevante”. Também temos definido na web panel uma segunda variável de tipo WorkflowProcessInstance. O tipo de dados WorkflowProcessInstance significa “instancia de processo”. Ou seja se analisarmos a primeira linha codificada dos 2 eventos, estamos recuperando na variável &wfAuthoriz (de tipo “dado relevante”) o valor do dado relevante de nome ‘InvoiceAuthorized’ (entre aspas vai o nome do dado relevante tal como foi definido no diagrama de processo) pertencente a instancia do processo que está sendo executado. Depois na segunda linha codificada em ambos eventos, se está atribuindo a variável &wfAuthoriz (de tipo “dado relevante”) o valor 0 ou 1 segunda corresponda (utilizando a propriedade Numeric do tipo de dado WorkflowApplicationData, por estar atribuindo um valor numérico). Por último em cada evento se faz return, porque já foi recuperado o valor do dado relevante, se foi carregado o valor desejado e se deseja culminar com a execução desta atividade. Desta maneira então lemos e carregamos dados relevantes nos objetos GeneXus associados as atividades de um diagrama de processo (exceto quando se trata de dados relevantes com mesmo nome e tipo que as chaves primárias, já que nesses casos são recebidos por parm os atributos primários diretamente e pronto).
  • 17.
  • 18. Com esta solução, não temos necessidade de definir Dado Relevante InvoiceAuthorized, já que temos num atributo a informação se a invoice foi autorizada/recusada… e no fluxo podem ser inferidos atributos através dos Dados Relevantes correspondentes a chaves primárias, e avaliar diretamente atributos.
  • 19. A definição de regras a nível da KB na seção de Preferences. Depois selecionando cada atividade do diagrama e pressionando F4, na propriedade Roles poderá atribuir a lista de regras que dita atividade poderá executar.
  • 20. Se o supervisor autoriza uma venda, a seguinte atividade no diagrama é “InvoiceToBePrepared”. Esta atividade interativa tem uma web panel associada que recebe por parâmetro o atributo InvoiceId, mostra a informação da venda autorizada e tem um botão para que a pessoa do pacote quando terminar de preparar a mercadoria o pressione. O evento associado a esse botão, vai chamar um procedimento que gravará num atributo da invoice, um valor indicador (flag) de que o pacote já foi realizado. A seguinte atividade é interativa e tem uma panel associada que recebe por parâmetro o atributo InvoiceId, mostra a informação da venda preparada e tem um botão para emitir a fatura. Quando uma vendedora pressionar este botão, o evento associado ao botão chama um procedimento que grava na invoice o número de fatura formal e emitirá a impressão. A última atividade deste fluxo que estamos explicando, corresponde a distribuição da mercadoria. Esta atividade também tem uma web panel associada que mostra os dados da venda e pressionando um botão, uma proc grava que a mesma foi entregue. As datas/horários que foram efetuadas cada uma das atividades, ficarão registradas durante a execução do workflow.
  • 21.
  • 22. Tem 2 modalidades de execução: • Prototyper • Full Client Na seção de Preferences se configura a desejada: Logicamente a modalidade “Prototyper” está orientada a etapa de prototipação. E a modalidade “Full-Client” a etapa de produção. Na etapa de prototipação não nos interessa testar a segurança, motivo pelo qual ao executar a aplicação na modalidade “Prototyper” inicialmente são limpas todas as instancias de testes anteriores e é permitido executar todas as atividades sem controlar regras. Ao executar a aplicação na modalidade “Full-Client”, não se aborta nada inicialmente e se requer criar usuários (para login) cada um deles com a lista de regras que o corresponda, já que neste caso a segurança é controlada.