#InterSystems IRIS

1 フォロワー · 1.3K 投稿

InterSystems IRISは総合データプラットフォームです

    InterSystems IRISは、企業にとって最も価値のある資産(データ)の取得、共有、理解、そしてデータに基づく行動のために必要なすべてのものを提供します。

    完全なプラットフォームである InterSystems IRIS は、複数の開発技術を統合する必要がありません。より少ないコードで開発が可能で、そのアプリケーションは、システムリソース、メンテナンスなども少なくて済みます。

質問 Akio Hashimoto · 2020年10月19日

Vue.jsのホットリロードを使った環境においてWebアプリケーションを開発しています。Webアプリケーションから開発環境と同じローカルPCにあるDocker上のIRISへ%RESTを使用しRESTfulAPI通信をしていますが、Webアプリケーションをhttpsで利用した場合は、httpsからhttpへはAPI通信ができないので、間にプロキシサーバーを立ててリダイレクトしないといけないと思います。しかし上手くいきません。

○ npm run serve で起動したWebアプリ http -> httpでIRISの%RESTを呼び出せる。

× npm run serve -- --https で起動した場合  https -> http は呼び出しできない。

  https -> プロキシサーバ(https-httpへリダイレクト)-> httpでIRISの%RESTが呼びさせるはず。

環境

Webアプリ:Vue.js 例)https://localhost:3014/

IRIS:Docker上のコンテナで稼働 例)http://localhost:9091 -> 57772

やってみた事

1. Docker上にnginxのコンテナを作成。openssl にてSAN付きオレオレ証明書の作成

2. リダイレクトの定義を作成

現象

スマホからもPCからも反応が無い。

7
0 1350
質問 Yuji Ohata · 2021年5月18日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

AWSのcodebuildを利用して、
IRIS環境をビルドされた経験がある方がいらっしゃたら
情報共有いただきたいです。

ただいま取り組んでいるプロジェクトでは、
IRISのclsファイルをaws codecommitのgitリポジトリで管理しております。
※Dockerコンテナではない。

ここで作成されたソースコードをaws Codebuildの仕組みを利用して
自動でコンパイルチェックをする仕組みを構築したいと考えております。
コンパイルを実行する環境としては、AWS ECRに自作したDockerコンテナを利用しております。
※コンテナはstore/intersystems/iris-community:2020.1.0.215.0を基底に、簡単なネームスペースを作成しただけのもの。
 ローカルPC上ではIRIS環境として利用できることを確認済み。

ビルドはbuildspec.ymlにて、以下のような命令で行おうと考えております。

1. iris start IRIS でirisを起動。
2. iris terminal IRISでターミナルにログイン。
3. gitから取得したコードをImport & コンパイル。

しかし、上記を実行しようとすると2の時点で Access Deniedのエラーとなってしまいます。

5
0 899
質問 Seiji Hirose · 2021年2月23日

弊社では、Cacheの時からExcel(VBA)を使用して、Cache側のクラス定義を抽出して画面に表示する、という開発サポートツールを作成して使用していました。

今回、IRISベースでの開発に移行するにあたって、このExcel(VBA)の動作確認をしました。

実施したことは、VBAのエディタ画面にあるメニューから「ツール」→「参照設定」へと進み、表示される選択リストの「CacheActiveX3.0[IRIS] Type Library」を選択しなおすことで、VBAのコードを変更することなく動作する事が確認できました。

このようなExcel(VBA)への対応はカットされたのではないかと不安がありましたが、流石ですね、ちゃんとカバーされていました。

なお、Type Libraryの名称が「CacheActiveX」で始まっていたのはご愛嬌でしょうか?Cache経験者であれば、問題ないと思いましたが、IRISから使い始めた方にとっては、少々困惑されるかも、と感じました。

Excel(VBA)でIRISに接続する事例がどの程度存在するのかは不明ですが、Excel(VBA)でIRISに接続できると便利だと感じています。今時ですから、ODBC  を使った方が分かりやすいかも知れませんね。

