New post

Encontrar

Article
· Nov 1, 2024 2m read

第八章 在 I O 命令中指定设备 - 通过 IRIS ID 指定设备

第八章 在 I/O 命令中指定设备 - 通过 IRIS ID 指定设备

通过 IRIS ID 指定设备

为了与其他 产品兼容并方便起见,可以通过设备编号(存储在设备表中)来引用设备。系统管理员可以使用管理门户将这些号码链接到设备。选择“系统管理” 、 “配置” 、 “设备设置” 、 “设备”以创建新设备或编辑现有设备。

系统管理员还可以将一个数字转换为另一个数字。因此,可以发出OPEN 47IRIS 会将其转换为OPEN 49

下表显示了设备编号。

Discussion (0)1
Log in or sign up to continue
Announcement
· Nov 1, 2024

开发者社区回顾, 十月 2024

您好,欢迎阅读 十月 2024 开发人员社区通讯。
统计信息
✓ 十月发布了 43 篇新帖子:
 37篇新文章
 5个新公告
 1个新问题
✓ 十月有 408 位新成员加入
✓ 所有时间发布了 2,251 篇帖子
✓ 所有时间有 2,431 位成员加入
最高职位
本月最佳作家
文章
#InterSystems IRIS
 
#InterSystems IRIS for Health
第三十七章 结合加密和签名 - 安全标头元素的顺序
按姚 鑫
第三十八章 验证和解密入站消息 - 实例身份验证和 WS-Security
按姚 鑫
第三十九章 创建安全对话
按姚 鑫
第四十章 创建安全对话 - 启用 IRIS Web 服务以支持 WS-SecureConversation
按姚 鑫
第四十一章 创建安全对话 - 使用 SecurityContextToken
按姚 鑫
FHIR Object Model 简介
按Louis Lu
第四十二章 使用 WS-ReliableMessaging
按姚 鑫
在 IRIS 中使用 Foreign Table(外部表)
按Jingwei Wang
第四十三章 使用 WS-ReliableMessaging - 对 WS-ReliableMessaging 标头进行签名
按姚 鑫
FHIRValidation - 用IRIS验证你自己的FHIR IG
按Nicky Zhu
第四十四章 创建和添加 SAML 令牌
按姚 鑫
第四十五章 创建和添加 SAML 令牌 - 变体:不使用 BinarySecurityToken
按姚 鑫
第四十六章 创建和添加 SAML 令牌 - SubjectConfirmation 使用方法 Holder-of-key
按姚 鑫
第四十七章 创建和添加 SAML 令牌 - SubjectConfirmation与 EncryptedKey
按姚 鑫
第四十八章 解决安全问题
按姚 鑫
第四十九章 解决安全问题 - 可能出现的错误
按姚 鑫
第五十章 安全元素的详细信息
按姚 鑫
第五十一章 安全元素的详细信息 - EncryptedKey 详情
按姚 鑫
第五十二章 安全元素的详细信息 - EncryptedData 详情
按姚 鑫
第五十三章 安全元素的详细信息 - Signature 详情
按姚 鑫
第五十四章 安全元素的详细信息 - DerivedKeyToken 详情
按姚 鑫
第五十五章 安全元素的详细信息 - ReferenceList 详情
按姚 鑫
第一章 I O 输入 输出简介
按姚 鑫
第二章 I O 输入输出简介 - Open 命令
按姚 鑫
第三章 I O 输入输出简介 - Use 命令
按姚 鑫
第四章 I O 输入输出简介 - Read 命令
按姚 鑫
第五章 主设备、当前设备、空设备
按姚 鑫
第六章 主设备、当前设备、空设备
按姚 鑫
第七章 在 I O 命令中指定设备
按姚 鑫
 
公告
问题
十月, 2024Month at a GlanceInterSystems Developer Community
Discussion (0)0
Log in or sign up to continue
Announcement
· Nov 1, 2024

Developer Community Recap, October 2024

