Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cache Fundamentos

Fazer download em docx, pdf ou txt
Fazer download em docx, pdf ou txt
Você está na página 1de 23

Linguagem COS (Caché Object Script)

Fundamentos
Sumário

1. O que é o Cache?............................................................................................................3
1.1. Características.........................................................................................................3
1.2. Caché Acessibilidade.............................................................................................3
1.3. Componentes Objetos............................................................................................4
1.4. Componentes SQL..................................................................................................4
1.5. Componentes Web..................................................................................................4
1.6. Ferramentas..............................................................................................................5
1.7. Documentação.........................................................................................................6
1.7.1. - Guia de Introdução.......................................................................................6
1.7.2. - Documentação...............................................................................................6
2. COS - Caché Object Script............................................................................................7
2.1. O Uso do Caché ObjectScript...............................................................................7
2.2. Características da Linguagem..............................................................................7
2.3. Regras da Sintaxe do Caché ObjectScript........................................................8
2.3.1. Case-Sensitive..................................................................................................8
2.3.2. Comentários......................................................................................................8
2.4. Tipos de dados.........................................................................................................8
2.5. Operadores e expressões.....................................................................................9
2.6. Comandos...............................................................................................................11
2.6.1. Atribuindo Valores e Excluindo Varíaveis...............................................11
2.6.2. Entrada/Saída: (Leitura e Escrita)..............................................................11
2.6.3. Exercitando Fundamentos no Caché 1....................................................11
2.6.4. Invocar código................................................................................................12
2.6.5. Controle de Fluxo..........................................................................................13
2.6.6. Espera e Termino de Execução..................................................................14
2.6.7. Exercitando Fundamentos no Caché 2....................................................15
2.7. Armazenamento Flexível de Dados...................................................................16
2.8. Acesso Direto à Base de Dados.........................................................................17
2.9. Exercitando Fundamentos no Caché 3............................................................17
2.10 Funções nativas do Caché..................................................................................19
2.11 Exercitando Fundamentos no Caché 4............................................................22
3 Links para estudo..........................................................................................................23
1. O que é o Cache?

Caché é um Sistema Gerenciador de Banco de Dados pós-relacional de alta


performance.
O termo “Pós-relacional” é aplicado ao Caché porque o mesmo é um banco de
dados que agrupa diferentes formas de acesso aos dados. As informações sempre
serão gravadas de forma multidimensional, mas podem ser manipuladas a partir de
uma estrutura orientada a objetos, SQL ou até mesmo multidimensional.

1.1. Características

– Um ambiente de desenvolvimento orientado a objeto.


– Acesso a objeto e SQL integrado (arquitetura de dados unificados).
– Ferramentas de desenvolvimento para WEB.
– Conectividade a partir de diversas linguagens.
– Uma base de dados multidimensional eficiente e escalável.

1.2. Caché Acessibilidade

- Permite escolha de ferramentas, linguagens, e modos para acesso de dados


ao Caché.
- Aplicações podem usar combinações de acesso a objetos, relacional, e
multidimensional.

1.3. Componentes Objetos

• Caché Language Bindings


– Suporte de conexões do Caché para aplicações clientes através de
.net, Java, C++, Delphi, Perl, e Python.
• Caché ActiveX Gateway
– Suporta o uso de componentes de ActiveX dentro de Caché.

1.4. Componentes SQL

• Caché SQL Server


– Permite conexão de qualquer aplicação ODBC/JDBC ou ferramentas de
desenvolvimento.
• Caché SQL Gateway
– Permite a conexão a bases de dados externas via ODBC.
– Permite acesso via objetos ou relacional aos dados.

1.5. Componentes Web

• Caché Server Pages


– Conexão para as bases de dados do Caché via acesso web através de
páginas dinâmicas.

• Web Services
– Interage clientes ou servidores através de aplicações baseados em
SOAP e REST.
1.6. Ferramentas

- Studio: Ambiente de Desenvolvimento Integrado (IDE)

- Terminal: Interface de Linha de Comando

- Portal de Administração: Ferramenta Web para administradores, operadores e


desenvolvedores de sistema.
1.7. Documentação

1.7.1. - Guia de Introdução


http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?
KEY=GettingStarted

