Nueva publicación

Encontrar

Pregunta
· 31 jul, 2024

How to get value from Zenpage component from Chrome/edge addon JS

Hi:

I have been adapting the IRIS WHIZ addon as part of the contest. I will soon fork the code on github so the changes are available. 

The next phase is I am storing the date from and to time for a more complete search cache 

zenPage.getComponent(36).value

it works in the chrome console ok 

I'm not sure in external JS how to set the page it is on as a zenpage to use the zenpage functions

3 comentarios
Comentarios (3)1
Inicie sesión o regístrese para continuar
Anuncio
· 31 jul, 2024

[Vidéo en anglais] Utilisation des planifications de tâches InterSystems IRIS par programmation

Bonjour la communauté,

Regardez cette vidéo pour apprendre à gérer par programmation les planifications de tâches à l'aide d'InterSystems IRIS, notamment la création, la modification et la suppression d'une tâche définie par l'utilisateur :

⏯ Utilisation des planifications de tâches InterSystems IRIS par programmation

Abonnez-vous à la chaîne YouTube InterSystems Developers pour rester à l'écoute !

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 31 jul, 2024 Lectura de 2 min

Arrêt gracieux d'IRIS sans accès au terminal : saveur *nix

Je me suis retrouvé dans la situation peu confortable de travailler avec un système Linux sur lequel quelqu'un avait accidentellement désactivé l'accès utilisateur au shell Linux. HealthConnect était en cours d'exécution, assurant la maintenance de centaines d'interfaces. Pour résoudre le problème d'accès, cependant, nous devions arrêter l'hôte pour l'application d'un correctif.

Sans le shell, la commande iris n'est pas disponible pour contrôler l'instance, nous étions donc confrontés au risque d'arrêter le serveur de manière inélégante. Nous voulions éviter cela si possible...

La routine ^SHUTDOWN était historiquement une option pour arrêter Caché, mais vous avez besoin d'une session de terminal pour l'exécuter (nous parlerons plus en détail de ce qui constitue une session de terminal dans une minute). Mais ^SHUTDOWN est désormais obsolète, et lorsque vous l'exécutez, vous obtenez le message "Veuillez utiliser la procédure 'iris stop' pour arrêter le système".

Alors rayez-la de la liste... et remplacez-la par INTNOSHUT^SHUTDOWN. Oui, l'exécution de cette commande arrêtera IRIS de manière élégante. Et oui, vous avez besoin d'un shell de commande IRIS pour l'exécuter. Alors, où pouvez-vous obtenir un shell de commande IRIS pour le système dont vous êtes exclu, demandez-vous ?

Dans le studio IRIS, qui n'existera plus très longtemps, bien sûr ! La fenêtre de sortie vous permet d'exécuter des commandes IRIS, et cela ne surprendra pas grand monde. Elle vous permettra certainement d'exécuter D INTNOSHUT^SHUTDOWN dans la fenêtre d'output (après avoir basculé vers l'espace de noms %SYS). Cependant, si vous faites exactement cela, IRIS commencera très probablement à s'arrêter puis à se bloquer, car Studio garde une session ouverte. Il se peut qu'il ne s'arrête jamais complètement, et vous n'auriez aucun moyen de le forcer à s'arrêter autrement qu'en arrêtant le système d'exploitation.

Cela dit, vous pouvez obtenir un arrêt complet en utilisant la commande JOB INTNOSHUT^SHUTDOWN, puis en quittant immédiatement Studio. IRIS s'arrêtera (plus probablement qu'improbable) en douceur et vous pourrez vous sentir mieux en faisant les choses de la "bonne" manière... même si cela semble faux.

En ce qui concerne la récupération de l'accès utilisateur au shell Linux, c'est un sujet pour un autre forum. Mais maintenant qu'IRIS est arrêté en toute sécurité, le problème d'accès peut être résolu (un certain démontage est probablement nécessaire).

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 30 jul, 2024 Lectura de 3 min

Previnindo o crescimento da base HSAUDIT

Introdução

Talvez você já tenha reparado que a base HSAUDIT não tem uma tarefa de expurgo já configurada na maioria das versões do HealthShare, e isso pode ser um problema já que ela tem mapeamentos de globais em vários namespaces.

Se você notou que essa base está ocupando muito espaço em disco e está com dificuldades de limpá-la, esse artigo é para você.

