Post on 09-Sep-2015
description
ADVPL II - MVC
Totvs Centro de Desenvolvimento So Paulo 2014
ADVPL II - MVC
ndice
I) Framework
II) Informaes tcnicas
III) Contedo Programtico
IV) Exerccios
V) MVC Designer
VI) Reviso
2
Framework
4
ADVPL II - MVC
MVC Nossa inspirao
Model
View Controller
Ao do usurio
Seleciona a View
Muda estado
Consulta estado
Notifica atualizao
O Model representa as informaes do domnio do aplicativo e fornece funes para operar os dados, isto , ele que expe as funcionalidade do aplicativo. O Model tambm responsvel por notificar a View quando os dados forem alterados.
A View, objetivamente, deve renderizar o Model e possibilitar a interao do usurio, bem como consultar ao Model quando este notific-la de que houve alteraes nos dados afim de manter a consistncia entre ambos.
O Controller, o maestro da orquestra, responde s aes dos usurios, possibilita mudanas no Model e seleciona a View correspondente.
Nada to fcil quanto parece, nem to difcil quanto a explicao do manual - Murphy
5
ADVPL II - MVC
Nosso modelo
GD
P
Analista
Business Objects
SchedDef
Regras de negcio Persistncia (FWCommit)
Designer
ViewDef
Toda soluo cria novos problemas - Murphy
ModelDef
ReportDef MenuDef
Fram
ewo
rk
FwFormField Enchoice/GetFixo
FwFormGrid GetDados
Smartclient DHTML Outros front-end
FwFormContainer Toolbar/Painis
FwFormBrowse Browse
6
ADVPL II - MVC
View
Programe um vez, reutilize muitas...
Define como o usurio interage com o modelo de dados. Capturando os dados informados pelo usurio, fornecendo ao BO e apresentando o resultado.
A interface pode ser baseada totalmente ou parcialmente em um meta-dados, permitindo:
Reaproveitamento do cdigo da interface Simplicidade no desenvolvimento de interfaces complexas Agilidade no desenvolvimento Personalizao de interface sem efeito-colateral. O usurio v, aquilo que quer! Mais de uma interface por BO, poderemos ter interfaces diferentes para cada variao de um segmento de mercado como o varejo.
7
ADVPL II - MVC
FWBrowse - View
Possibilitando a reutilizao de cdigo de interface
Classe padro dos Grids
Possui todas as funcionalidades de Grid, como pesquisa, filtros, cores, etc...
No possui dependncia do dicionrio de dados ou ambiente Protheus
FWBrowse
Classe padro do Browse Protheus
Possui os botes laterais de acesso e o rodap (footer) com os principais dados do formulrio
No possui dependncia do dicionrio de dados ou ambiente Protheus
FWFormBrowse
Classe padro do Browse Protheus com uso de dicionrio de dados.
FWMBrowse
Classe padro de Browse de seleo do Protheus
FWMarkBrowse
8
ADVPL II - MVC
FWBrowse - View
Possibilitando a reutilizao de cdigo de interface
FWBrowse FWFormBrowse FWMBrowse
Dicionrio de dados
9
ADVPL II - MVC
FWFormField - View
Possibilitando a reutilizao de cdigo de interface
Desenvolvido para: Substituir todos os componentes de edio de campos Possibilitar sua utilizao em qualquer container de interface Reduzir o tempo de manuteno, em caso de adio de um novo requisito Ser independente do ambiente Microsiga Protheus
Melhorias implementas: Novos padres de agrupamento (Groups e Docks) Novo padro de orientao de ttulos dos campos ( esquerda ou acima) Padro de fontes personalizvel Deficiente visual Melhor aproveitamento da rea de visualizao (no estar limitada a duas colunas) Novos componentes (Radio e Edio de Imagem)
FWFo
rmFi
eld
Modelo1 Modelo 2 Modelo 3
Modelo X Pergunte LookUp (F3)
10
ADVPL II - MVC
FWFormField
FWFormField - View
Possibilitando a reutilizao de cdigo de interface
FWEditPanel
11
ADVPL II - MVC
FWFormGrid - View
Possibilitando a reutilizao de cdigo de interface
Desenvolvido para: Substituir todos os componentes de edio em grid Possibilitar sua utilizao em qualquer container de interface Utilizar como base as caractersticas do componentes FWBrowse Ser independente do ambiente Microsiga Protheus
Melhorias implementas:
Todas as relacionadas no FWBrowse
FWFo
rmG
rid
Modelo2 Modelo 3 Modelo X
12
ADVPL II - MVC
FWFormGrid - View
Possibilitando a reutilizao de cdigo de interface
FWBrowse FWFormGridView
FWFormFieldView
13
ADVPL II - MVC
FWFormContainer - View
Possibilitando a reutilizao de cdigo de interface
Desenvolvido para: Substituir a EnchoiceBar Possibilitar a diviso dos componentes de meta-dado em containers Ser independente do ambiente Microsiga Protheus
Melhorias implementas:
Possibilidade de rearranjo da interface sem necessidade de codificao pelo cliente
FWFo
rmC
on
tain
er
Modelo2
Modelo 3 Modelo X
EnchoiceBar/ToolBar
Modelo1
14
ADVPL II - MVC
FWFormContainer - View
Possibilitando a reutilizao de cdigo de interface
Box
Box
FWFormCursor
15
ADVPL II - MVC
ModelDef
Mais recursos, menos esforo
Define o modelo da estrutura e persistncia de dados, utilizando o modelo padronizado de codificao
Possui as regras de validao definidas pelo analista, independentes dos eventos da interface. Esta independncia permite a reutilizao de cdigo, performance e previsibilidade de comportamento.
Este modelo de codificao garante que todos os programas de edio tenham os recursos, abaixo, sem a necessidade adicional de codificao:
Web Services Rotina automtica Ponto de integrao, comum, entre as GDPs Ambiente interativo para execuo de teste funcional Pontos de entrada padronizados. Relatrio personalizvel Importao/Exportao de dados ( XML/XSD )
Informaes tcnicas
17
ADVPL II - MVC
Diagrama de Classe Main Function ModelDef ViewDef
+GetModel ()
+AddRules()
+GetFormData()
+LoadXmlData()
+SetRelation()
+SetValue()
+GetValue()
+SetOperation()
+VldData()
+CommitData()
+CancelData()
-cId
-bPost
-bPre
-bCommit
-bCancel
-aModelStruct
-aModeRules
FWFormModel
+AddFields()
+AddGrid()
MPFormModel
+SetModel()
+SetOwner()
+SetOwnerView()
+MakeControlBar()
+GetValue()
+getValidMsg()
+AddField()
+AddGrid ()
+Activate ()
+DeActivate()
+setOperation()
+EnableControlBar()
+createVerticalBox()
+createHorizontalBox()
FwFormView
+SetAlias()
+SetLocate()
+Activate()
+AddLegend()
FWMBrowse
+addField()
+RemoveField()
+LoadFields()
+addTrigger()
+LoadTrigger()
+getFields()
-aFields
-aTriggers
FWFormModelStruct
+addField()
+RemoveField()
+LoadFields()
+getFields()
-aFields
-aTriggers
FWFormViewStruct
Contedo Programtico
19
ADVPL II - MVC
Contedo Programtico Browse
Criar Browse (FwMBrowse)
Criar Legendas (AddLegend)
Validao de Ativao do Model (SetVldActive)
Criar Filtro (SetFilterDefault)
Criar Browse com marcao (MarkBrowse)
Modelo de Dados (MODEL)
Criar Estrutura com 1 Tabela (Antigo Modelo 1) (FormField)
Criar Estrutura "Pai/Filho" (Antigo Modelo 3) (FormField e FormGrid)
Criar Estrutura "Pai/Filho/Neto" (Antigo Modelo X)
Ps Validao do Model (Antigo TudoOK)
Ps Validao da Linha (Antigo LinhaOK)
Validar deleo da Linha
Gravar dos Dados Manualmente (FWCommit)
Criar de Campos de Total e/ou Contadores
Criar de Regras de Preenchimento (AddRules)
20
ADVPL II - MVC
Contedo Programtico
Visualizao dos Dados (VIEW)
Criar botes (AddUserButton)
Criar Folder(s) no fonte (CreateFolder)
Usar Outros Objetos no MVC (AddOtherObject)
FORMGRID
GetValue / SetValue / LoadValue
AddLine / DeleteLine / UnDeleteLine
IsDeleted / IsUpdated / IsInserted
GoLine
GetQtdLin
SetNoDeleteLine / SetNoUpdateLine / SetNoInsertLine
Estrutura de Campos (STRUCT)
Selecionar campos para a estrutura
Criar estrutura manualmente
21
ADVPL II - MVC
Contedo Programtico
Geral
Utilizar operao de outra View (FwExecView)
Uso do Model de Uma Rotina (Antiga Rotina Automtica)
Pontos de Entrada
Uso do WebService
Exerccios
23
ADVPL II - MVC
MER Tabelas dos Fontes
24
ADVPL II - MVC
MER Tabelas dos Fontes
25
ADVPL II - MVC
MER Tabelas dos Fontes
26
ADVPL II - MVC
MER Tabelas dos Fontes
27
ADVPL II - MVC
MER Tabelas dos Fontes
28
ADVPL II - MVC
MER Tabelas dos Fontes
29
ADVPL II - MVC
MER Tabelas dos Fontes
30
ADVPL II - MVC
MER Tabelas dos Fontes
31
ADVPL II - MVC
MER Tabelas dos Fontes
32
ADVPL II - MVC
MER Tabelas dos Fontes
33
ADVPL II - MVC
MER Tabelas dos Fontes
34
ADVPL II - MVC
Exerccios Aula 01
Criar a rotina EXERC01, EXERC02 e EXERC03 para efetuar a manuteno (Incluso, Alterao, Excluso, etc. ) das tabelas: TURMAS (ZB1), ALUNOS ( ZB2) e DISCIPLINAS (ZB3). Dica: Estrutura com tabela simples.
Criar a rotina EXERC04 para efetuar a manuteno (Incluso, Alterao, Excluso, etc. ) CABEALHO TURMA/ALUNO (ZB5) e ALUNOS TURMA/ALUNO (ZB6). Dica: Estrutura Pai/Filho.
35
ADVPL II - MVC
Exerccios Aula 02
Alterar a rotina EXERC04 para:
Lanar notas acrescentando a tabela NOTAS TURMA x ALUNO (ZB7).
Verificar se as notas so vlidas ( >= 0 e
36
ADVPL II - MVC
Exerccios Aula 03
Alterar EXERC04 para s deixar alterar turmas com a situao ATIVA
Alterar EXERC04 para exibir mltiplas browses com as tabelas CABEALHO TURMA/ALUNO (ZB5) e ALUNOS TURMA/ALUNO (ZB6) e NOTAS TURMA x ALUNO (ZB7).
37
ADVPL II - MVC
Exerccios Aula 04
Alterar EXERC04 para exibir a informao de quantidade de linhas lanadas.
Criar a rotina EXERC05 utilizando uma Markbrowse na tabela ALUNOS( ZB2). Utilizar o campo ZB2_OK como marcador. Criar uma rotina de processamento que exiba a quantidade de alunos marcados.
MVC Designer
39
ADVPL II - MVC
Num objetivo de facilitar o desenvolvimento, deixando o mais fcil e mais rpido, foi pensado em desenvolver um RAD(Rapid Application Development), que possibilita a construo de rotina MVC, de maneira fcil e intuitiva.
40
ADVPL II - MVC
As principais caractersticas do desenhador j disponvel:
Desenvolvimento do Model;
Leitura do dicionrio de dados para construo de modelos baseados no mesmo.
Desenvolvimento do View;
Renderizao da View em Preview;
Leitura do cdigo fonte;
OutLine;
Folding para funes;
TextOver :
Para o CH do MVCDEF;
Para defines do prprio fonte;
TextOver de String de Traduo;
Deteco de erro em tempo de edio do fonte, sem necessidade de compilao;
AutoComplete das funes e mtodos do MVC;
Leitura de models via FWFormLoad, de outros fontes;
Reviso
42
ADVPL II - MVC
Estrutura de programas da Linha Microsiga Protheus Documentao de cabealhos
Nomenclatura de fonte XXXOYYY , onde:
XXX=Mdulo
O=Operao ( X=Biblioteca do mdulo )
(*) Bibliotecas genricas devem ser aprovadas por Framework.
Formulrios:
FWBrowse / FWMarkbrowse
MenuDef
ModelDef
ViewDef
Validaes
Relatrios:
ReportDef
Rotinas de processamento:
SchedDef
FWGridProcess
ADVPL II - MVC
Questes
Palestrante
Departamento
e-mail@totvs.com.br
43