查找

文章
· 七月 28 阅读大约需 8 分钟

Creación de documentos Word avanzados con IRIS

Los documentos de Word se utilizan ampliamente en el mercado. Los usuarios crean con frecuencia contratos, memorandos, currículums, informes, análisis y otros documentos que pueden requerir datos de InterSystems IRIS o que este los capture. Sin embargo, IRIS no dispone de una API, SDK, biblioteca ni adaptador para ello. Esta limitación ya no existe.

La nueva biblioteca de Open Exchange, iris4word (https://openexchange.intersystems.com/package/iris4word), ofrece un SDK de ObjectScript donde el desarrollador pasa cualquier %DynamicObject como parámetro, una plantilla de archivo de Word y recibe un documento listo para usar, con la estructura y el formato definidos en su plantilla.


Para utilizar iris4word

Este artículo utilizará una API REST para obtener el contenido, pero también es posible consultar la base de datos. Para instalar iris4word y el ejemplo que lo utiliza, siga estos pasos:

  1. Si utiliza IPM/ZPM: zpm:USER>install iris4word
  2. Si usas Docker: 
    1. git clone https://github.com/yurimarx/iris4word.git
    2. docker-compose up -d --build
  3. Abra el Postman (para ejecutar el ejemplo de API REST)
  4. Importar la colección de muestras desde (https://raw.githubusercontent.com/yurimarx/iris4word/refs/heads/master/iris4word.postman_collection.json): 
  5. Sube la plantilla de archivo template.docx (en la ruta sample/template.docx de este repositorio o desde https://raw.githubusercontent.com/yurimarx/iris4word/refs/heads/master/sample/template.docx). Para cargar, complete el campo de archivo en la pestaña Body: 
  6.  El proceso de carga enviará la plantilla al servidor para que la utilice iris4word.
  7. Abra el documento de Word 2. Descargue y copie y pegue en el cuerpo este contenido JSON: 
    {
      "company": {
        "name": "ACM Ltda.",
        "address": "Main Street, 123",
        "city": "New York",
        "state": "NY"
      },
      "projects": [
        {
          "name": "System Development X",
          "beginDate": "2024-01-01",
          "endDate": "2024-06-06",
          "team": [
            {"name": "John Star", "role": "Senior Developer"},
            {"name": "Marie Loo", "role": "BDM"}
          ],
          "tasks": [
            {"description": "Requirements", "status": "Done"},
            {"description": "Development", "status": "Doing"}
          ]
        },
        {
          "name": "ERP Development Y",
          "beginDate": "2024-03-03",
          "endDate": "2025-12-12",
          "team": [
            {"name": "Peter Rogers", "role": "Project Manager"},
            {"name": "Robert Plant", "role": "ERP Specialist"}
          ],
          "tasks": [
            {"description": "ERP configuration", "status": "Done"},
            {"description": "User training", "status": "Doing"}
          ]
        }
      ],
      "principalContact": {
        "name": "Carlos Olivera",
        "email": "carlos.olivera@company.com",
        "phone": "+1 555 555-555"
      }
    }
     
  8. En el botón Enviar, seleccione la opción Send and Download:
  9. Vea los resultados:
  10. Compare el contenido JSON con la plantilla.docx y vea las marcas y etiquetas utilizadas.

Entre bastidores

Es muy fácil, con el archivo de plantilla guardado en /tmp/template.docx, simplemente llámelo:

ClassMethod DownloadDoc(template As %String) As %Status
{
    Set tUUID = $System.Util.CreateGUID() 
    Set filePath = "/tmp/"_tUUID_".docx"
    Set jsonContentString = {}.%FromJSON(%request.Content)
    Set sc = ##class(dc.iris4word.WordUtil).GenerateWordFileFromJSON(jsonContentString.%ToJSON(), "/tmp/"_template_".docx", filePath)

    Set %response.NoCharSetConvert=1
    Set %response.Headers("Access-Control-Allow-Origin")="*"
    Do %response.SetHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document")
    Do %response.SetHeader("Content-Disposition","attachment;filename="""_tUUID_".docx"_"""")
    
    Set stream=##class(%Stream.FileBinary).%New()
    Set sc=stream.LinkToFile(filePath)
    Do stream.OutputToDevice()
    
    Return sc
}

El método de clase ##class(dc.iris4word.WordUtil).GenerateWordFileFromJSON recibe los datos en forma de %DynamicObject, la ruta de la plantilla de Word y la ruta del archivo donde se creará el documento final. Ahora tienes un archivo de Word para enviar al usuario como respuesta. ¡Muy fácil!

El lenguaje de plantilla

iris4word le ofrece un lenguaje de plantilla flexible para componer documentos de Word dinámicos utilizando el editor de Microsoft Word.

Text tag

La etiqueta de texto es el tipo de etiqueta más básico en la plantilla de Word. {{name}} se reemplazará por el valor de la clave name en el modelo de datos. Si la clave no existe, la etiqueta se borrará (el programa puede configurar si se conserva la etiqueta o se lanza una excepción).

Template:

{{name}} always said life was like a box of {{thing}}.

Producción:

Mama always said life was like a box of chocolates.

Picture tag

La etiqueta de imagen empieza con @. Por ejemplo, {{@logo}} buscará el valor con la clave del logo en el modelo de datos y reemplazará la etiqueta con la imagen. Los datos correspondientes a la etiqueta de imagen pueden ser una URL simple, una cadena de ruta o una estructura que contenga el ancho y el alto de la imagen.

Template:

Fruit Logo:
watermelon {{@watermelon}}
lemon {{@lemon}}
banana {{@banana}}

Producción:

Fruit Logo:
watermelon 🍉
lemon 🍋
banana 🍌

Numeración

La etiqueta de lista corresponde a la lista de símbolos o lista numerada de Word, que comienza con *, como {{*number}}.

Template:

{{*list}}


Producción:

● Plug-in grammar
● Supports word text, pictures, table...
● Templates, not just templates, but also style templates

Secciones

Una sección se compone de dos etiquetas, una antes y otra después. La etiqueta de inicio se identifica con ? y la etiqueta de fin, con /. Por ejemplo, {{?section}} es la etiqueta de inicio del bloque de secciones, {{/section}} es la etiqueta de fin y "section" es el nombre de esta sección.

Las secciones son muy útiles al procesar una serie de elementos de documento. Los elementos de documento (texto, imágenes, tablas, etc.) ubicados en una sección pueden renderizarse cero, una o N veces, según el valor de la sección.

Valores falsos o colección vacía

Si el valor de la sección es nulo, falso o una colección vacía, no se mostrarán todos los elementos del documento ubicados en la sección, de forma similar a la condición de la sentencia if, que es falsa.

Modelo de datos:

{
  "announce": false
}
Template:

Made it,Ma!{{?announce}}Top of the world!{{/announce}}
Made it,Ma!
{{?announce}}
Top of the world!🎋
{{/announce}}

Producción:

Made it,Ma!
Made it,Ma!

Valores no falsos y no una colección

Si el valor de la sección no es nulo, falso ni una colección, todos los elementos del documento de la sección se renderizarán una vez, de forma similar a la condición de que la instrucción if sea verdadera.

Modelo de datos:

{
  "person": { "name": "Sayi" }
}
Template:

{{?person}}
  Hi {{name}}!
{{/person}}

Producción:

  Hi Sayi!

Colección no vacía

Si el valor de la sección es una colección no vacía, los elementos del documento de la sección se repetirán una o N veces, según el tamaño de la colección, de forma similar a la sintaxis foreach.

Modelo de datos:

{
  "songs": [
    { "name": "Memories" },
    { "name": "Sugar" },
    { "name": "Last Dance" }
  ]
}
Template:

{{?songs}}
{{name}}
{{/songs}}

Producción:

Memories
Sugar
Last Dance
In the loop, a special tag {{=#this}} can be used to directly refer to the object of the current iteration.

Modelo de datos:

{
  "produces": [
    "application/json",
    "application/xml"
  ]
}
Template:

{{?produces}}
{{=#this}}
{{/produces}}

Producción:

application/json
application/xml

El código Java desarrollado para crear la biblioteca iris4word

iris4word se creó con Java. InterSystems IRIS admite el uso de bibliotecas Java con la función de puerta de enlace externa de Java:

ClassMethod GenerateWordFileFromJSON(jsonContent As %String, wordTemplateFileName As %String, wordFileName As %String) As %Status
{
    Set tSC = $$$OK
    Try {
        
        set javaGate = $system.external.getJavaGateway()  
        do javaGate.addToPath($SYSTEM.Util.BinaryDirectory()_"iris4word-1.0.0-jar-with-dependencies.jar")
        set wordUtil = javaGate.new("iris4word.WordUtil")
...
}

La instrucción $system.external.getJavaGateway devolvió un motor Java y addToPath nos permite usar el archivo iris4word-1.0.0.0-jar-with-dependencies.jar. Esta biblioteca tiene la implementación de iris4word:

package iris4word;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.Map;

public class WordUtil {

    public void createFromFile(String jsonFileName, String wordTemplateFileName, String wordFileName) {
        
    	java.util.logging.Logger julLogger2 = java.util.logging.Logger.getLogger("com.deepoove.poi.render.processor.LogProcessor");
    	julLogger2.setLevel(java.util.logging.Level.OFF);
    	
    	java.util.logging.Logger julLogger = java.util.logging.Logger.getLogger("org.slf4j.Logger");
        julLogger.setLevel(java.util.logging.Level.OFF);
        
    	ObjectMapper objectMapper = new ObjectMapper(); 
    	XWPFTemplate template = null;
    	
        try {
            File jsonFile = new File(jsonFileName);
            
            @SuppressWarnings("unchecked")
			Map<String, Object> data = objectMapper.readValue(jsonFile, Map.class);

            Configure config = Configure.builder().build();

            template = XWPFTemplate.compile(wordTemplateFileName, config).render(data);

            template.writeToFile(wordFileName);
            

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        	if(template != null) {        		
        		try {
					template.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
        	}
		}
    }
	
}

Iris4word utilizó la biblioteca de código abierto poi-tl (paquete com.deepoove.poi) para renderizar plantillas de Word con datos dinámicos. Iris4word transformó los datos JSON al formato poi-tl, los convirtió a poi-tl, ejecutó el proceso de renderizado y obtuvo el documento de Word. El documento se guardó en el disco para su uso en código ObjectScript.

ClassMethod GenerateWordFile(jsonFileName As %String, wordTemplateFileName As %String, wordFileName As %String) As %Status
{
    Set tSC = $$$OK
    Try {
        
        set javaGate = $system.external.getJavaGateway()  
        do javaGate.addToPath($SYSTEM.Util.BinaryDirectory()_"iris4word-1.0.0-jar-with-dependencies.jar")
        set wordUtil = javaGate.new("iris4word.WordUtil") 
        
        do wordUtil.createFromFile(jsonFileName, wordTemplateFileName, wordFileName)
        
    }
    Catch ex {
        Set tSC=ex.AsStatus()
    }

    return tSC
}

Este proyecto demuestra cómo no solo Python, sino también Java, pueden ampliar significativamente la funcionalidad de IRIS. ¡Disfrútalo!

讨论 (0)1
登录或注册以继续
问题
· 七月 28

Schema Design Best Practices for Cross-Departmental Data Lakes in IRIS

We’re building out a data lake in IRIS 2025.1 that aggregates data across multiple business systems and departments. I’m trying to establish best practices for schema design and separation.

Right now, I’m thinking of using a separate schema for each distinct system of record feeding into the data lake - for example, one schema per upstream source system, rather than splitting based on function (e.g. staging, raw, curated). The idea is that this would make it easier to manage source ownership, auditing, and pipeline logic, especially when multiple domains are contributing data.

But I’d love to hear what others have done. Specifically:

  • What’s the best way to structure schemas in a cross-departmental data lake?
  • Do you separate by source system, business function, or lifecycle stage?
  • Are there downsides to having many small schemas instead of one large shared schema?
  • How do you manage naming, discoverability, and access control across schemas?

Any examples, patterns, or anti-patterns would be helpful.

Thanks!

讨论 (0)2
登录或注册以继续
公告
· 七月 28

[Demo Video] IRIS As Healthcare Data Infrastructure

#InterSystems Demo Games entry


⏯️  IRIS As Healthcare Data Infrastructure

Data, as a new type of production resource, has received increasing attention. The current economic development situation has raised many new demands for how to create usable value from data at scale. In reality, siloed systems, inconsistent data semantics, and difficulties in data deployment have greatly hindered the development of the data economy. InterSystems IRIS, as an integrated data platform, provides many capabilities to help enterprises and healthcare institutions open up data and leverage data value. In this demonstration, we will describe what challenges the data economy poses for data production, and how IRIS addresses these issues using its rich and powerful features.

Presenters:
🗣 @Nicky Zhu, Senior Sales Engineer, InterSystems
🗣 @Qiao Peng, Regional Sales Engineer Manager, InterSystems

👉 Like this demo? Support the team by voting for it in the Demo Games!

讨论 (0)1
登录或注册以继续
InterSystems 官方
· 七月 28

Aviso sobre IRISSECURITY no InterSystems IRIS 2025.2

O InterSystems IRIS 2025.2 apresenta o banco de dados IRISSECURITY, o novo lar para dados de segurança. Ao contrário do IRISSYS, o antigo lar para dados de segurança, o IRISSECURITY pode ser criptografado, o que protege seus dados confidenciais em repouso. Em uma versão futura, o IRISSECURITY será espelhado.

Esta versão também apresenta a função %SecurityAdministrator para tarefas gerais de administração de segurança.

As alterações descritas aqui afetam tanto as versões de entrega contínua (CD) quanto as de manutenção estendida (EM). Ou seja, a partir das versões 2025.2 (CD, lançada em 23 de julho de 2025) e 2026.1 (EM), o InterSystems IRIS incluirá o banco de dados IRISSECURITY, e todos os dados de segurança serão movidos automaticamente do IRISSYS para o IRISSECURITY ao atualizar.

Embora o lançamento do InterSystems IRIS 2025.2 esteja previsto para 23 de julho de 2025, estamos adiando o lançamento público do InterSystems IRIS for Health e do HealthShare Health Connect 2025.2 enquanto concluímos o trabalho em um plano de correção para um problema de espelhamento conhecido que afeta os dados de configuração do OAuth.

Antes de atualizar

IRISSECURITY faz várias mudanças potencialmente drásticas na maneira como os usuários interagem com dados de segurança:

  • Os usuários não podem mais acessar diretamente os recursos globais de segurança e, em vez disso, devem usar as APIs fornecidas pelas diversas classes de segurança.
  • Os recursos globais OAuth2 não podem mais ser mapeados para um banco de dados diferente.
  • Os usuários não podem mais consultar tabelas de segurança arbitrariamente, mesmo quando a segurança SQL estiver desabilitada.
  • Os bancos de dados do sistema agora usam recursos predefinidos que não podem ser alterados. No Unix, se você criou e atribuiu um novo recurso a um banco de dados do sistema em uma versão anterior, ele será substituído pelo recurso predefinido durante a atualização (embora, se alguma função fizer referência ao recurso não padrão, ela deverá ser alterada manualmente para usar o recurso padrão e manter o acesso ao banco de dados). No Windows, você deve alterar o recurso de volta para o padrão. Se você tentar atualizar no Windows enquanto os bancos de dados tiverem recursos não padrão, a atualização será interrompida (a instância não será modificada) e exibirá a mensagem de erro "O banco de dados deve ter um rótulo de recurso de..."

As seções a seguir detalham essas alterações e o que você deve fazer se depender do comportamento original, mas, em geral, antes de atualizar, você deve verificar e testar se seus aplicativos e macros:

  • Utilize as APIs de segurança fornecidas para administrar a segurança (em vez do acesso global direto).
  • Tenha as permissões necessárias (%DB_IRISSYS:R e Admin_Secure:U) para usar essas APIs.

Acesso Global

Anteriormente, quando os dados globais de segurança eram armazenados no banco de dados IRISSYS, os usuários podiam acessar os dados de segurança com os seguintes privilégios:

  • %DB_IRISSYS:R: Lê informações globais de segurança diretamente e por meio de APIs de segurança.
  • %DB_IRISSYS:RW: Lê e grava informações globais de segurança.
  • %DB_IRISSYS:RW e Admin_Secure:U: Administra a segurança por meio de APIs de segurança.

No InterSystems IRIS 2025.2:

  • Os usuários não podem mais acessar os globais de segurança diretamente.
  • %DB_IRISSYS:R e %Admin_Secure:U são os privilégios mínimos necessários para acessar dados de segurança (por meio das APIs de segurança fornecidas) e administrar a segurança por meio das diversas classes de segurança.
  • Para administração geral de segurança, você pode usar a nova função %SecurityAdministrator.
  • O acesso somente leitura aos dados de segurança (anteriormente disponível por meio de %DB_IRISSYS:R) foi removido.

Local das Globais 

No InterSystems IRIS 2025.2, as seguintes globais de segurança foram movidos do IRISSYS para o global ^SECURITY localizado no IRISSECURITY:

  • ^SYS("SECURITY")
  • ^OAuth2.*
  • ^PKI.*
  • ^SYS.TokenAuthD

The following table lists the most notable globals that have been moved, their security classes, old locations, and new locations:

Classe de Segurança Local anterior (IRISSYS) Nova Localização (IRISSECURITY)
N/A ^SYS("Security","Version") ^SECURITY("Version")
Security.Applications ^SYS("Security","ApplicationsD") ^SECURITY("ApplicationsD")
Security.DocDBs ^SYS("Security","DocDBsD") ^SECURITY("DocDBsD")
Security.Events ^SYS("Security","EventsD") ^SECURITY("EventsD")
Security.LDAPConfigs ^SYS("Security","LDAPConfigsD") ^SECURITY("LDAPConfigsD")
Security.KMIPServers ^SYS("Security","KMIPServerD") ^SECURITY("KMIPServerD")
Security.Resources ^SYS("Security","ResourcesD") ^SECURITY("ResourcesD")
Security.Roles ^SYS("Security","RolesD") ^SECURITY("RolesD")
Security.Services ^SYS("Security","ServicesD") ^SECURITY("ServicesD")
Security.SSLConfigs ^SYS("Security","SSLConfigsD") ^SECURITY("SSLConfigsD")
Security.System ^SYS("Security","SystemD") ^SECURITY("SystemD")
Security.Users ^SYS("Security","UsersD") ^SECURITY("UsersD")
%SYS.PhoneProviders ^SYS("Security","PhoneProvidersD") ^SECURITY("PhoneProvidersD ")
%SYS.X509Credentials ^SYS("Security","X509CredentialsD") ^SECURITY("X509CredentialsD ")
%SYS.OpenAIM.IdentityServices ^SYS("Security","OpenAIMIdentityServersD") ^SECURITY("OpenAIMIdentityServersD")
OAuth2.AccessToken ^OAuth2. AccessTokenD ^SECURITY("OAuth2.AccessToken ")
OAuth2.Client ^OAuth2.ClientD ^SECURITY("OAuth2.Client")
OAuth2.ServerDefinition ^OAuth2.ServerDefinitionD ^SECURITY("OAuth2.ServerDefinitionD")
OAuth2.Client.MetaData ^OAuth2.Client.MetaDataD ^SECURITY("OAuth2.Client.MetaDataD")
OAuth2.Server.AccessToken ^OAuth2.Server.AccessTokenD ^SECURITY("OAuth2.Server.AccessTokenD")
OAuth2.Server.Client ^OAuth2.Server.ClientD ^SECURITY("OAuth2.Server.ClientD")
OAuth2.Server.Configuration ^OAuth2.Server.ConfigurationD ^SECURITY("OAuth2.Server.ConfigurationD")
OAuth2.Server.JWTid ^OAuth2.Server.JWTidD ^SECURITY("OAuth2.Server.JWTidD")
OAuth2.Server.Metadata ^OAuth2.Server.MetadataD ^SECURITY("OAuth2.Server.MetadataD")
PKI.CAClient ^PKI.CAClientD ^SECURITY("PKI.CAClient")
PKI.CAServer ^PKI.CAServerD ^SECURITY("PKI.CAServer")
PKI.Certificate ^PKI.CertificateD ^SECURITY("PKI.Certificate")
%SYS.TokenAuth ^SYS.TokenAuthD ^SECURITY("TokenAuthD")

Mapeamento da global OAuth2

Anteriormente, era possível mapear globais OAuth2 para um banco de dados diferente, o que permitia o espelhamento das configurações OAuth2.

No InterSystems IRIS 2025.2, globais OAuth2 não podem mais ser mapeados e o IRISSECURITY não pode ser espelhado. Se você dependia desse comportamento para espelhamento, pode usar qualquer uma das seguintes soluções alternativas:

  • Faça alterações manualmente no primário e no failover.
  • Exporte as configurações do primário e importe-as para o failover (requer %ALL).

Para exportar dados de configuração do OAuth2:

set items = $name(^|"^^:ds:IRISSECURITY"|SECURITY("OAuth2"))_".gbl"
set filename = "/home/oauth2data.gbl"
do $SYSTEM.OBJ.Export(items,filename)

Para importar dados de configuração do OAuth2:

do $SYSTEM.OBJ.Import(filename)

Segurança SQL 

Anteriormente, a segurança do SQL era controlada pelo parâmetro DBMSSecurity do CPF. Quando o DBMSSecurity estava desabilitado, usuários com privilégios de SQL podiam consultar arbitrariamente todas as tabelas do banco de dados.

No InterSystems IRIS 2025.2:

 

  • O parâmetro DBMSSecurity foi substituído pela propriedade de segurança SQL para todo o sistema. Você pode defini-la de várias maneiras:
    • Portal de Gerenciamento: Administração do Sistema > Segurança > Segurança do Sistema > Parâmetros de Segurança para todo o Sistema > Habilitar segurança SQL
    • SetOption: ##class(%SYSTEM.SQL.Util).SetOption("SQLSecurity", "1")
    • Security.System.Modify: ##Class(Security.System).Modify(,.properties), onde properties é properties("SQLSecurity")=1
  • As tabelas de segurança agora só podem ser consultadas por meio das APIs de Detalhes e Listas, que exigem %DB_IRISSYS:R e %Admin_Secure:U mesmo quando a segurança SQL está desabilitada. 

Por exemplo, para obter uma lista de funções, você não pode mais consultar diretamente a tabela Security.Roles. Em vez disso, você deve usar a consulta Security.Roles_List():

SELECT Name, Description FROM Security.Roles_List()

Criptografando IRISSECURITY 

Para criptografar o IRISSECURITY, siga o seguinte procedimento:

  1. Crie uma nova chave de criptografia. Acesse Administração do Sistema > Criptografia > Criar Novo Arquivo de Chave de Criptografia e especifique o seguinte:
    • Arquivo Chave – O nome da chave de criptografia.
    • Nome do Administrador – O nome do administrador.
    • Senha – A senha para o arquivo de chave.
  2. Ative a chave de criptografia. Acesse Administração do Sistema > Criptografia > Criptografia do Banco de Dados e selecione Ativar Chave, especificando o Arquivo de Chave, o Nome do Administrador e a Senha da etapa 1.
  3. Acesse Administração do Sistema > Criptografia > Criptografia do Banco de Dados e selecione Configurações de Inicialização.
  4. No menu suspenso Ativação de Chave na Inicialização, selecione um método de ativação de chave. A InterSystems recomenda fortemente a ativação de chave interativa.
  5. No menu suspenso Criptografar Banco de Dados IRISSECURITY, selecione Sim.
  6. Reinicie o sistema para criptografar o IRISSECURITY.

Regras de acesso de classe %

Em versões anteriores do InterSystems IRIS, o procedimento para gerenciar o acesso de uma aplicação web a classes percentuais adicionais envolvia a gravação em globais de segurança. Você pode fazer isso no InterSystems IRIS 2025.2 por meio do Portal de Gerenciamento ou da rotina ^SECURITY.

Portal de Gerenciamento

Para criar uma regra de acesso de classe % com o Portal de Gerenciamento:

  1. Acesse System Administration > Security > Web Applications
  2. Selecione a sua aplicação web.
  3. Na aba Acesso a Classe %, defina as seguintes opções: 
    • Tipo: Controla se a regra se aplica ao acesso do aplicativo apenas à classe percentual especificada (AllowClass) ou a todas as classes que contêm o prefixo especificado (AllowPrefix).
    • Nome da classe: A classe % ou prefixo ao qual o aplicativo terá acesso.
    • Permissão de acesso: Se deve ou não conceder ao aplicativo acesso à classe ou pacote percentual especificado.
    • Adicionar o mesmo acesso a TODAS as aplicações: Se a regra deve ser aplicada a todos os aplicativos

^SECURITY 

Para criar uma regra de acesso de classe com a rotina ^SECURITY:

  1. No namespace %SYS, execute a rotina ^SECURITY:
    DO ^SECURITY
  2. Escolha as opções 5, 1, 8 e 1 para entrar no prompt da regra de acesso à classe. 
  3. Siga as instruções, especificando o seguinte:
    • Aplicação? – O nome da aplicação.
    • Tipo de permissão? – Se a regra se aplica à capacidade do aplicativo de acessar uma classe específica (AllowClass) ou todas as classes que contêm o prefixo especificado (AllowPrefix).
    • Classe or nome do pacote? – A classe ou prefixo ao qual o aplicativo terá acesso.
    • Permissão de acesso? – Se deve ou não conceder ao aplicativo acesso à classe ou pacote especificado.
讨论 (0)1
登录或注册以继续
摘要
· 七月 28

Publicações Desenvolvedores InterSystems, Julho 21 - 27, 2025, Resumo