1.7.2. - Documentação

 A documentação do Caché é armazenada em base de dados Caché. - -


Armazenado/recuperado como XML.
 Completamente pesquisável, por elementos de documentos.
 Apresentado como páginas web.

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls
2. COS - Caché Object Script
O Caché ObjectScript – COS – é uma linguagem de programação orientada a
objetos desenvolvida para aplicações de negócios complexas e de rápido
desenvolvimento. Tem como antecessor a linguagem MUMPS.
Possui uma série de aplicações como:
o Na lógica de negócios.
o Na integração de aplicações.
o No processamento de dados.

2.1. O Uso do Caché ObjectScript

o Você pode usar o Caché ObjectScript em qualquer um dos contextos a


seguir:
 Interatividade, através de linhas de comando no Terminal do
Caché.
 Como linguagem de implementação para os métodos das
Classes Caché (orientação a objetos).
 Para criar rotinas (programas individuais contidos e executados
dentro do Caché).
o Como linguagem de implementação para Stored Procedures e Triggers
dentro do SQL do Caché.
o Como uma linguagem script de servidor dentro de uma aplicação em
CSP (Caché Server Pages).

2.2. Características da Linguagem

- Orientação a objetos

- Banco de dados Pós-Relacional

- Acesso aos dados na forma relacional e orientada a objetos


2.3. Regras da Sintaxe do Caché ObjectScript

2.3.1. Case-Sensitive

Nome de variáveis (local, global), classes, métodos, propriedades, rotinas,


senhas, macros, label, lock, marcadores, SQL Hosts.

Não case-sensitive: comandos, funções. Vari[aveis especiais, namespaces,


nomes de usuários, função do usuário, includes, letter codes, palavras reservadas,
nome de domínios, códigos (html, js, sql).

2.3.2. Comentários

/* */ - Comenta um bloco de código independente da linha. (/* marca onde o


comentário se inicia e */ marca o fim do comentário)

// - Comenta o conteúdo da linha a partir da ocorrência do //.

; - Comenta o conteúdo da linha a partir da ocorrência do ;.

/// - Comenta Métodos e Propriedades.

Por convenção utilizamos o /* */ e // para comentários nos códigos.

2.4. Tipos de dados

 Strings
 Números
 Objectos
 Globais
 Valores indefinidos
 Booleanos
 Datas
2.5. Operadores e expressões

Operador Operação Executada

. Acesso a propriedade ou método de objetos. Aluno.Nota

Índices de Array ou parâmetros de A(2), B(3,5)


()
funções/métodos. Funcao(1,N)

+ Adição (Binário), Positivo (Unário) 3+7 (=10)

– Subtração (Binário), Negativo (Unário) 7-3 (=4)

* Multiplicação 3*7 (=21)

/ Divisão 5/2 (=2.5)

\ Divisão Inteira 5/2 (=2)

** Exponenciação 2**3 (=8)

# Módulo (resto) 5#2 (=1)

_ Concatenação “Olá”_”Mundo”

' Complemento Lógico (NOT) ‘b

SET a = 1
= Atribuição e teste de igualdade
(2+1) = (1+1)

'= Teste de diferença (2+1) ‘= (1+1)

> Maior que 2>3

'> 3 ‘> 4 ou
Menor ou igual que
<=

< Menor que

'<
Maior ou igual que
>=

[ Contém
] Segue

]] Sorts After

&
AND Lógico
&&

!
OR Lógico
||

@ Indireção

Correspondência de padrões, ou seja, verificador


?
de sintaxe (máscara)
2.6. Comandos

2.6.1. Atribuindo Valores e Excluindo Varíaveis

 Set
o Atribui valores à variáveis.
Ex.: SET tVariavel = 123
SET tString = “nome”

 Kill
o Apaga variáveis em memória ou globais
 KILL tVariavel
 KILL ^global
 KILL (tTeste,tTemp)

2.6.2. Entrada/Saída: (Leitura e Escrita)

• Write (escrita)
Executa uma saída no dispositivo corrente
Ex.: WRITE #,!!!,?6,"Alô",!,"Mundo!"

• Read (leitura)
Atribui um valor de entrada a uma variável
Ex.:READ Nome

2.6.3. Exercitando Fundamentos no Caché 1