Hello and welcome to the October 2024 Developer Community Recap.
General Stats
135 new posts published in October:
 16 new articles
 36 new announcements
 79 new questions
 4 new discussions
890 new members joined in October
14,013 posts published all time
14,740 members joined all time
Top posts
Top authors of the month
Articles
#InterSystems IRIS
Improved code completion for object reference variables in VS Code ObjectScript
By Joel Solon
Control IRIS database schema changes with Liquibase
By Yuri Marx
How to use the FreeSpace query of the SYS.Database class to check the free space on the disk where the database is located
By Mihoko Iijima
eBPF: Tetragon Security for IRIS Workloads
By Ron Sweeney
Reviews on Open Exchange - #47
By Robert Cemper
LLM Models and RAG Applications Step-by-Step - Part I - Introduction
By Luis Angel Pérez Ramos
My personal approach to Vectors
By Robert Cemper
LLM Models and RAG Applications Step-by-Step - Part II - Creating the Context
By Luis Angel Pérez Ramos
What's the Catch?
By David Hockenbroch
LLM Models and RAG Applications Step-by-Step - Part III - Searching and Injecting Context
By Luis Angel Pérez Ramos
Maximum Number of Namespaces and Databases
By Tomoko Furuzono
Writing a user-defined aggregate function in IRIS - example: Median
By Timothy Leavitt
Use the Flexible Python Runtime Feature for IRIS on Windows Server
By Kate Lau
 
#InterSystems IRIS for Health
 
#Other
Helpful CCR Resources
By Ben Spead
 
Announcements
#InterSystems IRIS
Faster Vector Searches with Approximate Nearest Neighbor index -- now available in the Vector Search Early Access Program
By Thomas Dyar
[Video] Navigating SQL Privileges and Security in InterSystems IRIS
By Brenna Quirk
Managing InterSystems Servers – In-Person October 28-November 1, 2024 / Registration space available
By Larry Finlayson
Server Manager in VS Code - Better handling of changed passwords
By John Murray
InterSystems Package Manager (IPM) v0.9.0 Beta
By Timothy Leavitt
[Video] How We Used AI to Build Faster Sell More and Support Better
By Anastasia Dyubaylo
[Video] Using LLMs with InterSystems IRIS Interoperability Productions
By Anastasia Dyubaylo
Developer Meetup on Gen AI, RAG, Hallucinations [Nov 19, Cambridge, MA]
By Olga Zavrazhnova
Maintenance Releases 2023.1.5 & 2024.1.2 of InterSystems IRIS, IRIS for Health, & HealthShare HealthConnect are now available
By Bob Kuszewski
 
#Developer Community Official
 
#IRIS contest
 
#Global Masters
 
#Open Exchange
 
#InterSystems IRIS for Health
 
#Other
 
#Learning Portal
 
#Global Summit
 
#HealthShare
 
#InterSystems Ideas Portal
 
