Day 5: Desenvolvendo com InterSystems Objects and SQL
Dia 5: Desenvolvendo com Objetos InterSystems e SQL Finalizei minha participação no Desenvolvimento com InterSystems Objects e SQL com Joel Solon. O curso é muito legal e vou compartilhar com vocês algumas dicas que recebi durante o último dia de treinamento. Dicas apresentadas no dia 5:
- O pacote% SYSTEM possui classes de utilidades gerais. Use $ system.class.Help () para listar os utilitários. As principais classes% SYSTEM são criptografadas (métodos de criptografia da indústria), OBJ para gerenciar classes e objetos, Segurança para métodos de segurança e SQL para usar a linguagem SQL.
- IRIS permite a validação das propriedades e argumentos usando MINVAL e MAXVAL para inteiro, FORMAT para data e hora, SCALE para decimal, MINLEN, MAXLEN, TRUNCATE, VALUELIST (restringe a entrada a uma lista de valores) e PATTERN para string. Exemplo: Method Print (name As% String (MAXLEN = 50)).
- Você pode criar novas validações e conversões de tipo de dados estendendo um tipo de dados como% String e usando DisplayToLogical () e LogicalToDisplay () para implementar novos comportamentos. É possível alterar o parâmetro de tipo de dados como o parâmetro PATTERN para alterar a validação de uma string.
- O IRIS usa o operador -> para fazer junções implícitas, por exemplo: selecione País-> Estados-> Condado em Simple.Places. Isso junta 3 tabelas relacionadas.
- Para criar uma referência entre classes / tabelas, use ForeignKey. Exemplo: ForeignKey CountryFK (Country) References Simple.Country () [OnDelete = setnull]. Existem as opções setnull para definir nulo para a tabela / classe do outro lado, cascata para propagar a exclusão, noaction para nenhuma ação e setdefault para configurar um valor padrão para a referência.
- Use% ConstructClone () para fazer um clone de um objeto e suas referências.
- Use SqlComputeCode para os campos calculados. Exemplo: (da documentação IRIS) Propriedade FullName As% String [SqlComputeCode = {set {*} = {FirstName} _ "" _ {LastName}}, SqlComputed];
- É possível automatizar testes usando o framework% UnitTest. Use% UnitTest.TestCase para definir casos de teste e% UnitTest.Manager para executar um conjunto de casos de teste. Para ver os resultados, vá para System Explorer> Ferramentas> Portal UnitTest. Consulte https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=TUNT.
- IRIS oferece suporte a 2 coleções de tipos:
- Lista: chave baseada na posição começando em 1.
- Declaração: Estados de propriedade como lista de Simple.State.
- Get: country.States.GetAt (1)
- Insert: country.States.Insert (florida)
- Remove: country.States.RemoveAt (1)
- Count: country.States.Count ()
- Clear: country.States.Clear ()
- Next: country.States.GetNext (1) - para obter o item 2
- Loop: para i = 1: 1: country.States.Count () {write!, Country.States.GetAt (i)
- Array: chave baseada no valor associado.
- Declaration: Estados de propriedade como matriz de Simple.State.
- Get: country.States.GetAt ("FL")
- Insert: country.States.SetAt (florida, "FL")
- Remove: country.States.RemoveAt ("FL")
- Count: country.States.Count ()
- Clear: country.States.Clear ()
- Next: country.States.GetNext ("FL") - para obter o item GA
- Loop: set state = "" para {set val = country.States.GetNext (.state) quit: (state = "") write!, Val}
- Lista: chave baseada na posição começando em 1.
- Para criar relacionamentos entre classes, devemos:
- Pai / Filhos: Estados de relacionamento como Simple.State [cardinality = children, Inverse = Country]. O outro lado: País do relacionamento como Simple.Country [cardinality = parent, Inverse = Country].
- Um / Muitos: Estados de relacionamento como Simple.State [cardinality = many, Inverse = Country]. O outro lado: País do relacionamento como Simple.Country [cardinality = one, Inverse = Country].
- Um para um e muitos para muitos não são suportados. Um-para-um pode ser simulado e muitos-para-muitos podem ser feitos usando 2 muitos-para-um para uma tabela de relacionamento.
- Stream é um objeto que pode conter uma quantidade de dados maior que o limite das propriedades regulares, pode armazenar dados de caracteres (% Stream.GlobalCharacter) ou binários (% Stream.GlobalBinary). Use os seguintes métodos para ler / gravar dados:
- Escrever (texto): escrever no final da linha;
- WriteLine (texto): escreve para uma nova linha;
- Clear (): limpa o conteúdo do stream;
- CopyFrom (stream): copia de um stream e sobrescreve o conteúdo atual;
- Read (comprimento): ler caracteres limitados ao comprimento;
- ReadLine (comprimento): lê os caracteres na linha atual limitada ao comprimento;
- Rewind (): retorna para o início do stream;
- MoveToEnd (): move para o final do fluxo.
- Você pode usar gatilhos para fazer algo antes ou depois de um evento CRUD. Exemplo: Trigger T1 [Evento = INSERT, Time = AFTER, Order = 1, Foreach = row / object] {write your code}.
- O IRIS possui algumas funções frequentemente utilizadas:
- $ EXTRACT: obtenha uma substring - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... $
- FIND: obtém a posição de um valor passado como argumento - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls? KEY = RCOS_ffind $
- LENGTH: obtenha o tamanho de uma string ou substring - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... $
- LIST: retornar / criar uma lista de elementos - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... $
- LISTDATA: retorna o elemento na lista por posição - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... $
- LISTFIND: retorna o índice de um elemento da lista - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... $
- LISTGET - obtenha um elemento da lista - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... $
- LISTLENGTH - obter o total de elementos na lista - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... $
- PIECE - retorna ou substitui uma substring usando um delimitador - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...
O curso foi muito bom e tem um rico conjunto de exercícios práticos. O curso também é importante para a preparação para a certificação de desenvolvedor IRIS. Consulte a agenda do curso em https://www.intersystems.com/support-learning/learning-services/classroo....