Os exercícios abaixo deverão ser resolvidos através do uso do Terminal.

1. Criar uma variável para armazenar o seu nome.


2. Exibir a variável do nome.
3. Para cada sobrenome que você tiver criar uma variável para armazena-los.
4. Exibir cada sobrenome.
5. Exibir o seu nome completo (concatenar todas as variáveis na exibição).
6. Criar uma variável para armazenar sua idade (em anos).
7. Criar uma variável para armazenar seu nome completo (concatenando as
variáveis que foram criadas anteriormente).
8. Exibir a seguinte mensagem: “Meu nome é NomeDoAluno e tenho XX anos.”,
onde o NomeDoAluno representa seu nome completo e o XX a quantidade de anos do
aluno.
2.6.4. Invocar código

 Do
Chama qualquer rotina, procedure, função ou método em COS
Ex.: DO ^Rotina
DO ##class(Teste).MinhaFuncao(tParametro1, tParametro2)

 Goto
Transfere o controle (e não retorna ao ponto de chamada), ou seja, pula
para alguma ponto do código.
Ex.: GOTO ^Rotina

 Quit
Termina a execução de um processo iniciado com um comando DO,
XECUTE, FOR ou Retorna de um método ou função
Ex.: QUIT
QUIT result -> Retornando a variável result de um método ou função.

 Job
Executa um processo em segundo plano, ou seja, não aguarda a execução
do código invocado para prosseguir. O Código continua sendo executado em
sequência e com o código invocado em paralelo mas em segundo plano.
Ex.: JOB ^ROTINA
JOB ##class(Teste).MinhaFuncao(tParametro1, tParametro2)

 Xecute
Executa comandos especificados dentro de variáveis
Ex.: SET a="write Treinamento Confluence" XECUTE a

Resultado: Treinamento Confluence


2.6.5. Controle de Fluxo

 If/ElseIf/Else
Avalia uma expressão, e então seleciona o bloco de código a ser
executado, baseado no valor verdadeiro desta expressão.
Ex.:
IF var>5 { WRITE "maior" }
ELSEIF var<5 { WRITE "menor" }
ELSE { WRITE "igual" }

 While
Executa código enquanto a condição for verdadeira (condição aplicada no
começo de cada repetição)
Ex.:
WHILE tCount < 5
{
WRITE !, “Contador do loop tCount: “ _ tCount
SET tCount = tCount + 1
}

 Do While
Executa código enquanto a condição for verdadeira (condição aplicada no
final de cada repetição)
Ex.:
DO
{
WRITE !, “Contador do loop tCount: “ _ tCount
SET tCount = tCount + 1
} WHILE x<5
 For
Executa um bloco de código repetidamente, testando-o no começo de cada
loop
FOR var=ValorInicial:Incremento:ValorParada (final)