Questions
#InterSystems IRIS
Help Understanding Global Mappings and Sharing One SQL Table Across Multiple Namespaces
By Bransen Smith
Execute a routine with argument by name - Without using Xecute!
By omer
BP/External SQL Calls are creating IRIS.WorkQueue but is not purging the global
By Scott Roth
Possible contamination of full lock table between ECP application servers or via remote databases ?
By Norman W. Freeman
IRIS IDE limbo
By William Red Fox
Why is the XML export different when executed through various methods (VS Code, Studio, and the console)?
By Philippe Ebinger
I can't get to work WebTerminal in IRIS Health Connect 2023.1
By David Satorres
Performance tuning techniques - Emmanuel Katto Uganda
By Emmanuel Katto
How to convert IRIS from 8-bit into Unicode ?
By Norman W. Freeman
Simple Way To Compare Streams
By Carl Deitrich
How to Switch Namespaces and Access %SYS Namespace in an OpenAPI-Generated Classmethod?
By Alessandra Carena
Rename function in class %File is not removing files from the original folder
By Nisha Thomas
Connection to DB problem
By Lyubomyr Hamalii
Embedded Python - Errors with Numpy
By David Hockenbroch
How does VSCode work with multiple IRIS instance on the same server
By Michael Zheng
Is $system.OBJ.Load() thread safe ?
By Norman W. Freeman
Can InterSystems IRIS Data Platform 2019 be Integrated with Snowflake?
By Pavan Kumar Rayudu
Error Executing Stored Procedure in InterSystems Cache using SQL
By Qais Azam
How to view the patch version
By Martin Weissenborn
Can I add Dynamic Object or Iterator to BPL Context?
By Oliver Wilms
setting up ALB and Proxy container
By Jignesh Patel
How to get the native sql error in SQL outbound adapter?
By Kurro Lopez
cannot connect to the management portal but can connect to the web gateway - "Server is currently unavailable"
By Fred Gustafsson
Is there a way to programmatically import and export table data?
By Oleksandr Kyrylov
What is the entity for Event Source in User Audit Event?
By Dmitrij Vladimirov
How to search message details in LIVE based on MRN
By prashanth ponugoti
CORS Issue on Preflight (OPTIONS) Check
By Colin Nagle
Is there some tricks to make $system.obj.load() faster ?
By Norman W. Freeman
Rename a namespace has removed all my code
By Kurro Lopez
Load and compile error
By omer
IIS Routing Question
By Alin Soare
Business Process - Export Code with different versions
By Scott Roth
How to programmatically export individual HL7 schemas?
By Bransen Smith
How to programmatically export individual Data Lookup Tables?
By Bransen Smith
Running a routine by name in a non-conventional way?
By omer
IPM package command failure: zConstructTar+19^%ZPM.Utils.FileBinaryTar.1
By Jani Hurskainen
Sonatype Nexus as IPM repository?
By Jani Hurskainen
dynamic SQL in object script code
By Kaveh Kaviani
Using the other unit testing frameworks with IPM?
By Jani Hurskainen
Why does RAM usage differ between /api/monitor/metrics (Prometheus) and Zabbix?
By Anderson Negreli
 