8
0 877
質問 Taro Yamada · 2021年1月28日

皆さんこんにちは。

以下のメソッドでは日付の入った配列を受け取り、すべてのYYYY-MM-DD形式の
日付を$horologに変換しているのですが、たまに日付が古すぎるものが入っており
<VALUE OUT OF RANGE>エラーが発生して途中で止まってしまいます。
エラー時にエラーメッセージを代入してそのまま継続できる方法はないでしょうか?

プログラムは以下の通りです。

Class DC.Sample Extends %RegisteredObject [ Language = objectscript ]
{ 
/// 配列に入っているYYYY-MM-DD形式の日付を$horologに変換する
ClassMethod TransDate(array) As %Status
{
set key="" for {
   set key=$order(array(key),1,data)
   quit:key=""

   set array(key)=$zdh(data,3)
}
quit $$$OK
} 
}

よろしくお願いいたします。

2
0 856
質問 Yuji Ohata · 2022年5月26日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

EmbededPythonに興味があり、利用を検討しているのですが、
スタンドアロン下におけるライブラリの使用方法について疑問があります。

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_epython#AFL_epython_pylibrary
こちらを確認しましたところ、ライブラリは以下のコマンドで取得するという理解です。

> irispip install --target C:\InterSystems\IRIS\mgr\python ライブラリ名

pipコマンドではネットワーク上から、名称に一致したライブラリをダウンロード/インストールしてくれる
機能と認識しておりますが、利用したいPCがインターネットに接続されていなかった場合、
単純にこのコマンドを実行してもエラーになるだけと考えております。

このようなスタンドアロン下でのライブラリ取得について、何か知見がありましたらご教示いただけませんでしょうか?

2
1 604
質問 Mitsuru Amano · 2021年3月3日

こんにちは、皆さま

IRISとVSCODE環境を日頃から愛用しています。

普段は使用しませんが、実験的にCSPファイル(*.CSP)をVSCODEで編集してみようと思い試みましたが上手く行きませんでした。

VSCODEの拡張は、「InterSystems ObjectScript Extension Pack」を使用しています。

具体的は2つの方法を試しました。

1.DBからworkspaceにExportして編集+Import&Compile

   ObjectScriptのソースTree-コンテキストメニューにExportが無いため動作を確認できず。

clsのExprot

cspのExportが…ない

2.DBの*.CSPを直接編集。

   ObjectScriptのソースTree-からcspファイルを開き編集したが、読み取り専用と表示。

VSCODEでCSPファイルを編集する方法をご存じの方は、教えて頂けないでしょうか?

4
0 602
質問 Akio Hashimoto · 2022年2月3日

皆さん
こんにちは。

最近ではVSCodeでIRISのプログラミングを行っている方も多いと思います。
クラスメソッドなんかをコーディングし、実行してエラーとなった場合に、以下のようなエラーメッセージが取得できると思います。

> <UNDEFINED> zNewMethod+32^ClassName.1

これは、NewMethodというメソッド内の32行目でUNDEFINEDが発生した事を指していますが、これは実際にはClassName.clsのNewMethod内の32行目ではなく、ClassName.1というルーチン(int)のzNewMethodでの32行目を示しています。
.clsから生成されるintは空行が削られたり、複数ルーチンに分割されたりしますので、実際のClassName.clsを開いてNewMethodの32行目を見ても実際のエラー箇所では無い場合があります。
VSCodeで開発をしていると、これが結構面倒なのですが、エラーメッセージに出力される行番号を .clsや、.mac 上での行番号に変える方法があれば教えて頂きたく、よろしくお願い致します。

2
0 570
質問 Yuji Ohata · 2022年6月13日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

