Você está na página 1de 43

Totvs Centro de Desenvolvimento So Paulo 2014

ADVPL II - MVC

ADVPL II - MVC

ndice
I)
II)
III)
IV)
V)
VI)

Framework
Informaes tcnicas
Contedo Programtico
Exerccios
MVC Designer
Reviso

Framework

ADVPL II - MVC

MVC Nossa inspirao


Model
Notifica
atualizao

Consulta
estado

Muda
estado
Seleciona a View

View

Controller
Ao do usurio

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
4

ADVPL II - MVC

Framework

Nosso modelo

Smartclient
FwFormBrowse
Browse

DHTML
FwFormField
Enchoice/GetFixo

Outros front-end
FwFormGrid
GetDados

FwFormContainer
Toolbar/Painis

GDP

Business Objects
ViewDef

Designer

ModelDef

Regras de negcio

Persistncia
(FWCommit)

SchedDef

ReportDef

MenuDef

Analista
Toda soluo cria novos problemas - Murphy
5

ADVPL II - MVC

View
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 metadados, 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.

Programe um vez, reutilize muitas...


6

ADVPL II - MVC

FWBrowse - View
FWBrowse
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
FWFormBrowse
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
FWMBrowse
Classe padro do Browse Protheus com uso de dicionrio de dados.
FWMarkBrowse
Classe padro de Browse de seleo do Protheus
Possibilitando a reutilizao de cdigo de interface
7

ADVPL II - MVC

FWBrowse - View

FWMBrowse
FWFormBrowse
FWBrowse
Dicionrio de dados

Possibilitando a reutilizao de cdigo de interface


8

ADVPL II - MVC

FWFormField

FWFormField - View
Modelo1

Modelo 2

Modelo 3

Pergunte

LookUp (F3)

Modelo X

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)
Possibilitando a reutilizao de cdigo de interface
9

ADVPL II - MVC

FWFormField - View

FWFormField
FWEditPanel

Possibilitando a reutilizao de cdigo de interface


10

ADVPL II - MVC

FWFormGrid

FWFormGrid - View
Modelo2

Modelo 3

Modelo X

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

Possibilitando a reutilizao de cdigo de interface


11

ADVPL II - MVC

FWFormGrid - View

FWFormFieldView

FWFormGridView
FWBrowse

Possibilitando a reutilizao de cdigo de interface


12

ADVPL II - MVC

FWFormContainer

FWFormContainer - View
Modelo1

Modelo2

Modelo 3

Modelo X
EnchoiceBar/ToolBar

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

Possibilitando a reutilizao de cdigo de interface


13

ADVPL II - MVC

FWFormContainer - View

Box

Box
FWFormCursor

Possibilitando a reutilizao de cdigo de interface


14

ADVPL II - MVC

ModelDef
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 )
Mais recursos, menos esforo
15

Informaes tcnicas

ADVPL II - MVC

Diagrama de Classe
Main Function

ModelDef
FWFormModel

FWMBrowse
+SetAlias()
+SetLocate()
+Activate()
+AddLegend()

FWFormModelStruct
-aFields
-aTriggers
+addField()
+RemoveField()
+LoadFields()
+addTrigger()
+LoadTrigger()
+getFields()

-cId
-bPost
-bPre
-bCommit
-bCancel
-aModelStruct
-aModeRules
+GetModel ()
+AddRules()
+GetFormData()
+LoadXmlData()
+SetRelation()
+SetValue()
+GetValue()
+SetOperation()
+VldData()
+CommitData()
+CancelData()

ViewDef
FwFormView
+SetModel()
+SetOwner()
+SetOwnerView()
+MakeControlBar()
+GetValue()
+getValidMsg()
+AddField()
+AddGrid ()
+Activate ()
+DeActivate()
+setOperation()
+EnableControlBar()
+createVerticalBox()
+createHorizontalBox()

FWFormViewStruct

MPFormModel
+AddFields()
+AddGrid()

-aFields
-aTriggers
+addField()
+RemoveField()
+LoadFields()
+getFields()

17

Contedo Programtico

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)
19

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

20

ADVPL II - MVC

Contedo Programtico
Geral

Utilizar operao de outra View


Uso do Model de Uma Rotina
Pontos de Entrada
Uso do WebService

(FwExecView)
(Antiga Rotina Automtica)

21

Exerccios

ADVPL II - MVC

MER Tabelas dos Fontes

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

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.

34

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 <= 10 ) por validao de linha
da fwformgrid
No permitir que uma nota seja alterada aps a incluso

35

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).

36

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.

37

MVC Designer

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.

39

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;

40

Reviso

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

42

ADVPL II - MVC

Questes
Palestrante
Departamento
e-mail@totvs.com.br

43

Você também pode gostar