Ex.:
FOR i=1:1:5
{
WRITE !, “Contador do loop i: “ _ i

2.6.6. Espera e Termino de Execução

 Hang
Suspende a execução por um número de segundos especificado
Ex.: HANG 12

 Halt
Termina a execução do processo corrente
Ex.: HALT
2.6.7. Exercitando Fundamentos no Caché 2

Os exercícios abaixo deverão ser resolvidos através do uso do Studio, através da


criação de rotinas.

1. Criar uma rotina(Exercicio2) para exibir os números pares entre X e Y (x e y


são entradas fornecidas pelo usuário).

2. Alterar a rotina do exercício anterior para contabilizar a quantidade de números


pares divididos por 10, que tenham como valor de resto 0 (múltiplos de 10).

3. Criar rotina para calcular todos os números impares entre X e Y (x e y são


entradas fornecidas pelo usuário).

4. Criar uma rotina para receber 3 números: X, Y e Z.

4.1 Exibir e contar todos os números entre X e Y que, quando divididos por 11,
tenham o valor do resto igual a 5.
4.2 Exibir e contar todos os números múltiplos de 3 entre Y e Z.
4.3 Exibir a soma de todos os números entre X e Z.
2.7. Armazenamento Flexível de Dados

Uma das características mais exclusivas do Caché ObjectScript é sua


armazenagem altamente flexível e dinâmica de dados. Os dados podem ser
armazenados em:
- Propriedades de objetos
- Variáveis
- Arrays esparsos multidimensionais, que permitem todo tipo de dados para os
subscripts
- Arquivos de base de dados (“globais”), que são Arrays esparsos
multidimensionais.
No Caché ObjectScript, as propriedades de objeto são fortemente tipificadas,
mas há outros três tipos de armazenamento: variáveis; Arrays e nós de globais. Estes
três são entidades completamente polimórficas e sem um tipo especial, que não
precisam ser declaradas ou definidas. Eles simplesmente passam a existir conforme
são utilizados e se moldam às necessidades de dados daquilo que estejam
armazenando, e da forma como estão sendo utilizados em uma expressão. Mesmo
Arrays não requerem nenhuma especificação de tamanho, dimensão ou tipo de
subscripts/dados.

Por exemplo:

SET tTeste(2) = “testando”


SET tTeste(“aqui”) = 25
SET tTeste(4, -5, “soma”) = 20.298
WRITE tTeste
2.8. Acesso Direto à Base de Dados

A forma de acesso direto á base de dados é acessando as globais que são


essencialmente referências de Array multidimensional precedidas pelo caractere
circunflexo “^”. Este caractere indica que se trata de uma referência de dados
armazenados na base , ou seja, não tem escopos temporários.

SET ^tMinhaGlobal = “meu texto na global”


SET ^tMinhaGlobal(1) = 45
ZW ^tMinhaGlobal

(%) - Globais, Rotinas e Pacotes que iniciam com “% ”, indicam que podemos chamá-
los de qualquer namespace, independente de onde estejam. Exemplo:
o Global ^%SYS
o Rotina ^%G
o Pacote %Library

2.9. Exercitando Fundamentos no Caché 3

Os exercícios abaixo deverão ser resolvidos através do uso do Studio, através da


criação de rotinas.

1. Criar uma rotina (Exercicio3) para ler os dados cadastrais de um aluno.


Aluno: Matricula, Nome Completo, Telefone, Data de Nascimento e Sexo.

2. Criar rotina para calcular a idade em anos do aluno através da sua data de
nascimento, exibir o resultado ao final.

3. Criar rotina para cadastrar X alunos, a partir do número fornecido pelo usuário,
os dados do aluno devem ser armazenados em um array.
Ex.: tAluno(1, “nome”) = “joão”
tAluno (1, “matricula) = 10
tAluno(1, “telefone) = 1111-1111
Obs.: tAluno(x , “nome_da_propriedade”) = valor
X: Índice número do aluno no array.
nome_da_propriedade: Nome da propriedade
valor = valor que será armazenado para aquele nó da global.

4. Alterar o item 3, para armazenamento em global.

5. Criar rotina para ler cadastro de alunos, enquanto o usuário não finalizar o
processo ao final de cada cadastro.
(Perguntar ao usuário se ele terminou de cadastrar os alunos ao final de cada
iteração).

6. Criar uma rotina para utilizar os dados preenchidos pelos exercícios anteriores
e calcule e exiba:
6.1 A idade média do grupo (utilizar o calculo da idade do item 2)
6.2 A idade média das mulheres.
6.3 A idade média dos homens
6.4 A quantidade de homens e mulheres com idade a cima de 25 anos.

7. Criar uma global para armazenar o resultado de cálculos dos itens 2,3 e 6.
O número do item do exercício corresponde ao índice do array que o calculo
será armazenado.
Ex.: ^minhaGlobal(2) = 30 anos
^minhaGlobal(6,1) = Idade média do grupo é de 27 anos
^minhaGlobal(6,2) = Idade média das mulheres é de 25 anos
Obs.: ^minhaGlobal(X,Y)
X: número do item de exercício.
Y: Número do sub-item do exercício

8. Calcular e exibir o nome e idade de todos os alunos cadastrados


8.1 Ordenados de forma crescente por número da matricula.
9. Ordenados de forma crescente pela idade.
2.10 Funções nativas do Caché
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?
KEY=RCOS
Sintaxe das funções
o $função(parâmetros)
o $nome – O nome da função. Ex.: $LENGTH
o (parâmetros) – Um ou mais valores a serem passados para a função.
Ex.: WRITE $LENGTH("Caché")

 $Length
o Retorna o número de caracteres ou de delimitadores (+1) em uma string

WRITE $LENGTH("Teste Confluence")


WRITE $LENGTH("DD/MM/AAAA","/")

 $ZCONVERT
o Conversão entre formatos de strings

WRITE $ZCONVERT("Confluence","U")

Exemplo de parâmetros para conversão


 "U" ou "u" Maiúsculas
 "L" ou "l" Minúsculas

 $Find
o Procura uma substring e retorna um inteiro especificando sua posição
final na string. Note que a posição retornada é a posição posterior.

WRITE $FIND("Confluence","flu")

 $Extract

o Extrai um ou mais caracteres de acordo com os parâmetros


especificados

WRITE $EXTRACT("Treinamento",6)
WRITE $EXTRACT("Treinamento",1,5)
 $Piece
o Retorna uma substring com base no delimitador e no(s) pedaço(s) –
piece(s) – especificado(s).

WRITE $PIECE("01/05/2018","/")
WRITE $PIECE("01/05/2018","/",3)
WRITE $PIECE("01/05/2018","/",1,2)

 $Case
o Compara expressões e retorna o valor do primeiro caso coincidente,
equivalente a um controlador de código (IF/ElseIf/Else)

SET x=2
SET res=$CASE(x,1:"simples",2:"duplo",3:"triplo",:"erro de
entrada")
WRITE res

 $Translate
o Executa uma troca dos caracteres do segundo argumento para os
caracteres do terceiro. Se não for passado o terceiro argumento, retira
todas as ocorrências do mesmo.

WRITE $TRANSLATE("Xreiyamenzo","xyz","Tnt")

 $Horolog

o Uma string separada por virgula que contém dois números, o primeiro
número representa a data e o segundo número a hora, mais
especificamente o primeiro número presenta a quantidade de dia desde
o inicio da contagem do caché (31/12/1840) e o segundo número
representa o número de segundos que se passaram desde a meia-
noite.

WRITE $HOROLOG
 $ ZDate
o Função para conversão de data em formato $HOROLOG para formatos
alternativos.

WRITE $ZDATE($HOROLOG,4)

 $Get
o Retorna o valor de uma variável especificada. Caso não exista, ao invés
de erro, retorna vazio!
o Se for passado o segundo parâmetro, caso não exista a variável,
retornará o valor especificado.

WRITE xyz
<UNDEFINED>
WRITE $GET(xyz)
WRITE $GET(xyz,"Null")

 $Data
o Verifica se uma variável está definida, contém dados e se possui
descendentes.

SET ^tVar = "Treinamento "


SET ^ tVar (1) = "x"
SET ^ tVar (1,1) = "12"
SET ^ tVar (2,3) =" confluence"
WRITE $DATA(^tVar (1))
WRITE $DATA(^tVar (2))

$Order
o Retorna o primeiro subscrito válido a partir do especificado.

Set x(1)=10, x(5)=50, x(9)=30


WRITE $ORDER(x(""))
Resultado: 10
WRITE $ORDER(x(5))
Resultado: 50

2.11 Exercitando Fundamentos no Caché 4

Os exercícios abaixo deverão ser resolvidos através do uso do Studio, através da


criação de rotinas, utilizando como base a solução do exercício anterior.

1. Exibir a relação de todos os alunos que o seu nome comece com a letra “A”.

2. Utilizando a global do Exercitando Fundamentos 3, responsável pelo


armazenamento das repostas dos itens do mesmo, deve-se percorrer todos os
nós da global adicionando o texto “VERIFICADO” a direita do valor
armazenado no nó.
Ex.: ^minhaGlobal(2)=30 anos VERIFICADO
^minhaGlobal(6,1)=Idade média do grupo é de 27 anos VERIFICADO
^minhaGlobal(6,2)=Idade média das mulheres é de 25 anos VERIFICADO

3. Alterar o código desenvolvido no exercício anterior para gravar a data e hora


da verificação.
Ex.: ^minhaGlobal(2)=30 anos (VERIFICADO em 01/05/2018 15:00:00).
3 Links para estudo

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=TCOS

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS

Ihttps://www.intersystems.com/wp-content/uploads/sites/7/brochura-Core-Manual-de-
Tecnologia-Cache.pdf

Você também pode gostar