現在テーブルを用いてシステムの設計を行っておりますが、
トランザクション中に、そのトランザクションの影響を受けずにテーブルを
更新するような仕組みが欲しいと考えております。
(トランザクションがRollbackされても、そのテーブルの更新だけは確定させたい。)

例えば$INCREMENT()はトランザクション中であっても、その制約を無視して値を更新できます。
そのような回避策がないかをご教示いただきたいです。

用途としては、連番を生成するAPIを作成していて、その値をテーブルで管理しています。
このAPIは複数プロセスから呼ばれることがありますが、
1トランザクション中の連続Updateにより、行ロックからテーブルロックへの昇格が行われる
(1000行以上行ロックをしたときのIRISの仕様)ことで、
他プロセスがAPIを利用できなくなるなどの影響が出ています。
今回のAPIに関しては、番号重複さえ起きなければよいので、そのような影響は受けたくありません。

極力グローバルは用いない設計としたいので、テーブルで対応したいです。
すいませんが、何か情報をお持ちの方はご回答いただけますと幸いです。

4
0 539
質問 Yugi AA · 2023年6月30日

VScodeを使用してローカルのルーチンを編集している途中で、PCが重かったため再起動を行って、 再びIRISを起動しようとするとエラーとなり起動できません。 どなたか解決策をご存知でしょうか?よろしくお願いいたします。

ーーーーーーーーーーーーー 現象: ローカルのIRISを起動すると、エラーとなり起動できない。

操作:

  1. PCを起動し、iris.exeで起動。
  2. InterSystems IRIS 開始(S)[IRIS] ボタンで起動を試みる。
  3. エラーメッセージが表示される。 irisstart.exe_err

詳細:

・接続先 IPアドレス: localhost ポート: 51773

・mgr/mesages.logのエラーログ

*** Recovery started at Sat Jul  1 08:35:25 2023
...略
07/01/23-08:35:36:165 (19356) 3 [Utility.Event] Error: ERROR #5001: Could not start SuperServer on port 51773, may be in use by another instance - Shutting down the system : $zu(56,2)=$Id: //iris/2022.1.0/kernel/common/src/acmd.c#1 $ 4561 183
07/01/23-08:35:41:208 (19356) 0 [Utility.Event] Shutting down InterSystems IRIS
07/01/23-08:35:41:224 (19356) 0 [Utility.Event] Notifying Clients
07/01/23-08:35:41:230 (19356) 0 [Utility.Event] No user shutdown routines to execute
07/01/23-08:35:41:238 (19356) 0 [Utility.Event] Stopping User Jobs
07/01/23-08:35:41:247 (19356) 0 [Utility.Event] Stopping Network Servers
07/01/23-08:35:41:255 (19356) 0 [Utility.Event] Withdrawing from License Domain
1
0 515
質問 Yuji Ohata · 2021年12月6日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

私はIRISでSQLアクセスを行うプログラムをを作成しており、
テーブルアクセスには%ScrollableResultSetクラスのAPIを用いて処理を実現しています。
作成するSQLはインジェクション対策のため、?パラメータを用いておりますが、
この度、大量のパラメータ(600項目)を用いるSQLを作成する必要が出てきました。

https://irisdocs.intersystems.com/iris20191/csp/docbookj/DocBook.UI.Pag…
こちらによりますと、可変長引数を用いても引数の上限値は255個となっており、
実際に600個のパラメータを引数に与えてSQLアクセスしようとすると、<STACK>エラーが発生する状況です。

    Set query = "SQL文"
    Set result = ##class(%ScrollableResultSet).%New("%DynamicQuery:SQL")
    Do result.Prepare(query)
    Do result.Execute(parameterValue...) #; ここに600個のパラメータをセット
2
0 472
質問 Yuji Ohata · 2021年3月29日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

ObjectScriptでは様々な型の変数定義が可能ですが、
実際に定義された変数(Object)から、その変数の型を逆引きする方法を
ご存じな方はいらっしゃいませんでしょうか?

