Anda di halaman 1dari 58

Customizao Datasul 11

Ricardo Menna / Maro - 2011

Customizao Datasul 11

NDICE
I) Reviso
II) EPC
III) Metadados

Reviso

O que EPC ?
Uma EPC (External Program
Call)

um plug-in usado

para adicionar funes a


outros programas maiores.
As

tcnicas

podem

ser

tambm

usadas

para

desenvolvimento de novas
funcionalidades.
Customizao : mudar uma
funcionalidade ou ento
adicionar telas

Reviso

O que EPC ?

Cadastrar igual ao Progress

Possui tcnica para Flex

Semelhante ao Progress

Nada muda para telas 4GL

Meta-dados
substituir EPC

Reviso

Evoluo Produto Datasul


EMS 2 Financeiro

Foundation

EMS 5 Financeiro

Foundation

EMS 2

Foundation

Customizao em Progress (EPC)


5

Reviso

Evoluo Produto Datasul


EMS 2 Financeiro

EMS 5 Financeiro

Foundation

EMS 2

Web Server + App Server + Connection for Web


Customizao em Progress (EPC)
6

Reviso

Evoluo Produto Datasul


DATASUL 11

EMS 5 Financeiro
Foundation

EMS 2

Web Server + App Server + Connection for Web

Customizao em Progress (EPC)

Reviso

Evoluo Produto Datasul


DATASUL 11
RIA
EMS 5 Financeiro
Foundation

EMS 2

RIA

Web Server + App Server + Connection for Web


Customizao em Progress (EPC)
Customizao em Flex (EPC) e Regra de Negcio em Progress (EPC)

Reviso

Evoluo Produto Datasul


DATASUL 11.5
RIA

Meta-dados

EMS 5
Financeiro
Foundation

EMS 2

RIA

Meta-dados

Web Server + App Server + Connection for Web


Customizao em Progress (EPC)
Customizao em Flex (EPC) e Regra de Negcio em Progress
(EPC)
Customizao em Meta-dados e Regra de Negcio em Progress

Reviso

Evoluo Produto Datasul


DATASUL ??

Meta-dados
Foundation

Meta-dados

Web Server + App Server + Connection for Web

Customizao em Meta-dados e Regra de Negcio em Progress

10

Advertncia
A TOTVS recomenda sempre o uso de
boas prticas e das tcnicas por ela
divulgadas para o desenvolvimento de
customizaes.
No
caso
de
desenvolvimentos em linguagens cuja
propriedade
intelectual
pertence
a
terceiros, com o caso do Flex, a TOTVS
no pode garantir que as migraes
para releases mais novas de seus
produtos no precisem de uma reviso e
eventuais
retrabalhos
nestes
desenvolvimentos
especficos
e
customizaes para seus clientes, sendo
que
tais
retrabalhos
so
de
responsabilidade do cliente.

EPC

Definio
Pontos de customizao do produto,
previamente definidos pelos desenvolvedores
das franquias
Podem ser adicionadas lgicas de negcio
exclusivas do cliente
UPC (User Program Call ) - EPCs customizadas
pelo cliente

12

EPC
Como Funciona a EPC em Flex?

13

EPC
Como Funciona a EPC em Flex?

View
Chama do Confirm()
Controller
[EPC(name=save...)]
public function doConfirm():void {
...
}

14

EPC

Comunicao Flex x Progress

Programa
Flex

Remote
Object
DataService
s

Programa
Java

App Server

Programa
Progress

Proxy
Gen

15

EPC
Arquitetura lado Flex
Todo programa utiliza MVC (Model-View-Controller)
Dispe de uma biblioteca com o seguinte nome:

<Nome da funcionalidade> + -upc-swc


Esta biblioteca sai vazia da TOTVS, e deve ser sobrescrita
pelo programa EPC criado pela FDIS/Cliente

16

EPC
Estrutura de Diretrios

17

EPC

Identificando Pontos de Customizao


Como descobrir os eventos pr-definidos

1. Na tela em que se deseja customizar, pressionar


teclas
Ctrlas+
Shift

+ F5

2. Aparecer uma tela conforme imagem abaixo

18

EPC

Definindo uma UPC para um Ponto de


Customizao
Todo o evento, deve possuir uma classe chamada

UPC + <Before ou After> + nome do


evento
quando necessrio o tratamento do evento

19

Pontos de Customizao
http://sdk.datasul.com.br/confluence/display/SDKV1/Eve
ntos+de+EPC

20

Customizao Flex
A classe de tratamento de customizao dever:
Estender da classe EPCHandler
Ter o nome UPC + <Before ou After> + <Nome do
Evento a ser tratado>

