Você está na página 1de 80

TecMeeting - TOTVS

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

Projeto Fly01 - Android

PDV mvel

Este projeto foi desde o inicio um


desafio.

Nosso piloto foi o Fly01, que envolveu


diversas reas da TOTVS, como Varejo,
Framework, Tecnologia e tambm
parceiros responsveis pela integrao
com o PIN de pagamento e emisso de
NFCe.

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

Mais uma vez a Tecnologia da TOTVS traz para si a


responsabilidade de manter a independncia em relao
a sua Plataforma.

Pontos de destaque:
ADVPL Nativo para dispositivos mveis;
Porte do aplicativo Client/Server para Android;
Porte do SmartClient para Qt 5.5;

Homologao do SQLite como meta dados e SGBD padro;


Integrao com os perifricos do dispositivo (cmera, leitura de cdigo de barras,
entre outros).

Fly 01

Ao lado mais algumas das


telas do projeto Fly01.

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

TOTVS FatClient na Google Play Store

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

TOTVSTec FatClient (Mobile)


Recursos do dispositivo mvel.
O acesso aos dispositivos do
perifricos mobile sero
acessados atravs da classe
TMobile.
Ela permitir fcil acesso a
cmera, leitor de cdigo de
barras e quaisquer
dispositivos necessrios.

Classe TMobile
TMobile():New()
TMobile():TakePicture() : cArquivo
TMobile():BarCode(cModo): aInfo
TMobile():GetPairedBluetoothDevices(): aDevices

*Documentao de uso e exemplos no TDN procurar pela classe TMobile.

TotvsApi

Comunicao com dispositivos

Formato de comunicao similar ao


existente na verso desktop.

totvsapi.dll/so
totvsapi.apk

Utiliza bibliotecas java, sendo a forma


mais comum de distribuio para a
plataforma Android.

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

Windows 10 Universal App

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

Outro grande desafio foi lidar


com
uma
tecnologia
completamente nova, pois
nossos fornecedores, como
ns, ainda trabalhavam na
migrao
de
suas
ferramentas.

PDV mvel

Vencidas as barreiras iniciais a


TOTVS se tornou uma das
primeiras empresas Brasileiras a
desenvolver uma ferramenta
100% Universal App.

Rotina sendo executada em um ThinkPad 8

Questes
Acacio Egas
acacio.egas@totvs.com.br

Ricardo Mansano Coordenao


mansano@totvs.com.br

Documentao
http://tdn.totvs.com.br/display/tec/TMobile

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

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

Utilizado para valores numricos inteiros ou


decimais, positivos ou negativos.

char/character

Utilizado para valores do tipo caractere.

date

Utilizado para armazenar datas.

codeblock/block

Armazena um bloco de cdigo para posterior


execuo.

logical

Armazena valores lgicos, verdadeiro (.T.) ou


falso (.F.) .

array

Utilizado para armazenar um vetor de valores.

object

Armazena objetos de interface ou classes.

TIPAGEM

Sintaxe
Function <Nome da Funcao>([<parametro1> as <Tipo1>, <paramentroN as <TipoN>]) [as <Tipo>]

....
Return
Local <Nome da variavel> as <Tipo>

TIPAGEM

Sintaxe

Class <Nome da Classe>


// Declarao de propriedades
Data <nPropriedad1> [as <tipo>]
Data <nPropriedad2> [as <tipo>]
// Declarao de mtodos
Method New() // Construtor, retorna Self
Method <Nome do Mtodo>([<Param1>, <Param2>,...,<ParamN>]) [as <tipo>]
EndClass
// Construtor da Classe
Method New() Class <Nome da Classe>
Return Self
// Definio de mtodos
Method <Nome do Mtodo>(nParam1) Class <Nome da Classe> [as <tipo>]
Local n1 as numeric
Parameter <Param1> [as <tipo>]
ConOut("Classe:MethodA")
Return n1

TIPAGEM

Erros e Warnings - Compilao


Function xTipagem()
Local c1 as character

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

Erros e Warnings - Execuo