Se você já tem uma ideia de como fazer isso, mas está utilizando uma versão mais antiga do HealthShare, onde a tarefa não existe pronta, ou o PurgeByDaysToKeep não existe, esse artigo também é para você.

 

Passo a passo

Criar a classe de tarefa

Crie uma classe de expurgo que estende de %SYS.Task.Definition no namespace %SYS. Eu usei o nome custom.Task.Purge.ExpurgoHSAUDIT. Defina o parâmetro TaskName como uma string com o nome da tarefa e a propriedade KeepDays como a quantidade de dias para manter. Defina o método OnTask(). 

Class custom.Task.Purge.ExpurgoHSAUDIT Extends %SYS.Task.Definition
{

Parameter TaskName = "PurgeHSAUDIT";

Property KeepDays As %Integer;

Method OnTask() As %Status
{}
}

Dentro do método, vamos mudar de namespace para onde as globais de HSAUDIT estejam mapeadas e queremos expurgar. Vamos definir a data a de << KeepDays >> dias atrás e expurgar os dados como veremos a seguir.

A HSAUDIT é gerida pelo pacote  HS_IHE_ATNA_Repository, onde vamos encontrar algumas classes e métodos úteis para o expurgo. Primeiro, verificamos em HS.IHE.ATNA.Repository.Exclusion se os dados estão OK para expurgo com o método OKToPurge(). Depois, selecionamos os dados para expurgo na tabela HS_IHE_ATNA_Repository.Aggregation e deletamos com o método PurgeEvent() da classe Exclusion referida acima.

Method OnTask() As %Status
{
    Set tStatus = $$$OK
	Set tDate = $ZDATETIME($PIECE($HOROLOG, ",", 1)-..KeepDays,3)
	
	Do $ZUTIL(5,"NamespaceEDGE")
	
	If '##class(HS.IHE.ATNA.Repository.Exclusion).OKToPurge()
	{
		Set tStatus = $System.Status.Error(5001, "HS.IHE.ATNA.Repository.Exclusion returned NOT OK TO PURGE")
		Quit tStatus
	}
	
	Set tSQL="Select ID from HS_IHE_ATNA_Repository.Aggregation where IndexedDate < ?"
	SET tStatement = ##class(%SQL.Statement).%New()
	Set tStatus=tStatement.%Prepare(tSQL)
	
	If $System.Status.IsError(tStatus) Quit
	
	Set tResultSet=tStatement.%Execute(pDate)

	While tResultSet.%Next()
	{
		Set tId=tResultSet.%Get("ID")
		
		Do ##class(HS.IHE.ATNA.Repository.Exclusion).PurgeEvent(tId)
	}
	
	Quit tStatus
}
}

 

Por fim, retornamos um status. Você pode configurar esse mesmo método para repetir o código para todos os namespaces, ou definir o namespace como propriedade e configurar várias tarefas para cada namespace no próximo passo.

 

Configurar a tarefa

Abra o Portal de Administração da instância. Vá para Operação do Sistema > Gerenciador de Tarefas > Nova tarefa. Escolha a tarefa de nome definido no parâmetro TaskName no passo anterior. Escolha o namespace %SYS e a quantidade de dias a manter no parâmetro KeepDays. Escolha um usuário com acesso ao namespace %SYS e aos outros acessados na tarefa.
Selecione Avançar e defina a frequência de execução da tarefa.

 

Cuidado

Ao configurar essa tarefa no seu Edge, pode haver uma perda irrecuperável ao apagar os dados de auditoria. Leia com atenção a documentação antes de executá-la, em especial o aviso no link.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 30 jul, 2024 Lectura de 3 min

第九章 使用进程私有全局变量来支持非常大的消息

第九章 使用进程私有全局变量来支持非常大的消息

使用进程私有全局变量来支持非常大的消息

默认情况下、 Web 服务在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web 服务能够处理非常大的消息。

为此,请指定 Web 服务类的 USEPPGHANDLER 参数,如下所示:

Parameter USEPPGHANDLER = 1;

如果此参数为 1,则 Web 服务在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0,则 Web 服务始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web 服务使用默认值,通常是本地数组内存。

自定义 Web 服务的回调

可以通过覆盖其回调方法来定制 Web 服务的行为:

Comentarios (0)1
Inicie sesión o regístrese para continuar