理想としては、Java等で利用可能な『instanceof』演算子の
代替えとなるような仕組みが望ましいです。

力技で何とかなりそうなら、専用のメソッドみたいなものを
自作で作ってもよいかなとは考えておりますが、
現状その力技すら思いついていない状況です。。。

何か情報をお持ちの方がいらしたら、助言いただけますと幸いです。

4
0 472
質問 Akio Hashimoto · 2022年2月1日

Windows端末でCachéやIRIS等を開発環境として使っています。

Windows11での動作状況について、インターシステムズからの正式な対応はまだのようですので、

下記のバージョンで既にインストールをされている方が居られれば、状況などを教えて頂けないでしょうか。

特に問題無く動いていますでしょうか?

・Caché 2017.1

・IRIS for Health 2019.1

この他のバージョンについても情報が御座いましたらよろしくお願い致します。

2
0 443
質問 Kobata Makoto · 2022年8月10日

皆様こんにちは。

ubuntu 22.04 LTSに対してIRIS-Community 2022.1.0.209.0をインストールしようとしたところ、

下記のようなエラーが出てインストールができない状態です。

LTSバージョンではSSLがversion3.0.2になっていますので、手動にてversion1.1.1をインストールしてみましたが

改善されません...製品版のIRIS 2022.1.0.209.0であれば正常にインストールできますので、Community Editionだけの

問題のような気もしています。 ← こちらは製品版でも同じ現象でした...><

どなたか知見をお持ちの方おられないでしょうか?

----- ■以下エラー

Warning: The installer can't find a platform in this distribution
supported by your system.

Searching for platforms that might install in unsupported mode...

     1) Ubuntu LTS (x64)

Enter the number for your system:  1

Your system type is 'Ubuntu LTS (x64)'.

2
1 437
質問 Yuji Ohata · 2022年12月14日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

この度、新たにUbuntu環境にIRISを入れてEmbedded Pythonを用いて開発をすることとなりました。
初期設定として、Ubuntuへのpythonのインストールが必要だと考えているのですが、
その時のバージョンの指定等はあるのでしょうか?

公式サイトを漁ってもうまく見つけられず、ご存知の方がいらっしゃれば教えてください。
同様の開発をされている方で、躓きポイントなど(Ubuntuだとスタジオ使えないからVSCode必須だよ)が
あれば、合わせて助言頂けますと幸いですcheeky

2
0 417
質問 Akio Hashimoto · 2024年12月4日

Pythonでは、拡張モジュールのバージョン違いが混同されないように、venv を使って仮想環境に拡張モジュールをインストールする事を推奨されてたりしますが、IRISから使用する場合に、このvenvで作られた仮想環境を利用する事は可能でしょうか?

PythonPathに仮想環境のパスを指定してはみましたが、プロジェクトから、あるいはimportで、その場所を指定する等出来るでしょうか?

何方か御存知の方がおられましたら、その方法などを教えて下さい。

4
0 395
質問 Yuji Ohata · 2022年10月24日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

SQLの実行結果について、意図せぬ結果になるものが二点ありますので、
利用方法等に誤りがないかを確認させてください。


CREATE TABLE Tmp.AAA AS SELECT * FROM Mst.AAA WHERE column = ?
⇒管理ポータルで実行しても、?パラメータを置換するダイアログが表示されず、
 オンコードで%Execute()しても実行エラーになる。

★この構文では?パラメータは利用できないのでしょうか?


SELECT * FROM Mst.AAA WHERE column IS NULL
⇒IS NULLではヒットせず、= NULLだとヒットする。
 
 

 ★IRISとして、IS NULLと= NULLに動作差異があるのは何故でしょうか?

すいませんが、情報をお持ちの方がいらっしゃればご教示いただけますと幸いです。

8
1 386
質問 Yuji Ohata · 2022年1月26日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

TIMESTAMP型のデータを持つテーブルの扱いについて教えてください。