User Function xTMain()

Local c1 as character
Local l1 as logical
c1 := "ABCDE"

User Function xTLog(l1 as logical)


If l1 = .T.
ConOut("Logical .T.")
Else
ConOut("Logical .F.")

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

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

Variveis Globais
O QUE ?

Novo mecanismo para compartilhar dados entre Jobs;


Baseado em busca de dados em Tabelas com Hash;
Sincronizao de Dados;

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 - HashMap


Grande velocidade em
operaes de busca,
excelente substituto
quando seu array vai ser
usado para fazer ascan
tendo como o parmetro
um codeblock que tenha o
seguinte cdigo:
{|x| x[1] == val}

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 (funes)


Descrio das Funes de Variveis Globais:
VarSetUID (UID [, lgico: ignora se UID j existe])
VarSetXD (UID, chave, valor: numrico/caracter/data/lgico)
VarSetAD (UID, chave, valor: lista de valores)
VarGetXD (UID, chave, valor: numrico/caracter/data/lgico)
VarGetAD (UID, chave, valor: lista de valores)
VarBeginT (UID, chave)
VarEndT (UID, chave)
VarSetX (UID, chave, valor: numrico/caracter/data/lgico)
VarSetA (UID, chave, valor: lista de valores)
VarGetX (UID, chave, valor: numrico/caracter/data/lgico)
VarGetA (UID, chave, valor: lista de valores)
VarDel (UID, chave)
...
http://tdn.totvs.com/pages/viewpage.action?pageId=203755846

Variveis Globais

VARIVEIS GLOBAIS

Val

XX

chave

.T.

ABC

32.7

MINHAS_VARIAVEIS
(UID Tab X)

TESTE (UID Tab A)

TESTE (UID Tab X)

Val

.F.

23

XYZ

chave

.F.

chave

tab1

msg salva

29/08/2015

Variveis Globais (exemplo)


VARIVEIS GLOBAIS
TESTE (UID) (Tabela X)
chave

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

User Function varglb_2 ()


Local lRet := .F.
Local nVal := 0
lRet := VarSetUID(TESTE, .T.)
lRet := VarGetXD(TESTE, chave, @nVal)
ConOut(Str(nVal))
nVal := 74
lRet := VarSetXD(TESTE, chave, nVal)
ConOut(Str(nVal))
Return .T.

32.7

74

Variveis Globais (exemplo - sincronismo)


VARIVEIS GLOBAIS
TESTE (UID) (Tabela X)
chave
JOB 1
User Function varglb_3 ()
Local lRet := .F.
Local nVal := 32.7
lRet := VarSetUID(TESTE)
lRet := VarBeginT(TESTE, chave)
lRet := VarSetXD(TESTE, chave, nVal)
ConOut(Str(nVal))
nVal := 50
lRet := VarSetXD(TESTE, chave, nVal)
ConOut(Str(nVal))
lRet := VarEndT(TESTE, chave)
ConOut(Str(nVal))
Return .T.

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

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

INOVAO Cristiano Lino Felicio

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;

String e Blob de GibaBytes;

App para SmartPhone e PDA;

Solues Web e cache de dados.

Fonte: www.sqlite.org (SQLITE)

Application
SQLite
Android

IOS

Linux

Solaris

Windows

SQLITE

Sobre ADVPL API de Acesso a Dados


ADVPL PROTHEUS
TOP CONNECT
(TC)
TCGenQry,
TCSqlExec,
TCLink, TCAlter, ...

RDD PADRO
(ISAM)
DBCreate,
DBUseArea,
DBSkip, DBSeek, ...

SQLite +

ADS
CTREE
DBACCESS

DBACCESS

Dados

+ SQLite

SQLITE

Soluo
ADVPL com SQLite

SQLITE

ADVPL com SQLite


Atende API ISAM;
Atende API TOP Connect;
Banco de dados local.

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;

tabelas por thread;


mantidas em disco;
morrem ao final da thread.

ADVPL PROTHEUS
TEMPORARY

MEMORY

Memory