#InterSystems IRIS for Health
Python.net Install
By Adam Lamore
How to call BO to other BO
By Kurro Lopez
Create - and use - custom setting in BPL
By Oliver Wilms
MRN Field
By Robert Stephens
Can a business host know that the production is trying to shut down?
By Otto Medin
Docker build with merge results in error
By John McBride
SQL Query Help
By Christine Nyamu
File generation issues while using $ZF(-100 asynchronously
By Ashok Kumar
Web gateway and management portal configuration in Mirrored environment
By Marykutty George
Help Needed: How to Ensure BPL ????? for All Asynchronous Calls Before Proceeding?͓̽
By Yone Moreno Jimenez
zToQuickXML+11^HS.SDA3.NVPair
By Shashvati Dash
IRIS SQL - query nested collection property
By Dmitrii Baranov
How to delete an old task
By Marykutty George
I want to test if two fields are numeric and positive, do subtraction, and test if the result is positive.
By Jonathan Harris
ForEach with Assign only returning the second looped aux value in foreach when sending from rule editor
By Mark OReilly
Problem with local (private) IPM registry
By Jani Hurskainen
How to configure local IPM registry authorization?
By Jani Hurskainen
git-source-control configuration for remote development
By Adam Raszkiewicz
 
#Caché
 
#Health Connect
 
#Open Exchange
 
#Ensemble
 
#InterSystems IRIS BI (DeepSee)
 
Discussions
October, 2024Month at a GlanceInterSystems Developer Community
Discussion (0)1
Log in or sign up to continue
Article
· Nov 1, 2024 12m read

Desenvolvendo Integrações com InterSystems IRIS - REST Outbound Adapter

Projeto 8 – REST Outbound Adapter

Olá. Vamos montar nossa próxima integração utilizando o adaptador SOAP Inbound Adapter chamando um BP que chamará um BO que utilizará o REST Outbound Adapter.

O BO que vamos construir irá chamar o nosso BS que montamos no artigo https://pt.community.intersystems.com/post/desenvolvendo-integra%C3%A7%C3%B5es-com-o-intersystems-iris-aplica%C3%A7%C3%A3o-rest mas, importante, note que poderíamos chamar qualquer serviço interno no nosso integrador ou outra instância IRIS, ou externo em qualquer outro sistema com esse adaptador.

Vamos agora criar as classes de mensagem da nossa integração. Vamos reaproveitar as classes de Request e Response do serviço que montamos no artigo citado acima:

Class ws.demo.msg.Request Extends Ens.Request
{

Property string1 As %String;

Property string2 As %String;

}

Class ws.demo.msg.Response Extends Ens.Response
{

Property saida As %String;

Property status As %Boolean;

Property mensagem As %String;

Property sessionId As %Integer;

}

Vamos agora montar nosso BS que utilizará o adaptador SOAP Inbound Adapter:

Class ws.concatena.bs.Service Extends EnsLib.SOAP.Service
{

Parameter ADAPTER = "EnsLib.SOAP.InboundAdapter";

Parameter SERVICENAME = "concatena";

Method entrada(pInput As ws.demo.msg.Request) As ws.demo.msg.Response [ WebMethod ]
{
              Set tSC=..SendRequestSync("bpConcatena",pInput,.tResponse)
              Quit tResponse
}

}

Com o BS ponto podemos acessar o WSDL do serviço, já que ele é um serviço SOAP:

 

Vamos utilizar este endereço para carregar o serviço no SoapUI. Para mais informações sobre o SoapUI veja o post https://pt.community.intersystems.com/post/desenvolvendo-intergra%C3%A7%C3%B5es-com-o-intersystems-iris que tem dados de instalação e download. Faremos isso mais à frente.

Agora vamos criar nosso BO. O código está abaixo:

Class ws.concatena.bo.Operation Extends EnsLib.REST.Operation
{

Parameter INVOCATION = "Queue";

Method concatena(pRequest As ws.demo.msg.Request, Output pResponse As ws.demo.msg.Response) As %Status
{
   
   Try {

      Set pResponse = ##class(ws.demo.msg.Response).%New()
      Set tURL=..Adapter.URL_"?string1="_pRequest.string1_"&string2="_pRequest.string2
      Set tSC=..Adapter.GetURL(tURL,.tHttpResponse)
      If $$$ISERR(tSC)&&$IsObject(tHttpResponse)&&$IsObject(tHttpResponse.Data)&&tHttpResponse.Data.Size {
         Set tSC=$$$ERROR($$$EnsErrGeneral,$$$StatusDisplayString(tSC)_":"_tHttpResponse.Data.Read())
         Set pResponse.saida = ""                              
         Set pResponse.status = 0
         Set pResponse.mensagem = $SYSTEM.Status.GetErrorText(tSC)
      } Else {
                If $IsObject(tHttpResponse) {
                             Set stream=tHttpResponse.Data
               set obj = ##class(%DynamicAbstractObject).%FromJSON(stream)
               If $IsObject(obj){  
                   If obj.status = 1
                   {
                                           Set pResponse.saida = obj.saida                              
                                           Set pResponse.status = 1
                                           Set pResponse.mensagem = ""
                                           Set pResponse.sessionId=..%SessionId
                   } Else {
                                           Set pResponse.saida = ""                              
                                           Set pResponse.status = 0
                                           Set pResponse.mensagem = obj.mensagem
                                           Set pResponse.sessionId=..%SessionId                                           
                   }
               } Else {
                             Set pResponse.saida = ""                              
                             Set pResponse.status = 0
                             Set pResponse.mensagem = "Objeto não formado"
                             Set pResponse.sessionId=..%SessionId                          
                             }
                } Else {
               Set pResponse.saida = ""                              
               Set pResponse.status = 0
               Set pResponse.mensagem = "Falha na chamada do serviço REST"  
               Set pResponse.sessionId=..%SessionId            
                }
      }
   }Catch{
       Set tSC=$$$SystemError
       Set pResponse.saida = ""                              
       Set pResponse.status = 0
       Set pResponse.mensagem = $SYSTEM.Status.GetErrorText(tSC)
       Set pResponse.sessionId=..%SessionId   
   }
   Quit $$$OK
}

XData MessageMap
{
<MapItems>
  <MapItem MessageType="ws.demo.msg.Request">
    <Method>concatena</Method>
  </MapItem>
</MapItems>
}

}

Note que nosso BO estende de EnsLib.REST.Operation  por herança, e este por sua vez utiliza o adaptador EnsLib.HTTP.OutboundAdapter para as operações. Como nosso BO herda desta superclasse então esse parâmetro vem para nosso componente.

No nosso código utilizamos o método GetURL que irá chamar a URL informada com o verbo HTTP GET utilizando o servidor que está configurado no adaptador na produção (veremos como fazer isso mais à frente):

Set tURL=..Adapter.URL_"?string1="_pRequest.string1_"&string2="_pRequest.string2

Veja que utilizamos o parâmetro URL do adaptador, que é montado a partir das informações que serão preenchidas na production na configuração do nosso BO, e acrescentamos a query string que são os parâmetros que recebemos de entrada no nosso Request. Note que entre a chamada da URL e a query string temos o caracter “?” e separando cada parâmetro da query string temos o caracter “&”. Esta é a lei de formação deste tipo de chamada.

A resposta recebida da chamada HTTP é um JSON que está dentro de um stream.

Transformamos esse stream em um objeto com a chamada abaixo:

##class(%DynamicAbstractObject).%FromJSON(stream)  e uma vez que temos o objeto

Após criado podemos então manipular o objeto dentro do nosso código com facilidade.

Agora vamos montar nosso BP. Ele terá apenas a chamada ao nosso BO:

E o código do BP:

/// 
Class ws.concatena.bp.Process Extends Ens.BusinessProcessBPL [ ClassType = persistent, ProcedureBlock ]
{

/// BPL Definition
XData BPL [ XMLNamespace = "http://www.intersystems.com/bpl" ]
{
<process language='objectscript' request='ws.demo.msg.Request' response='ws.demo.msg.Response' height='2000' width='2000' >
<sequence xend='200' yend='350' >
<call name='boConcatena' target='boConcatena' async='0' xpos='200' ypos='250' >
<request type='ws.demo.msg.Request' >
<assign property="callrequest" value="request" action="set" languageOverride="" />
</request>
<response type='ws.demo.msg.Response' >
<assign property="response" value="callresponse" action="set" languageOverride="" />
</response>
</call>
</sequence>
</process>
}

Storage Default
{
<Type>%Storage.Persistent</Type>
}

}

Veja o post https://pt.community.intersystems.com/post/desenvolvendo-integra%C3%A7%C3%B5es-com-intersystems-iris-call-no-business-process para mais detalhes da montagem de um CALL em um BP.

Vamos colocar nosso BS na production. Abra o Painel de Administração e vá para a nossa production de teste. Clique no botão (+) ao lado do nome Services e preencha a tela a seguir com os dados apresentados:

 

Agora volte a production e clique no nome do nosso BS (ws.concatena.bs.Service) e veja a configuração dele. Expanda a área Parâmetros de Conexão e marque a caixa Habilitar Requisições Padrão conforme a tela abaixo:

 

A seguir clique em Atualizar e nosso BS estará pronto.

 

Volte a tela da production. Clique no botão (+) ao lado do Operations e preencha a tela conforme abaixo:

Vamos agora entrar na configuração do nosso BO e terminar de ajustar o acesso. Vá em Parâmetros Básicos e preencha conforme a tela abaixo:

Em Servidor HTTP informe o endereço local do nosso ambiente, Porta HTTP informe 80 que é a porta padrão de requisições HTTP sem SSL, e em URL o caminho configurado para nossa API REST (/api/service/entrada).

Lembre que aqui você também pode usar o TCPTRACE para monitorar o tráfego entre a chamada do nosso BO e o serviço REST que estamos chamando. Para isso ative o TCPTRACE e no parâmetro Porta HTTP do nosso BP informe a porta em que o TCPTRACE está escutando as requisições.

IMPORTANTE: Você precisará ter feito os passos descritos no artigo https://pt.community.intersystems.com/post/desenvolvendo-integra%C3%A7%C3%B5es-com-o-intersystems-iris-aplica%C3%A7%C3%A3o-rest para ter esse serviço que será consumido aqui montado e configurado no seu ambiente.

Agora vamos para o nosso BP. Clique no botão (+) ao lado de Processes e preencha a tela com o dado do nosso BP:

 

Clique em OK e o BP será colocado na production. Agora veja como a production ficou:

 

 

Vamos agora carregar o WSDL do nosso BS no SoapUI. Para mais informações sobre o SoapUI veja o artigo https://pt.community.intersystems.com/post/desenvolvendo-intergra%C3%A7%C3%B5es-com-o-intersystems-iris-soap-inbound-adapter

 

Abra o SoapUI, vá em File->New SOAP Project e preencha o campo Initial WSDL com o endereço do WSDL do nosso BS:

Clique em OK, navegue no nosso projeto e vamos ter a interface criada:

 

 

Agora no SoapUI faça um teste. Preencha os campos string1 e string2 do nosso Request e envie a requisição. Clique no botão de play e veja a resposta recebida:

Veja a resposta recebida no SoapUI:

HTTP/1.1 200 OK

Cache-Control: no-cache

Pragma: no-cache

Content-Length: 460

Content-Type: text/xml; charset=UTF-8

Expires: Thu, 29 Oct 1998 17:04:19 GMT

Server: Microsoft-IIS/10.0

Date: Fri, 01 Nov 2024 14:39:15 GMT

 

<?xml version="1.0" encoding="UTF-8" ?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:s='http://www.w3.org/2001/XMLSchema'>

  <SOAP-ENV:Body><entradaResponse xmlns="http://tempuri.org"><entradaResult><saida>Lua Azul</saida>

<status>true</status><mensagem></mensagem><sessionId>2496</sessionId></entradaResult></entradaResponse></SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Vá no Integrador e veja o trace da mensagem que você recebeu em sessionId (2496). Veja o primeiro trecho do trace com os dados de entrada:

E agora clique no último trecho e veja ops dados que foram retornados ao BS:

Assim realizamos o consumo de um serviço REST com o integrador. Utilizamos o verbo GET para recuperar uma informação.

Nós poderíamos ter utilizado um adaptador REST de entrada conforme vimos no artigo https://pt.community.intersystems.com/post/desenvolvendo-integra%C3%A7%C3%B5es-com-o-intersystems-iris-aplica%C3%A7%C3%A3o-rest e também poderíamos estar realizando diversas chamadas a partir do BP, realizando orquestração a diversos BOs, recuperando outras informações, e compondo um Response com dados vindos de diversas fontes.

Lembre-se que também  podemos colocar o TCPTRACE para verificar o tráfego que corre entre o SoapUI e o nosso BS, o que é especialmente útil em situações de teste.

Com isso concluímos esta integração. Utilizamos em nosso teste o IRIS 2024.1 que está disponível para download na sua versão Community na internet.

Discussion (0)1
Log in or sign up to continue
Article
· Nov 1, 2024 1m read

QuinielaML - Predicción de la 19ª jornada de la Quiniela

Vamos con la 19ª jornada de la Quiniela, esta jornada está afectada por los terribles acontecimientos acaecidos en Valencia durante esta semana por lo que se han suspendido aquellos partidos de los equipos valencianos, por lo que posiblemente sus valores en la quiniela se hagan por sorteo.

Estos son los partidos que entran en la Quiniela:

Aquí tenemos los partidos de Primera División:

Y aquí tenemos la Segunda:

Veamos la Quiniela resultante:

Pues nada, ya tenemos la previsión de la jornada. Suerte a todos.

2 Comments
Discussion (2)1
Log in or sign up to continue