Pesquisar

InterSystems Oficial
· Jul. 23

Annonce de la version 25.1 d'InterSystems Reports

InterSystems Reports version 25.1 est désormais disponible sur le site de distribution de logiciels InterSystems, dans la section Composants. Le logiciel, baptisé InterSystems Reports Designer et InterSystems Reports Server, est disponible pour les systèmes d'exploitation Mac OSX, Windows et Linux.

Cette nouvelle version apporte des améliorations et des correctifs de notre partenaire Insightsoftware. InterSystems Reports 25.1 est optimisé par Logi Report version 25.1, qui inclut :

  • la prise en charge de la construction dynamique des objets lors de la distribution planifiée des rapports par e-mail ;
  • la possibilité de basculer facilement entre les unités de mesure métriques et impériales ;
  • plusieurs améliorations facilitant l'alignement lors de la création de rapports au pixel près.

Pour plus d'informations sur ces fonctionnalités et d'autres, consultez les notes de version disponibles auprès d'Insightsoftware.

Notez que l'installation d'InterSystems Reports 25.1 nécessite la version 11 ou 17 du JDK. Veuillez effectuer une mise à niveau si vous utilisez JDK 8 avant l'installation d'InterSystems Reports.

Pour plus d'informations sur InterSystems Reports, consultez la documentation InterSystems et le contenu des services de formation.

Discussão (0)0
Entre ou crie uma conta para continuar
Artigo
· Jul. 22 4min de leitura

監視用常駐プロセスを作成する方法

これは InterSystems FAQ サイトの記事です。

「定期的にプロセスを監視し、あるイベントが発生したときにのみ処理を実行したい」ような場合に使用できる、便利な機能をご紹介します。

もちろん、Forループを行う常駐プロセスを作成してその中で Hang XX しながらIf文にてイベントを検知したり、タスクスケジュールでルーチンを定期実行してその中でIf文にてイベントを検知して処理することも可能です。

今回ご紹介する、%SYSTEM.Event クラスを使用することで、よりシンプルに処理を作成することが可能となります。

【こんな時に便利】
・テーブルやグローバルに、あるデータが全て格納されたら処理を行いたい
・あるエラーを検知したときにのみ、^SystemCheck情報を取得したい
・処理が必要なものがデータベースに入ったら順番に処理を行いたい(pythonだとQueueモジュールのような感じ)


【使用方法】


準備(任意のプロセス)


do $SYSTEM.Event.Create("test")
これで、testというイベントがシステムワイドで作成されます。
 


パターンA=単純な常駐プロセス


(1) 待機プロセス側
do $SYSTEM.Event.Wait("test")
このコマンドの瞬間、このプロセスは待ち状態になります。
 
(2) 起こす側
do $SYSTEM.Event.Signal("test")
これで、指定イベントで待機しているプロセスの待ち状態が解除されます。
 


パターンB=メッセージ付き常駐プロセス


(1) 待機プロセス側
set msg=$SYSTEM.Event.WaitMsg("test")
このコマンドの瞬間、このプロセスはウェイクアップイベントを待機しながらスリープ状態に入ります。
、他プロセスからのメッセージを待ちます。

 
(2) 起こす側
do $SYSTEM.Event.Signal("test",msg)
指定イベントで待機しているプロセスにメッセージ(msg)を送り待ち状態を解除します。

リクエストを処理する常駐プロセスにて、SYSTEM.Event.Wait() または$SYSTEM.Event.WaitMsg() でリクエストを待ちます。
リクエストを行うプロセスは、$SYSTEM.Event.Signal() で常駐プロセスに通知します。

 
以下は、パターンAでリクエストを処理する常駐プロセスのサンプルです。
10秒(timeout)ごとに監視し、$SYSTEM.Event.Signal() があれば、^SystemCheck 情報を収集します。
^Zevent("STOP") グローバルがセットされたら、監視を終了します。

 set timeout=10
 set requestnum=0
 set status=$SYSTEM.Event.Create("test")

 while '$g(^Zevent("STOP")) {      
     set st=$SYSTEM.Event.Wait("test",timeout)
     if st=1 {
        // timeout内に通知(Signal)があれば、 SystemCheck情報収集
        set Status =$$INT^SystemCheck() 
        write "Request done",!    // write 出力は debug 用(本番では消してOK)
     }
     if st=0 write "Timeout",!     // write 出力は debug 用
 }
 Quit

※sample.macで %SYSネームスペースに保存するとします


【実行例】

端末A 常駐プロセス
%SYS>do ^sample

端末B リクエストプロセス
%SYS>do $SYSTEM.Event.Signal("test")
※例えば、messages.logファイルを読み込み、「○○エラー」のような該当するエラーメッセージがあればこのコマンドを実行します。
 このコマンドを実行することで、^SystemCheck情報が収集されます。

停止
%SYS>set ^Zevent("STOP")=1
※<IRISインストールディレクトリ>\mgr 以下に 
  <CustomerName>yyyy….html     // ^SystemCheck情報
