Parabéns @Claudio Devecchi
Artigo e aplicação excelentes!
Será de grande ajuda!
- Efetue login para postar comentários
Parabéns @Claudio Devecchi
Artigo e aplicação excelentes!
Será de grande ajuda!
@Eduardo Moreira
Se você já possui a licença do Caché 2018, basta fazer o download em https://wrc.intersystems.com/
Abraços,
Henrique
Valeu pessoal! Se foi algo divertido de assistir, então já valeu a pena hehehe
Abraços
Fala @Arian Botine beleza?
Eu não encontrei um método "Get" para retornar o valor Selectivity como menciona na questão acima.
No pacote %SYSTEM.SQL, tem o ClassMethod GetMapSelectability
Mas ele vai te retornar apenas 0 ou 1, conforme descrito aqui na documentação:
Returns: The method returns 1 if the map is selectable. If the map is not selectable, 0 is returned. If the Selectability of the map cannot be determined, a message string will be returned.
Se você analisar um outro pacote %Dictionary, vai se deparar com a classe persistente %Dictionary.StoragePropertyDefinition
Essa tabela tem uma coluna chamada Selectivity.
Veja se com essas informações você consegue chegar na sua solução.
Depois compartilha conosco.
Abraços
Show de bola! Precisando de mais algo, só dar um toque. Abraços
Parabéns a todos os participantes!
Agradeço a todos pelos votos de confiança e pelo incentivo para meus aplicativos.
Espero conseguir retribuir com boas ideias e projetos para uma comunidade tão unida e onde sempre encontrei apoio nesses longos anos de jornada.
Abraços e até a próxima ![]()
Excelente artigo!
Ansioso pela série completa ![]()
Caso alguém se depare com esse mesmo cenário no futuro, a causa do problema estava no tipo de indice.
@Eduard Lebedyuk respondeu na Community em inglês e deixarei o link para quem quiser maiores detalhes.
https://community.intersystems.com/post/fact-table-1-x-sql-select-100k#comment-140541
Oi Juliana, tudo bem?
Você já viu aplicação do @Yuri Marx no OpenExchange?
https://openexchange.intersystems.com/package/OCR-Service
Na descrição da aplicação você tem a seguinte informação:
InterSystems IRIS Interoperability OCR Service
This is an InterSystems IRIS Interoperability OCR Service to extract text from images and pdfs from a file into a multipart request from form or http request.
What The the service does
This application receive a http multipart request with a file, extract text using OCR from Tesseract and returns the result
Também tem um video que ele fez demonstrando um pouco mais.
https://www.youtube.com/watch?v=E8MHJ0kAdbk
Espero que possa ajudar.
Abraços
Parabéns @Henry Pereira pelo excelente artigo!
Sensacional @Fernando Beira ! Valeu!
Para quem precisar, fica aqui uma dica que acabei encontrando na Community sobre listagem de arquivos no diretório e subdiretório.
https://community.intersystems.com/post/how-do-i-get-list-files-directo…
Parabéns a todos os desenvolvedores!
Em especial aos desenvolvedores brasileiros @Henry Pereira @Yuri Marx @José Pereira @Renato Banzai que estão fazendo a diferença mundo afora! ![]()
Obrigado! Se tiver alguma sugestão de melhoria, fique a vontade para comentar! Abraços
Fala @Fernando Beira tudo bem?
Cara, não sei te dizer o real motivo dessa mudança. Mas a InterSystems andou fazendo algumas enquetes sobre IDEs utilizadas no começo de 2020. Em Abril de 2020, o Raj Singh - Product Manager, Developer Experience anunciou que a InterSystems se juntaria ao time que tocava a extensão do VSCode.
https://community.intersystems.com/post/intersystems-joins-open-source-objectscript-vs-code-effort
Durante a Global Summit 2020, foi lançada a versão 1.0 da extensão
https://community.intersystems.com/post/objectscript-extension-vs-code-reaches-10
Assim como você mencionou, o VSCode ainda não oferece suporte para aos wizards de criação de adapters, BPL, etc.
Essas funcionalidades parecem estar já nos planos da equipe. Aqui um link para o SOAP Wizard e como fazer um "workaround" até a funcionalidade não sair.
https://github.com/intersystems-community/vscode-objectscript/issues/325
Esse é o que eu tenho conhecimento a respeito dos esforços do VSCode.
Mas, como experiência/opinião pessoal, fiquei muito feliz com a aposta no VSCode ao invés do Atelier.
Sempre achei o Atelier/Eclipse uma IDE super pesada para o que oferece. ![]()
Abraços e espero ter ajudado
O pessoal do VSCode tem um canal no Discord. Lá da para acompanhar os novos releases, tirar umas dúvidas e possui alguns vídeos mostrando o workflow com a extensão do VSCode
E a Developer Community também tem um canal no Discord! 😃
Parabéns a todos os desenvolvedores que dedicaram um tempo de suas vidas para criarem aplicações, artigos, videos.
Parabéns a toda a equipe que mantém a Community, trabalhando para que cada vez mais e mais desenvolvedores se interessem pela Comunidade, competições, ajudando assim todos nós.
Até uma próxima oportunidade
Opa, tudo bem?
Eu tenho utilizado Docker e seu uso tem se mostrado muito mais simples e prático.
Nesse link, tem o passo a passo de como subir o ambiente utilizando essa estrutura. No começo pode parecer meio "estranho", mas você logo se acostuma com a praticidade.
Abaixo uma sequência de respostas marcadas como "Accepted answer" no post original
Talvez passando o ID do objeto em algo parecido com isso:
Query GetInfo(refId As %String) As %SQLQuery(CONTAINID = 1, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String")
{
SELECT list.IdList, list.IdProcess, list.Duration
FROM Kurro.MyClass list
JOIN Kurro.MyClass ref on ref.ID = :refId
AND ref.KeyProcess = list.KeyProcess
AND ref.CodeSpecialist = list.CodeSpecialist
AND ref.CodeProvider = list.CodeProvider
AND ref.CodeCenter = list.CodeCenter
AND ref.Date = list.Date
}resposta por @Timothy Leavitt
É uma boa ideia, mas eu não tem o ID da linha.
Minha ideia era usar o objeto como um parâmetro e passar um monte de valores, e a query leria estes valores, ao invés de passá-los uma a um nos parâmetros.
Eu mudei minha query com todos os parâmetros que eu preciso para executá-la
Query GetInfo(pKeyProcess As %String, pCodeSpecialist As %String, pCodeProvider As %String, pCodeCenter As %String, pDate as %TimeStamp) As %SQLQuery(CONTAINID = 1, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String")
{
SELECT IdList, IdProcess, Duration
FROM Kurro.MyClass
WHERE KeyProcess = :pKeyProcess
AND CodeSpecialist = :pCodeSpecialist
AND CodeProvider = :pCodeProvider
AND CodeCenter = :pCodeCenter
AND Date = :pDate
}Funciona, mas ainda preciso passar todos os parâmetros. Eu queria criar uma classe para passar todos os parâmetros, tipo um método em c#, e tentar usa-lo.
Valeu galera.
resposta por @Kurro Lopez
É um assunto interessante.
#2) Seu segundo exemplo não vai funcionar, porque não está passando um parâmetro de chamada.
#1) Não está previsto o uso de propriedades de objetos como variáveis de host em SQL
O código dá erro no método Execute gerado.
set tResult = tStatement.%Execute($g(pObject.KeyProcess),$g(pObject.CodeSpecialist),$g(pObject.CodeProvider),$g(pObject.CodeCenter),$g(pObject.Date))
$GET para propriedades de objeto não está implementado. É definido pela classe e está sempre lá.
Mas é necessário e faz sentido para propriedades multidimensionais!
Isto é válido para ObjectScript e não está relacionado a SQL.
Mas, escrevendo o código na mão, você pode usar $g(NOTHING,pObject.KeyProcess)
O gerador simplesmente não faz isso.
Workaround #1: Mexer diretamente no código gerado. Não recomendado.
Workaround #2: Mova suas propriedades com uma função auxiliar para variáveis locais e ajuste sua query a essas variáveis
example helper (with obj or id):
ClassMethod FillProp(pObject As Kurro.MyClass) As %Boolean [ SqlName = FILLP, SqlProc ]
{
if '$isObject(pObject) set obj=##class(Kurro.MyClass).%OpenId(pObject)
else set obj=pObject
set %Kurro("kp")=obj.KeyProcess
,%Kurro("sp")= obj.CodeSpecialist
,%Kurro("pr")= obj.CodeProvider
,%Kurro("cs")= obj.CodeCenter
,%Kurro("dt")= obj.Date
quit 1
}
Query exemplo:
Query GetInfoRcc(objid As %Integer) As %SQLQuery(CONTAINID = 0, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String")
{
SELECT IdList, IdProcess, Duration
FROM Kurro.MyClass
WHERE KeyProcess = :%Kurro("kp")
AND CodeSpecialist = :%Kurro("sp")
AND CodeProvider = :%Kurro("pr")
AND CodeCenter = :%Kurro("cs")
AND "Date" = :%Kurro("dt")
AND FILLP(:objid) = 1
}
Funciona como esperado.
resposta by @Robert Cemper
Você está implicitamente utilizando o método %Library.SqlQuery:Func(), no qual, como corretamente @Robert Cemper apontou, $get() é usado.
Você pode fazer dessa outra maneira:
Query GetInfo(pObject AS Kurro.MyClass) As %SQLQuery(CONTAINID = 1, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String") [ SqlProc ]
{
SELECT IdList, IdProcess, Duration
FROM Kurro.MyClass
WHERE KeyProcess = :pObject.KeyProcess
AND CodeSpecialist = :pObject.CodeSpecialist
AND CodeProvider = :pObject.CodeProvider
AND CodeCenter = :pObject.CodeCenter
AND "Date" = :pObject.Date
}set obj=##class(Kurro.MyClass).%New()
set obj.KeyProcess="1033004-1#"
set obj.CodeSpecialist = "surgery"
set obj.CodeProvider = "PR002"
set obj.CodeCenter = "CENTER-01"
set obj.Date = $ZDATETIME($ZDATETIMEH("2021-04-30 15:45:00",3,1),3,1)
set st=##class(%SQL.Statement).%New()
set sc=st.%PrepareClassQuery("Kurro.MyClass","GetInfo")
if $$$ISERR(sc) {write "%PrepareClassQuery failed:" do $System.Status.DisplayError(sc) quit}
set result=st.%Execute(obj)
do result.%Display()resposta por @Vitaliy Serdtsev
Opa @Jonathan Rafael Mathes
Eu fiz um monitoramento sem o Zabbix utilizando os próprios dados já fornecidos pelo Caché/IRIS
https://openexchange.intersystems.com/package/iris-history-monitor
Talvez consiga ter alguma outras ideias a respeito.
Espero que possa ser útil de alguma forma.
Abraços
Parabéns a todos os participantes! Excelente comunidade!
Excelente! Acredito que vai ser de muita utilidade, em especial para ambientes de homologação, onde você pode trazer dados da produção para ajudar nos testes.
Bom dia @Arian Botine
Até onde sei, o Studio não terá mais suporte de novas features. Apenas correções de bugs.
Todas as novidades estarão agora presentes no VSCode.
Alguns links que pode ser úteis para vocês:
https://community.intersystems.com/post/intersystems-joins-open-source-…
https://community.intersystems.com/post/objectscript-extension-vs-code-…
@Juliano Assis veja se esse conector atende suas necessidades.
https://openexchange.intersystems.com/package/iris-analytics-datastudio
Abraços
Oi @Davi Massaru Teixeira Muta
Traduzir artigos ajuda muito a comunidade (além de ganhar pontos)
Mas, para traduzir artigos tem um procedimento a ser feito. Dentro do artigo original, selecione o idioma para o qual quer traduzir:
Ao selecionar o idioma desejado, aparecerá as seguintes opções
A forma como você fez a tradução não deixa vinculado o seu texto ao texto original, você criou um novo artigo e colocou uma nota no final do seu texto. O autor original não tem conhecimento quando essa forma é utilizada.
Fazendo a tradução da forma correta, você deixa os créditos para o autor do texto original, ele tem ciência e tudo fica vinculado na comunidade.
Espero ter conseguido transmitir a forma correta para isso.
@Felipe Carvalho muito obrigado! 😃
Acho que todos nós que trabalhamos com tecnologia InterSystems temos esse desafio. Mostrar que não é um bicho de 7 cabeças, que não tem nada de alienígena numa global e que um $order não mata ninguém hahaha
E acho que o maior desafio de todos é provar que diferente do COBOL, a plataforma veio continuamente evoluindo