RDD: SQLITE_MEM;

tabelas por thread;


mantidas em memria;
morrem ao final da thread.

System

RDD: SQLITE_SYS;

tabelas do sistema;
mantidas em disco;
so persistentes e durveis.

SQLITE

SYSTEM

SQLITE

Como Usar
RDD SQLite

SQLITE

SQLite Estrutura de diretrios


AppServer.ini
ROOTPATH = c:\Totvs_Protheus\Proteus_Data

SQLITE

Exemplo SQLite com API Padro


User Function exemplo()
Local i, aStruct := {

DBCreate(

{ 'field1','C', 6, 0 }, { field2','N, 8, 0 }

'DBFCDX' )
'myTable', aStruct, SQLITE_TMP'

DBUseArea(

'DBFCDX' , 'myTable', 'TRAB', .F., .F. )


.T., SQLITE_TMP'

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

Exemplo SQLite com API TOP CONNECT


User Function exemplo()

TCSqlExec(UPDATE
DBUseArea( .T.,

myTable SET field2 = 1 WHERE field1 < 000100)

TOPCONN' , TCGenQry( , , SELECT field2 FROM myTable), 'TRAB', .F., .F. )

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

New Feature: Execuo de query


Top Connect
ADVPL PROTHEUS

TCGenQry
select
TCSqlExec
update/delete

RDD Padro
DBSqlExec

RDD Padro
DBSqlExec (funo nova)

select
update/delete

Top Connect
TCGenQry
SQLITE

TCSqlExec

SQLITE

SQLITE

New Feature: Execuo de Query

Top Connect

Driver Padro

cQuery := "SELECT X3_CAMPO FROM SX3990 " ;


+ "WHERE R_E_C_N_O_ <= 5000 AND D_E_L_E_T_ = ' '"

cQuery := "SELECT X3_CAMPO FROM SX3990 " ;


+ "WHERE R_E_C_N_O_ <= 5000 AND D_E_L_E_T_ = ' '"

DbUseArea (.T., "TOPCONN", TCGenQry(,,cQuery), "ALIAS", .T., .F.)

DbSqlExec (cQuery, "ALIAS", "SQLITE_SYS")

SQLITE

New Feature: Cpia de Tabela

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

Testes Cpia de Tabela


SX3 (5000 registros)

SX3
Dest

Source

DBTblCopy

Dest

Source

Time (seconds)

DbAccess / Sql Server (remoto)

DBF (ISAM)

62.659

DbAccess / Sql Server (remoto)

SQLite (ISAM)

65.011

DbAccess / Sql Server (remoto)

SQLite (copy)

8.783

DbAccess / Sql Server (local)

DBF (ISAM)

55.047

DbAccess / Sql Server (local)

SQLite (ISAM)

56.693

DbAccess / Sql Server (local)

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

4 servers com 250 threads

SQLITE

Onde Usar
RDD SQLite

SQLITE

Pontos fortes com SQLite

Melhor organizao de dados (comparado aos drivers de arquivos locais)

Suporte a execuo de query

Sem trfego de rede (comparado ao DbAccess remoto)

Solues embarcadas

(comparado aos drivers de arquivos locais)

(caso de sucesso PDV Mvel)

SQLITE

Pontos de ateno com SQLite

SQLite um banco Lite

Transaes muito pesadas

Ambiente com estressante concorrncia de gravao

SQLITE

Pense sobre:

SQLite para tabelas temporrias;

SQLite em memria como alternativa para grandes arrays;

SQLite como uma cache de dados do banco principal.

Questes
Cristiano Lino Felicio
cristiano.felicio@totvs.com.br

Documentao
http://tdn.totvs.com/display/tec/DBSqlExec
http://tdn.totvs.com/display/tec/DBTblCopy

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

TOTVS LOG Management

TOTVS Log Server


TOTVS Log Viewer

http://tdn.totvs.com/display/tec/TOTVS+%7C+Log+Management

TOTVS Log Server


Servidor de Gravao de Logs

O Servidor de aplicao, permite a gravao de mensagens de Log de forma


centralizada, podendo concentrar a gravao de diferentes servidores e
tambm de outros sistemas.

Os Logs tratados so no formato SysLog, padro comum para gerao de


mensagens de Log.
appserver.exe -log_server
[LogServer]
port=4000

Os dados so armazenados em um repositrio central e podem ser gravados


em arquivo e/ou em banco de Dados (SQLite).

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

TOTVS Log Server


Sistemas homologados

TOTVS LOG Server j recebe informaes de:


TOTVS Protheus: mediante configurao no(s) server(ers) com build superior 131227;
TOTVS Logix: mediante configurao no server(ers) com build superior 131227;
TOTVS Datasul: mediante uso de DLL proprietria;

TOTVS RM: mediante uso de DLL proprietria;


TOTVS FLUIG: apesar do JBOSS ser parte integrante na estrutura do Fluig, foi utulizado o
Log4J (http://logging.apache.org/log4j/2.x/) para compatibilizar as mensagens e envio
com o padro RFC-5424;
Identity: utilizando Eclipse-JETTY (http://www.eclipse.org/jetty/) com Log4J e com
biblioteca proprietria;
Linux (SO): mediante job script (.bash) proprietrio;
Windows (SO): mediante job rodando powershell script proprietrio;

Protheus como Cliente de Log


Gravao de Logs

Permite que o grave as mensagens de Log no Servidor de Logs;


[LogClient]
server=SPOD3309
port=4000

Caso o servidor de Logs esteja temporariamente indisponvel, armazena


em memria as mensagens para que sejam retransmitidas assim que o
servidor for reestabelecido;
Caso haja indisponibilidade total do servidor de Logs, permite que seja
ativado um Servidor de Logs local que passa a armazenar as mensagens;

Mensagens so enviadas de forma assncrona, no gerando conteno no


Servidor (possibilita a criao de debug e trace de informaes);
Obs. Se esta sesso no estiver criada no .ini do AppServer os Logs no
sero enviados para o LogServer, sendo impressos somente na Console.

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

LogMsg('tlogmsg', 0, SEV_ERROR_, 1, msgid32', '[seg val="teste 1" nroid="4"]', Minha Mensagem')


http://tdn.totvs.com/display/tec/LogMsg

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.

ConOut( < uMsg1 >, ... )


ConOut(Minha Mensagem')
http://tdn.totvs.com/display/tec/Conout

TOTVS LOG Viewer


Visualizao de Logs
Permite a recuperao dos
Logs gravados.
Permite:
Filtragem Horria
Nome da mquina;
Verso
Aplicao

Severidade (criticidade);

TOTVS LOG Viewer


Lista de Logs recuperados

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

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

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

Modelo de implementao orientado a servios:


Possibilidade de se atender muitas requisies simultneas
Maior performance para grandes volumes
FatClient iOS
Homologar a plataforma iOS assim como o WindowsRT e Android
j so hoje
Far com que possamos desenvolver em todas as grande
plataformas de dispositivos mobile
FatClient Windows
Ir suprir a necessidade de mercado de um software mais enxuto
para pequenas implantaes
Em ambientes de uso de escala menor, trar mais agilidade na
implantao, desenvolvimento e uso da plataforma TOTVS

19:00 - 19:05 - Introduo do evento (Manoel Teixeira, TOTVS)


19:05 - 19:15 - Divulgao de Cursos ADVPL(Alecsandra Meira, IOS)
19:15 - 19:45 - Plataforma Mobile (Acacio Egas, TOTVS)

19:45 - 20:05 - Tipagem (Thays Grazia, TOTVS)


20:05 - 20:45 - Variveis Globais (Ricardo Lima, TOTVS)
20:45 - 21:20 - SQLite (Cristiano Felicio, TOTVS)
21:20 - 21:50 - Log Management (Ricardo Lima, TOTVS)

Agenda

21:50 - 22:00 - Novidades ADVPL (Tecnologia, TOTVS)


22:00 - 22:30 - Bate papo com palestrantes

Bate Papo