現在Ens_Util.Logを参照するシステムを開発しようとしております。
このテーブルの中にTimeLoggedというTIMESTAMP型のデータがあるのですが、
それをSELECTした際、CASTの有無で表示されるデータに差異が出ます。

SELECT
    DATE(TimeLogged),
    CAST(TimeLogged AS TIME),
    TimeLogged
FROM
    Ens_Util.Log

Expression_1|Expression_2|TimeLogged         |
------------+------------+-------------------+
  2022-01-25|    15:00:01|2022-01-26 00:00:01|
  2022-01-25|    15:00:01|2022-01-26 00:00:01|
  2022-01-25|    15:00:01|2022-01-26 00:00:01|

確認する限り9時間の差があるため、UTC時刻との時差が出ているものと考えていますが、ここで何点か疑問があります。

8
0 351
質問 Yuji Ohata · 2023年3月24日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

私たちのシステムでは一部グローバルを利用しているものがあるのですが、
それをテーブル定義したものと同様にDbeaver等で参照できるようにしたいと考えております。

もともと定義していたグローバル(キーを二つ持つもの)に対して、対応するPersistentのクラスを作成し、
DataLocationをそのグローバルにすることで、Dbeaverからそのクラスの存在は見えるようになったのですが、
valueの値を参照することできず、困っています。
どなたか情報をお持ちでしたらご教示いただけないでしょうか…。

■グローバル
>zw ^Test
^Test(1,2)="A"
^Test(1,3)="B"
^Test(2,1)="C"
^Test(2,2)="D"
■永続クラス

Class Gbl.

2
0 334
質問 m.fuku · 2024年11月21日

IRISを起動しようとするとエラーとなり起動できません。
どなたか解決策をご存知でしょうか?よろしくお願い致します。

環境:Windows11

事前作業:

下記URLと同症状が発生し、アップグレードインストールを行っています。

https://jp.community.intersystems.com/post/iris%E3%82%B3%E3%83%9F%E3%83…

操作:

1.タスクトレイアイコンから「InterSystems IRIS 開始(S)[IRIS]」を選択。

2.エラーメッセージが表示される。

イベントビューアのエラー:

- <Event xmlns="http://schemas.microsoft.

6
0 330
質問 Kobata Makoto · 2022年2月28日

皆様こんにちは。

Native API for .NETを使用して、%Stream.GlobalBinaryタイプのプロパティを持つデータを作成しようとしています。

%Stream.GlobalBinaryタイプのプロパティ(binaryData)に書き込む部分は以下のようになっています。

Using obj As InterSystems.Data.IRISClient.ADO.IRISObject = iris.ClassMethodObject("User.Sample","%New")

        Using prop As InterSystems.Data.IRISClient.ADO.IRISObject = obj.GetObject("binaryData")

                prop.InvokeStatusCode("Write", binary)

        End Using

        obj.InvokeStatusCode("%Save")

End Using

この”Write”メソッド部分ですが、1.5MB程度の制限がかかってしまい、1.5MBを超えるようなデータが登録できません。

※実際にはエラーとはならず、1.5MBまでしか書き込まれていない状態のようです。

どなたか解決方法等ご教授いただけないでしょうか。

8
0 308
質問 Yuji Ohata · 2023年6月1日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

IRISにSQLを投げるときの動作について教えてください。

■適当なテーブルを作成
CREATE TABLE Mst.Test (id int, name varchar(10))

■データをINSERT
INSERT INTO Mst.Test VALUES (2, 'bbb ')
※文字列の末尾にスペースを追加。

■SELECT
SELECT * FROM Mst.Test WHERE name = 'bbb'
※whereの条件には末尾のスペースを入れない。

⇒上記の結果、INSERTされたデータがヒットしている。

[疑問点]
SQLの実行において、=を使って完全一致検索をしているつもりなのですが、
末尾のスペースはその条件を無視してヒットしてしまうものなのでしょうか?