のファイルが出力されているようであれば、情報収集を行ったことになります。
set ^Zevent("STOP")=1 を実行して、常駐プロセスを終了します。
このコマンドを実行しない限り、常駐プロセスは繰り返し監視をし続けます。


以下は、パターンBでリクエストを処理する常駐プロセスのサンプルです。

    set timeout=10
    set requestnum=0
	set status=$SYSTEM.Event.Create("test")

    while '$g(^Zevent("STOP")) {      
        set msg=$SYSTEM.Event.WaitMsg("test",timeout)
        if $li(msg,1)=1 set ^Zevent("REQUEST",$i(requestnum),$ZDT($H))=$li(msg,2) write "Request done",!            
	    if $li(msg,1)=0 write "Timeout",!
    }
    Quit

※sample2.macで WORKネームスペースに保存した場合

【実行例2】

端末A 常駐プロセス
WORK>Do ^sample2

端末B、端末C リクエストプロセス
WORK>do $SYSTEM.Event.Signal("test","Request From "_$J_" "_$ZDT($H))
※複数のプロセスが通知した場合、通知はキューイングされる仕組みとなっています。
 常駐プロセスは、通知を受けると待ちが解除されるので、その後処理を行い、また待ちに入る処理を行います。

停止
 WORK>set ^Zevent("STOP")=1

結果例

WORK>zw ^Zevent
^Zevent("REQUEST",1,"08/13/2021 11:35:13")="Request From 16584 08/13/2021 11:34:31"
^Zevent("REQUEST",2,"08/13/2021 11:35:13")="Request From 16584 08/13/2021 11:34:41"
^Zevent("REQUEST",3,"08/13/2021 11:35:13")="Request From 22296 08/13/2021 11:34:54"
^Zevent("REQUEST",4,"08/13/2021 11:35:13")="Request From 22296 08/13/2021 11:34:56"
^Zevent("REQUEST",5,"08/13/2021 11:35:13")="Request From 16584 08/13/2021 11:34:59"
^Zevent("REQUEST",6,"08/13/2021 11:35:13")="Request From 22296 08/13/2021 11:35:02"
^Zevent("REQUEST",7,"08/13/2021 11:35:13")="Request From 16584 08/13/2021 11:35:07"
^Zevent("REQUEST",8,"08/13/2021 11:35:13")="Request From 22296 08/13/2021 11:35:09"
^Zevent("STOP")=1


enlightened【ご参考】
Simple $system.Event examples(英語)

Discussão (0)0
Entre ou crie uma conta para continuar
Pergunta
· Jul. 22

Create or List Management Portal Users and Roles programatically

Hi,

To add or get information about a user for the management portal you can [within the portal]:
 System Administration > Security Management > Users 

Is it possible to:

1. List a user, user's properties including roles

2. Add a user and set user's properties including roles

3. Set a user's password

for the management portal using a program eg. Objectscript and/or SQL?

If so, how can this be done?

It would be great if you have examples.

5 Comments
Discussão (5)3
Entre ou crie uma conta para continuar
Pergunta
· Jul. 22

Using a License Server in a Mirror Environment

Hi all,

Just wondering if anyone has any experience with licensing in an HA mirroring environment. We have mirror setup with 2 DB servers (Primary and Backup), and a separate Arbiter using ISCAgent. We currently don't have a license server setup so users using our web app get interruptions and have to log in again if failover occurs. 

We have also see some spurious licensing issues when failover occurs and users are logging back in. So we were wondering if using a separate License server (possibly hosted on the Arbiter machine) would help alleviate these licensing issues? Would users not have to log in to our app again - as the licensing would be uninterrupted as the License server was not down?

Any thoughts or potential issues to look out for would be appreciated.

Cheers
Malcolm

4 Comments
Discussão (4)3
Entre ou crie uma conta para continuar
InterSystems Oficial
· Jul. 22

InterSystems Reports Version 25.1 Release Announcement

InterSystems Reports version 25.1 is now available from the InterSystems Software Distribution site in the Components section.  The software is labeled InterSystems Reports Designer and InterSystems Reports Server and is available for Mac OSX, Windows and Linux operating systems.  

This new release brings along enhancements and fixes from our partner, insightsoftware.  InterSystems Reports 25.1 is powered by Logi Report Version 25.1 which includes:

- support for dynamic subject construction in scheduled email distribution of reports

- ability to easily switch between metric and imperial units of measure

- several improvements to ease of alignment in designing pixel-perfect page reports

For more information about these features and others, see the release notes available from insightsoftware.

Note that the InterSystems Reports 25.1 installation requires JDK version 11 or 17 for the installation to execute.  Please upgrade if you are using JDK 8 prior to the InterSystems Reports installation.

For more information about InterSystems Reports, see the InterSystems documentation and learning services  content.

Discussão (0)1
Entre ou crie uma conta para continuar