Deve ter um mtodo sobrescrito, chamado


handleRequest(), com a lgica para adicionar os
componentes a tela
Aps isso, chamar o mtodo next(), para que o
processamento da interface da tela continue no seu
fluxo normal

Para cada evento, devemos ter um EPCHandler


21

EPC

Classe EPCHandler
Pacote:
com.datasul.framework.ui.epc.EPCHandler
Assinatura:
EPCHandler (epc:Object=null, name:String=null, func:Function=null)

Exemplo:
package com.datasul.epc.myepc {
import com.datasul.framework.ui.epc.EPCHandler;
public class UPCBeforeLoad extends EPCHandler {
public function UPCBeforeLoad(epc:Object=null, name:String=null,
func:Function=null)
{
// chama o construtor do EPCHandler
super(epc, name, func);
}
}
}
22

EPC

Variveis Disponveis
Durante a execuo so disponibilizadas as seguintes
variveis:
Varivel

Descrio

Tipo

epcClassName

Nome da classe que est sendo customizada

String

epcName

Nome do evento

String

epcContainer

Instncia da View que est sendo customizada

DisplayObjec
t

epcPackage

Pacote que est sendo customizado

String

epcModel

Instncia do model

Object

epcItems

Relao de objetos da tela que devem ser


enviados e retornados do Progress

Map

epcController

Instncia do controller

Object

epcMethodNa
me

Nome do mtodo que disparou a EPC

String

epcFuncParam
s

Lista com todos os parmetros passados para o


mtodo que disparou a EPC

Array
23

EPC

Mtodo handleRequest do EPCHandler