何か情報をお持ちの方がいらっしゃれば、フォローいただけますと幸いです。

3
0 295
質問 Yuji Ohata · 2022年9月13日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

現在開発している処理の中で、大量データをSELECT & INSERTする処理があり、合計で91分かかっています。
この処理で用いるSQLは実行結果を再利用したい等の意図があったため、ScrollableResultSetを用いていましたが、
このAPI自体がSQL実行時に全件ループを回したり、そもそも古いAPIとの事であったため、
%SQL.Statementに書き換えたところ、62分まで短縮することが出来ました。

ここからが問題なのですが、更なる処理時間の軽減のために時間がかかる処理を調査していたところ、
カラム情報を取得する%Get()メソッドにコストがかかっていることがわかりました。
なので現在はこれを改善したいと思っております。

こちらで動作を見たところ、最速は下記でいう所の「rset.name」でこちらを利用すると、41分まで削減されます。

https://docs.intersystems.com/iris20211/csp/docbookj/DocBook.UI.Page.cl…

しかし、我々としましてはAPIを汎用的に用いたいため、nameの部分を動的に扱えるような%Get()の様な仕組みが欲しいです。

4
0 283
質問 Yuji Ohata · 2021年6月7日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
clsファイルのExportについて、ご存じな方がいらしたら教えてください。
VSCodeではclsの一覧からExportを選択すると、clsファイルとしてローカルにファイル出力されます。

これと同じことを、ObjectScript上でも行いたいと思っています。
しかしながら、Export用のAPIを見てみてもxmlファイルで出力される旨のコメントがあり、
clsファイルのまま出力するためのAPIが見当たりません。

https://irisdocs.intersystems.com/iris20191/csp/documatic/%25CSP.Documa…

どなたか情報をお持ちではないでしょうか?

※ちなみに本当にやりたいことは、CREATE TABLE実行時に自動で作られる永続クラスを
 自動でExportするような仕組みを構築しようと考えております。

2
0 273
質問 Yuji Ohata · 2021年8月17日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

スタジオ以外でSourceControlを利用されている方がいれば教えてください。

現在SourceControlを用いて、コンパイル前に
自動コードレビュー(静的解析)を行うような仕組みを構築しております。
実際にスタジオやVSCodeでの保存時には、上記の仕組みが動作しソースチェックが行われるのですが、
clsの一括取り込みを行おうと『$SYSTEM.OBJ.ImportDir()』を実行した際には
SourceControlが動作していないように見えております。

以下のような形でメソッド実行しているのですが、オプション等の不備になるのでしょうか?

> Do $SYSTEM.OBJ.ImportDir("ファイルが存在するパス","*.cls;*.mac;*.int;*.inc;*.dfi","ck",,1)

3
0 272
質問 Mitsuru Amano · 2021年3月13日

こんにちは、皆さん

私は、%CSP.WebSocketの非同期動作(SharedConnection=1)で、ソケットのクローズを検知する手段が見つからなくて困っています。

WebアプリケーションとIRIS間でソケットの接続、データの送受信は出来ましたが、Webアプリケーション側でソケットクローズしたとき、IRIS側でそれを検知する方法が分かりませんでした。

どなたか、IRIS(サーバ側)でソケットのクローズを検知する方法をご存じでしたら教えて下さい。

3
0 263
質問 Yuji Ohata · 2023年4月13日

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

現在、Embedded Pythonを用いて開発を行おうとしているのですが、
別のNMSPに存在するグローバルをiris.gref()で参照する方法がわかりませんでした。

> iris.gref("^[NMSP]GBL")   <-----こうしても自身のNMSPのグローバルを参照してしまう。

諦めてznでネームスペースを切り替えてみようかな、とも思ったのですが、
python上でznをかける方法もよくわからず、対応方法に悩んでいます。

どなたか、上記の対応方法についてご存じな方はいらっしゃいませんでしょうか?

5
1 238