Escolar Documentos
Profissional Documentos
Cultura Documentos
Agenda
Agenda
Agenda
PDV mvel
TOTVSTec - FatClient
Estrutura
A estrutura do FatClient possibilitou
englobar em um nico produto
nossa camada Client/Server
permitindo a execuo de rotinas
Off-line, necessidade bsica no mundo
Mobile.
FatClient
ADVPL
Acesso a dados
Comunicao com nosso
Client
Comunicao entre Servidores
ADVPL
Interface
Acesso a dados
Comunicao entre Servidores
Integrao com perifricos (impressoras)
Integrao com o dispositivo (cmera)
AppServer
TOTVSTec - FatClient
Estrutura
Fly 01
Pontos de destaque:
ADVPL Nativo para dispositivos mveis;
Porte do aplicativo Client/Server para Android;
Porte do SmartClient para Qt 5.5;
Fly 01
SmartClient Mobile
Customizaes
Este
produto
permitiu
tambm a flexibilizao na
camada de customizaes,
ponto forte na Plataforma
TOTVS, com aplicaes
tanto Off quanto On-Line.
Ao lado um modelo
customizado em Windows e
em seguida em Android.
TOTVSTec - FatClient
Instalao do aplicativo
TOTVSTec - FatClient
Compilando rotinas ADVPL
Tela de parmetros com boto
de edio do ini.
A opo LaunchAsServer
permite iniciar o FatClient em
modo compilao, facilitando a
construo / expedio de
customizaes.
TOTVSTec - FatClient
Compilando rotinas ADVPL
Server Mobile aguardando a
compilao...
Classe TMobile
TMobile():New()
TMobile():TakePicture() : cArquivo
TMobile():BarCode(cModo): aInfo
TMobile():GetPairedBluetoothDevices(): aDevices
TotvsApi
totvsapi.dll/so
totvsapi.apk
Possibilita a publicao de
atualizaes via Play Store.
Simplicidade para o usuario, unindo
tudo em um nico pacote.
printer.ini
printer.jar
printer.dll/so
pinpad.dll/so
pinpad.jar
PDV mvel
O porte para a plataforma Windows 10
Universal App foi tambm um desafio.
Alm da necessidade de dominar todo
um novo conjunto de ferramentas,
precisamos migrar nosso projeto do
Visual Studio 2005 para o 2015.
Parece fcil, no?
...
Garantimos que NO !!!
PDV mvel
PDV mvel
Questes
Acacio Egas
acacio.egas@totvs.com.br
Documentao
http://tdn.totvs.com.br/display/tec/TMobile
Agenda
TIPAGEM
Requisitos
TOTVS Appserver 2.0 (Protheus 12), binrio a partir de dezembro/2014;
Pr-processador, dezembro 2014, atualizado no TDS;
Arquivos de include atualizados, dezembro/2014.
TIPAGEM
Tipos
Tipo
Descrio
Identificador
numeric
char/character
date
codeblock/block
logical
array
object
TIPAGEM
Sintaxe
Function <Nome da Funcao>([<parametro1> as <Tipo1>, <paramentroN as <TipoN>]) [as <Tipo>]
....
Return
Local <Nome da variavel> as <Tipo>
TIPAGEM
Sintaxe
TIPAGEM
Local n1 as numeric
n1 := "ABCDE"
c1 := 10
Return
TIPAGEM.PRW(7) warning W0015 Incompatible Types : cannot convert from 'C' to 'N'
TIPAGEM.PRW(8) warning W0015 Incompatible Types : cannot convert from 'N' to 'C'
TIPAGEM
Local c1 as character
Local l1 as logical
c1 := "ABCDE"
l1 := .T.
ConOut("Chamada 2 - xTLog")
ConOut(U_xTLog(c1)) //Invalid parameter
Return
EndIf
Return l1
*** Warning - Mismatched parameters type calling
U_XTLOG at parameter 1 - expected L->C
Questes
Fabio Garbin
fgarbin@totvs.com.br
Thays Grazia
thays.grazia@totvs.com.br
Documentao
http://tdn.totvs.com/display/tec/Tipagem+de+Dados
Agenda
Variveis Globais
O QUE ?
HashMap
Vantagens de uso:
Tempo de recuperao com custo zero
Possibilidade de criao de chaves compostas
Desvantagens de uso:
Custo de criao maior que de um array simples
No serve para buscas por parte da chaves ou
por intervalos (a no ser que tenham sido
armazenados assim)
http://tdn.totvs.com/pages/viewpage.action?pageId=77300615
Variveis Globais
Vantagens / Desvantagens
Vantagens:
Possibilidade de se compartilhar dados entre Jobs;
Cria tabelas virtuais em memria (UID)
Obs. tabela X (numrico/caracter/data/lgico) e tabela A (Array);
Faz bloqueio por chave e no global;
Mantm uma cpia local do dado no Job que est executando,
permitindo alterao sem afetar os outros Jobs;
Permite mecanismo de sincronizao de dados entre os Jobs;
Recuperao de informao sem consulta (hash);
No libera os recurso ao finalizar o Job;
No libera as transaes ao finalizar o Job;
Possveis Desvantagens:
No libera os recurso ao finalizar o Job;
No libera as transaes ao finalizar o Job;
Os Arrays no podem armazenar Objetos e Code Block;
Variveis Globais
VARIVEIS GLOBAIS
Val
XX
chave
.T.
ABC
32.7
MINHAS_VARIAVEIS
(UID Tab X)
Val
.F.
23
XYZ
chave
.F.
chave
tab1
msg salva
29/08/2015
74
32.7
JOB 1
User Function varglb_1 ()
Local lRet := .F.
Local nVal := 32.7
lRet := VarSetUID(TESTE)
lRet := VarSetXD(TESTE, chave, nVal)
nVal := 50
ConOut(Str(nVal))
lRet := VarGetXD(TESTE, chave, @nVal)
ConOut(Str(nVal))
lRet := VarGetXD(TESTE, chave, @nVal)
ConOut(Str(nVal))
Return .T.
JOB 2
50
32.7
74
32.7
74
32.7
74
50
32.7
50
50
JOB 2
User Function varglb_4 ()
Local lRet := .F.
Local nVal := 0
lRet := VarSetUID(TESTE, .T.)
lRet := VarGetX (TESTE, chave, @nVal)
ConOut(Str(nVal))
nVal := 74
lRet := VarSetX(TESTE, chave, nVal)
ConOut(Str(nVal))
Return .T.
50
74
Questes
Ricardo Lima
ricardo.clima@totvs.com.br
Documentao
http://tdn.totvs.com/pages/viewpage.action?pageId=203755846
http://tdn.totvs.com/pages/viewpage.action?pageId=77300615
Agenda
Roteiro
Tecnologias
Soluo
SQLite
SQLite
ADVPL
ADVPL
Como usar?
Onde usar?
SQLITE
Tecnologias
SQLite & ADVPL
SQLITE
Sobre o SQLite
Full SQL;
Transaes ACID;
Database de TeraBytes;
Application
SQLite
Android
IOS
Linux
Solaris
Windows
SQLITE
RDD PADRO
(ISAM)
DBCreate,
DBUseArea,
DBSkip, DBSeek, ...
SQLite +
ADS
CTREE
DBACCESS
DBACCESS
Dados
+ SQLite
SQLITE
Soluo
ADVPL com SQLite
SQLITE
ADVPL PROTHEUS
RDD Padro (ISAM)
ADS
CTREE
FILE SYSTEM
SQLITE
TOP CONNECT
DBACCESS
BASE
DATADATA
BASE
DATA
BASE
SQLITE
SQLITE
Armazenamento e Persistncia
Temporary
RDD: SQLITE_TMP;
ADVPL PROTHEUS
TEMPORARY
MEMORY
Memory
RDD: SQLITE_MEM;
System
RDD: SQLITE_SYS;
tabelas do sistema;
mantidas em disco;
so persistentes e durveis.
SQLITE
SYSTEM
SQLITE
Como Usar
RDD SQLite
SQLITE
SQLITE
DBCreate(
{ 'field1','C', 6, 0 }, { field2','N, 8, 0 }
'DBFCDX' )
'myTable', aStruct, SQLITE_TMP'
DBUseArea(
for i := 1 to 1000
RecLock('TRAB',.T.)
TRAB->field1 := STRZERO(i, 6)
TRAB->field2 := i
TRAB->(MsUnLock())
end
TRAB->(DBGoTop())
while ! TRAB->(EOF())
conout(TRAB->field1, TRAB->field2)
TRAB->(DbSkip())
end
return
SQLITE
TCSqlExec(UPDATE
DBUseArea( .T.,
TRAB->(DBGoTop())
while ! TRAB->(EOF())
conout(TRAB->field2)
TRAB->(DbSkip())
end
return
AppServer.ini
AppServer.ini
RPODB=TOP
RPODB=SQLITE
SQLITE
New Features
RDD SQLite
SQLITE
TCGenQry
select
TCSqlExec
update/delete
RDD Padro
DBSqlExec
RDD Padro
DBSqlExec (funo nova)
select
update/delete
Top Connect
TCGenQry
SQLITE
TCSqlExec
SQLITE
SQLITE
Top Connect
Driver Padro
SQLITE
Dest
Cpia Iterativa
DBTblCopy
Source
Cpia Direta
While ( ! Source->(EOF()) )
RecLock("Dest",.T.)
For i := 1 to Len(aStruct)
Dest->&(aStruct[i][1]) := Source->&(aStruct[i][1])
End
Dest->(MsUnLock())
Source->(DbSkip())
End
DBTblCopy("Source", "Dest")
SQLITE
Alguns Testes
RDD SQLite
SQLITE
SX3
Dest
Source
DBTblCopy
Dest
Source
Time (seconds)
DBF (ISAM)
62.659
SQLite (ISAM)
65.011
SQLite (copy)
8.783
DBF (ISAM)
55.047
SQLite (ISAM)
56.693
SQLite (copy)
2.144
SQLITE
Concorrncia
nico server / vrias threads.
Thread
1
Thread
2
...
Thread
n1
Thread
n
SQLite
1000 threads
SQLITE
Concorrncia
Vrios servers / vrias threads.
Server
1
Server
2
...
Server
n1
Server
n
SQLite
SQLITE
Onde Usar
RDD SQLite
SQLITE
Solues embarcadas
SQLITE
SQLITE
Pense sobre:
Questes
Cristiano Lino Felicio
cristiano.felicio@totvs.com.br
Documentao
http://tdn.totvs.com/display/tec/DBSqlExec
http://tdn.totvs.com/display/tec/DBTblCopy
Agenda
http://tdn.totvs.com/display/tec/TOTVS+%7C+Log+Management
file=log_totvstec11_local.log
Log Server
file_size=1048576
http://tdn.totvs.com/display/tec/Log+Server
max_files=500
backup_dir=backup_log
sqlite=1
SysLog
https://tools.ietf.org/html/rfc5424
https://tools.ietf.org/html/rfc3164
https://tools.ietf.org/html/rfc6587
Mensagens de Log
LogMsg
Permite que sejam criadas mensagens com diferentes nveis de Severidade (Erro, Alerta,
Informao, ...);
Permite que sejam configuradas identificaes das mensagens (Funo, Localidade, Verso,
Identificador de Mensagem, Dados Estruturados);
A Data e Hora de gerao da mensagem de Log inserida de forma automtica;
O identificador do processo inserido automaticamente;
Identificador do Servidor inserido automaticamente;
LogMsg( < cFunc >, < nFacility >, < nSeverity >, < nVersao >, < cMsgId >, < cStrData >, <
uMsg1 >, < uMsg2 >, ... )
Mensagens de Log
FwLogMsg
Implementao do FrameWork sobre o LogMsg para padronizao de mensagens
FWLogMsg(<cSeverity >, [ cTransactionId ], <cGroup >, <cCategory >, <cStep >, <cMsgId >,
<cMessage >, <nMensure >, <nElapseTime >, <aMessage >)
http://tdn.totvs.com/display/framework/FWLogMsg
Mensagens de Log
ConOut
Todas as mensagens que so geradas pelo comando ConOut j so automaticamente enviadas para
o LogServer.
Contudo alguns os campos da mensagem LogMsg so preenchidos automaticamente.
Ex. Severidade Informao, Funo ConOut, e tambm so preenchidos com valores padro
Localidade, Verso, Identificador de Mensagem, Dados Estruturados.
Severidade (criticidade);
Questes
Ricardo Lima
ricardo.clima@totvs.com.br
Documentao
http://tdn.totvs.com/display/tec/TOTVS+%7C+Log+Management
http://tdn.totvs.com/display/tec/LogMsg
http://tdn.totvs.com/display/framework/FWLogMsg
Agenda
Futuro...
Namespace:
Organizao de cdigo
Nome de varivel com mais de 10 caracteres
Nome de funo com mais de 10 caracteres
Objeto Dinmico:
Objetos mais leves evitando a declarao de classes
Acelera o desenvolvimento
Reduz o consumo de memria
SmartJob:
Alta robustez de memria
Maior escalabilidade de tarefas concorrentes
Futuro...
Agenda
Bate Papo