Mtodo da EPC que deve ser sobrescrito.
Assinatura:
public override function handleRequest():void {
Exemplo:
public override function handleRequest():void {
...
// chama a lgica de negocio para customizao
this.initializeText();
...
// Dar continuidade a execuo do processo de EPC
this.next();
}

A chamada deste mtodo obrigatrio


24

EPC

Mtodo getEPCObjectById do EPCHandler


Retorna um objeto da tela (DisplayObject)
referente a um ID previamente informado
Assinatura:
getEPCObjectById(name:String):DisplayObject
Exemplo:
Alert.show( Button(this.getEPCObjectById(myButton)).label );

25

EPC

Mtodo getModelAttributes do
EPCHandler
Retorna uma coleo com os atributos do MODEL,
quando este for especificado.
Assinatura:
getModelAttributes():ArrayCollection
Exemplo:
var lin:String = "";
for each(var st:String in getModelAttributes()){
lin+= st + \n";
}
Alert.show("Atributos do Model = "+ lin);

26

EPC

Mtodo sendEPC do EPCHandler


Envia o contedo da epcItems (tt-epc) para o
lado Progress e dispara o mtodo epcNotify() no
retorno do mesmo
Assinatura:
sendEPC():void
Exemplo:
this.sendEPC();

27

EPC

Mtodo epcNotify do EPCHandler


Este mtodo deve ser sobrescrito pelo customizador, onde a
EPC ser notificada aps a execuo do sendEPC()
Este mtodo ser executado toda vez que for feito um
sendEPC() e estar informando que houve algum retorno do
Progress com possveis alteraes do contedo da epcItems
(tt-epc)
Assinatura:

epcNotify():void
Exemplo:
public override function epcNotify():void{
this.epcContainer.myText.text =
this.epcItems.getValue("myText") as String;
}
28

EPC

Transportando dados do Flex para


Progress

Deve ser utilizada a varivel epcItems o para


adicionar dados de negcio do lado Flex para o
lado Progress.
Assinatura:
epcItems.put(name:String, value:String=""):void

29

EPC

Exemplo de uso da epcItems


/**
* Metodo obrigatorio a ser sobrescrito
*/
public override function handleRequest():void {
// Define algumas variaveis de negocio para a EPC e que serao
// enviadas para o Progress atravs da TTEPC
this.epcItems.put("Percentual", "15");
this.epcItems.put("Codigo_Fornecedor", "8473");
this.epcItems.put("Saldo", "0.00");
this.epcItems.put("Estabelecimento", "ELT");
// envia as informaes para o Progress atravs da TTEPC
this.sendEPC();
}
/**
* Metodo executado no retorno do Progress
*/
public override function epcNotify():void {
// recebe a notificao que terminou a execuo no progress
// e que os dados esto disponveis dentro do epcItems
Alert.show("Retornei do progress com o percentual = "
+ this.epcItems.getValue("Percentual"));
this.next();
}

30

EPC

Customizao lado Progress


Criar, no propath do appServer Progress, um
programa com o seguinte nome: <nome da
funcionalidade> + -upc.p.
Este programa, dever possuir 3 parmetros
pEvent o Evento que est sendo executado, como
parmetro de entrada
Tt-epc temp-table com dados a serem
enviados/recebidos, utilizando a include {include/iepc200.i1 ttEpc}
RowErrors temp-table de retorno de erros para o
flex.

Este programa deve ser cadastrado no cadastro de

31

EPC

Temp-Tables a serem utilizadas no


Progress
Utiliza duas includes que so:
{include/i-epc200.i1 ttEpc}
define temp-table
field cod-event
field cod-parameter
field val-parameter
index id is primary

tt-epc no-undo
as char format "x(12)"
as char format "x(32)"
as char format "x(54)"
cod-parameter cod-event ascending.

{method/dbotterr.i}
DEFINE TEMP-TABLE RowErrors NO-UNDO
FIELD ErrorSequence
AS INTEGER
FIELD ErrorNumber
AS INTEGER
FIELD ErrorDescription AS CHARACTER
FIELD ErrorParameters AS CHARACTER
FIELD ErrorType
AS CHARACTER
FIELD ErrorHelp
AS CHARACTER
FIELD ErrorSubType
AS CHARACTER.
32

EPC

Programa de EPC no Progress

Dentro deste programa, feito o tratamento,


de acordo com o evento disparado disponvel
em pEvent
Este programa pode chamar outras APIs, BOs,
etc
No necessrio executar o proxyGenerator
neste programa
33

EPC

Exemplo de Customizao no Progress


/* definicao da tt-epc para o EMS2 */
{include/i-epc200.i1 ttEpc}
/* definicao da RowErrors para o EMS2 */
{METHOD/dbotterr.i}
/* recebe os tres parametros do do lado flex */
DEF INPUT
PARAM pEvent
as Character no-undo.
DEF INPUT-OUTPUT PARAM TABLE FOR tt-epc.
DEF OUTPUT
PARAM TABLE FOR RowErrors.
DEF VAR cEstabel LIKE estabelec.cod-estabel NO-UNDO.
/* gera um arquivo de log para acompanhar a execucao */
OUTPUT TO VALUE("c:\tmp\epc.log") APPEND.
PUT UNFORMATTED "fornecedorportlet-upc.p (antes):"
" pEvent= " pEvent SKIP.
for each tt-epc no-lock:
put unformatted fill(" ", 27)
+ "(" + tt-epc.cod-event
+ ":" + tt-epc.cod-parameter
+ ":" + tt-epc.val-parameter + ")" skip.
end.
OUTPUT CLOSE.

34

EPC

Exemplo de Customizao no Progress


IF

pEvent = "UPCAfterChange" THEN DO:


FIND FIRST tt-epc
WHERE tt-epc.cod-event
= pEvent
AND
tt-epc.cod-parameter = "cod-estabelecimento"
NO-LOCK NO-ERROR.
IF AVAIL tt-epc THEN DO:
ASSIGN cEstabel = tt-epc.val-parameter.
END.
FIND FIRST estabelec
WHERE estabelec.cod-estabel = cEstabel
NO-LOCK NO-ERROR.
IF AVAIL estabelec THEN DO:
CREATE tt-epc.
ASSIGN tt-epc.cod-event = pEvent
tt-epc.cod-parameter = "descricao-estabelecimento"
tt-epc.val-parameter = estabelec.nome.
END.
ELSE DO:
CREATE RowErrors.
ASSIGN RowErrors.ErrorSequence
= 1
RowErrors.ErrorNumber
= 1111
RowErrors.ErrorDescription = "Estabelecimento nao encontrado"
RowErrors.ErrorParameters = ""
RowErrors.ErrorType
= "ERROR"
RowErrors.ErrorHelp
= "Forneca um estabelecimento valido."
RowErrors.ErrorSubType
= "ERROR".
END.

END.
/* fim */

35

EPC

Cadastro de Programas

36

EPC
Links de Documentao
Trilha do Desenvolvedor de EPC
http://sdk.datasul.com.br/confluence/display/SD
KV1/Trilha+Desenvolvedor+de+EPC
Eventos de EPC
http://sdk.datasul.com.br/confluence/display/SD
KV1/Eventos+de+EPC
Manual de Customizao de EPC FDIS
http://sdk.datasul.com.br/confluence/pages/view
page.action?pageId=3407875
37

Metadados

O que Metadados ?
Wikipdia: So dados sobre outros
dados.
Meta: Algo que se auto explica.
Conjunto de ferramentas que permitem a
especificao e desenvolvimento de um
aplicativo de forma dinmica.

A partir do Datasul 11.5

38

Metadados

Para que Serve ?


Boa parte dos sistemas possuem funcionalidades
comuns, que podem ser reaproveitadas/reutilizadas
Com o reaproveitamento, ganha-se produtividade,
facilidade na manuteno e padronizao dos
programas
Diminuir a curva de aprendizado, fazendo com que o
desenvolvedor se concentre na lgica de negcio e
no nas vrias camadas internas da aplicao.
39

Metadados

Nova Plataforma de Desenvolvimento


O metadados a nova plataforma de desenvolvimento
na linha Datasul e oferece produtividade e
simplificidade semelhante a plataforma do Protheus.
Metadados continua gerando telas em Flex

40

Metadados

Desenvolvimento com Metadados


Desenvolvimento Tradicional
Especificao

Programao

Testes

Desenvolvimento com Metadados


Especificao

Cadastramentos
Programao
Metadados

Testes

41

Metadados

Arquitetura do Metadados

42

Metadados

Introduo a Metadados

Analista de
Sistemas
Analista de
Negcios
Desenvolvedor

Usurio

IDE de
Metadados

Aplicativo

Cadastramento de
Metadados

Gerao de Telas

Dicionrio

Metadados
DB
43

Metadados

Objetivos Principais do Metadados


Datasul
Diminuir tempo/custo de desenvolvimento e
manuteno.
Facilitar customizao no cliente.
Padronizar telas.
Manter compatibilidade com os produtos legados.
Possibilitar a utilizao de lgica de negcio j
existente, atravs de novas telas criadas pelo
metadados.
Reduzir necessidade de conhecimento tcnico para o
desenvolvimento/customizao.

44

Exemplo de CRUD Simples com Grid de


Pesquisa

CRUD Simples Alterao de


Registro

Exemplo de Zoom

Exemplo de FreeForm

Metadados

Caractersticas gerais
IDE Grfica simples e intuitiva para gerenciamento e
cadastramento de metadados.
IDE integrada ao Produto Datasul. No necessrio a
instalao de ferramentas adicionais para o
desenvolvimento/customizao utilizando Metadados.
Cadastramento de bancos de dados, tabelas e
campos (Dicionrio de Dados).

49

Metadados

Caractersticas gerais
Linguagem de script (ABLScript) para definio de
lgica de tela. O ABLScript um subset da
linguagem de programao Progress (utilizada no
desenvolvimento das lgicas de negcio). Dessa
forma necessrio o conhecimento de uma nica
linguagem de programao para as camadas
cliente(user interface) e servidor(lgica de negcio).
Editor de ABLScript com syntax highlighter, code
complete e help de comandos.
Rica paleta de componentes grficos.
50

Metadados

Caractersticas gerais
Suporte a criao de Templates de Formulrios.
Templates novos ou criados a partir de formulrios
existentes.
Wizard de Menu para cadastramentos de formulrios
criados via metadados no menu do produto Datasul.

Importador/Exportador de Formulrios.
Possibilidade de definio de permisses de acesso a
campos e botes de acordo como papel do usurio.
51

Editor ABLScript

Metadados

Caractersticas do ABLScript
O ABLScript uma linguagem de script
que permite a definio de lgicas de
tela, como por exemplo:

habilitao/desabilitao de campos e botes.

validaes de contedos de campos

abertura/fechamento de formulrios

solicitao de execuo de regras de negcio


no servidor
entre outros.
53

Metadados

Caractersticas do ABLScript
Sintaxe do Progress (linguagem utilizada
na construo das lgicas de negcio no
lado servidor)
Subset de comandos/funes do Progress
Orientada a Eventos
Executa 100% no lado Cliente (browser)

54

Metadados

Caractersticas do ABLScript

Editor com syntax highlight e code


complete
Suporte a 69 comandos/funes (na
verso 3.2.0 do Metadados)
Suporte a TEMP-TABLE e FOR EACH
Suporte a Includes e Procedures
55

Metadados

Documentao do ABLScript
http://sdk.datasul.com.br/confluence/display/SDKV1/AB
LScript

56

Documentao do
Metadados

TOTVS

Documentao do Metadados
http://sdk.datasul.com.br/confluence/display/SDKV1/Met
adados

A
IM

M
E
G

57

Customizao Datasul 11

QUESTES
Ricardo Menna

A
IM

M
E
G

Desenvolvimento
Framework/Foundation
ricardo.menna@totvs.com.br

58

Anda mungkin juga menyukai