検索

クリアフィルター
記事
Tomohiro Iwamoto · 2020年8月28日

AWS CloudWatchを使用したInterSystems IRISのモニタリング

本記事について InterSystems IRISをモニタリングする方法はいくつかあります。 SNMP システムモニターとemail通知機能 管理ポータルのシステムダッシュボード Prometheus+Grafanaを使用 InterSystems SAM (System Alerting and Monitoring) 本記事では上記に加えてAWSにIRISをデプロイする場合に自然な選択子となりうる方法として、CloudWatchを使用する方法をご紹介します。 AWSネイティブの各種サービスとIRISを連携させる方法の典型のご紹介を兼ねています。 内容は、Open Exchangeで公開されています。日本語のREADMEがありますのでそちらをご覧ください。README.MDからの引用 InterSystems IRISの各種メトリクスとログをAWS CloudWatchに簡単に公開することができます。これらメトリクスとログがあれば、IRISのデータをダッシュボードやアラートなどに統合することができます。 Prometheus+Grafana,SAM,CloudWatchについては、共通点があります。いずれもIRIS 2019.4から利用可能となった監視APIを使用している点です。下記のREST要求を出すだけで、任意のIRISホストの各種メトリクスの取得が出来ます。これにより多種多様なモニタリングツールやサービスとの連携が容易になりました。 $ curl http://localhost:52773/api/monitor/metrics iris_cpu_pct{id="CSPDMN"} 0 iris_cpu_pct{id="CSPSRV"} 0 iris_cpu_pct{id="ECPWorker"} 0 iris_cpu_pct{id="GARCOL"} 0 iris_cpu_pct{id="JRNDMN"} 0 iris_cpu_pct{id="LICENSESRV"} 0 iris_cpu_pct{id="WDSLAVE"} 0 iris_cpu_pct{id="WRTDMN"} 0 iris_cpu_usage 3 iris_csp_activity{id="127.0.0.1:52773"} 31 iris_csp_actual_connections{id="127.0.0.1:52773"} 8 iris_csp_gateway_latency{id="127.0.0.1:52773"} .551 ・ ・ ・ 詳細はREADME.MDを読んでください、以上です、というのでは拍子抜けしそうですので、以下、追加情報です。 ログインサイトについて message.logの分析は、画像でも確認できますが、ログインサイトを使って、ロググループInterSystems-IRISに対して下記のクエリを実行します。 PARSE @message "* (*) * [*] *" as timestamp,pId,severity,eventType,text | filter severity=3 or severity=2 | sort @timestamp CloudFormationのテンプレート オリジナルで紹介されている手順及びIRISを自動でデプロイするCloudFormationのテンプレートをご用意しました。パラメータの意味はこちらの記事とほぼ同じです。 パラメータIamInstanceProfileParameterで指定するEC2インスタンスロールには、CloudWatchAgentServerPolicyに加えてAmazonS3ReadOnlyAccessも追加してください。 実行すると、ポート22(ssh), 52773をインターネットに解放します。安全を見るなら、パラメータRemoteAccessCIDRParameterには自分のグローバルIPを指定するのが望ましいです。キット及びライセンスキーは、パラメータS3BucketNameParameterで指定したs3バケットから取得しています。事前に用意したキット、ライセンスの保管場所が下記である場合、このパラメータ値はmybucketにします。 s3://mybucket/IRIS-2020.1.0.215.0-lnxrhx64.tar.gz s3://mybucket/iris.key 実行されるシェルコマンド UserDataセクションに一通りのコマンドが記述されています。また、オリジナルの内容に加えて、各種設定(AWS Region, timezone, localeなど)を日本の環境に合わせています。 こんな風に、AWSが持つ様々なサービスとIRISを連携させられるのね、と感じていただければ幸いです。 なお、Amazon Linux2はIRISの正式なサポート対象環境ではありませんが、RedHat7ベースですのでデモ目的で使用しています。
お知らせ
Makiko Kokubun · 2021年2月9日

【アーカイブ配信のお知らせ】InterSystems IRIS データプラットフォーム 概要

開発者の皆さん、こんにちは! InterSystems 開発者コミュニティでは、初めてIRIS を使われる方向けに、IRIS の概要をご紹介するウェビナーを開催致しました。そのウェビナーのアーカイブを公開致しました。 インターシステムズのデータプラットフォーム製品をご覧になるソフトウェアエンジニアの方向けに、弊社のエンジニアが 約 30分でその特徴をご紹介します。ぜひご覧ください。 アーカイブ配信はこちらから ウェビナー(アーカイブ配信)「InterSystems IRIS データプラットフォーム 概要」 配信時間:23分 無料でご視聴頂けます。 アーカイブはこちら(ON24を使用しています)https://event.on24.com/wcc/r/2982378/17DE6BE0C44C34513F10A8D7C7B68FB0 以下のような開発者の方におすすめです。 初めてインターシステムズのデータプラットフォーム製品をお使いになる方、ご興味のある方 新しいデータプラットフォームを試してみたい方 Caché から IRIS への移行をご検討中の方 ぜひご視聴ください!
お知らせ
Yoichi Miyashita · 2021年3月30日

InterSystems 製品 2018.1.5, 2019.1.2, 2020.1.1 リリースのご案内

インターシステムズは、以下のメンテナンスバージョンをリリースしました。 Caché, Ensemble, HealthShare Health Connect (HSAP) 2018.1.5 InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2019.1.2 InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2020.1.1 これらのメンテナンスリリースは幅広い分野の多くの修正を含みます。各リリースの修正情報は、それぞれのバージョンのドキュメントに含まれるリリースノートをご確認ください。ドキュメントにはリリースノートの他にアップグレードチェックリスト、リリース変更リスト、クラスリファレンスおよびガイド、リファレンス、チュートリアルやアーティクルの完全なセットを含みます。リリースノートを含む英語ドキュメントは こちら から参照できます。最新情報を除く 日本語ドキュメント もご参照ください。 これらのリリースでは新しくサポートするプラットフォームを追加しました。特に、すべてのリリースで Ubuntu 20.04 LTS をサポートします。2019.1.2 は IBM AIX 7.1, 7.2 for System p-64 を新たにサポートします。(2020.1 ではこのプラットフォームは既にサポートされています)2020.1.1 には ARM64 support for Linux が追加されます。サポートプラットフォームの詳細は各リリースドキュメントの Supported Platforms (英語) をご確認ください。 キットが必要なお客様は、カスタマーサポートセンターまでご連絡いただき、必要なプラットフォームをお知らせください。また、WRC Direct ユーザの方は こちら より入手可能です。各リリースのビルド番号は以下の通りです。 Caché, Ensemble 2018.1.5: 2018.1.5.659.0 HSAP 2018.1.5: 2018.1.5HS.9056.0 InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2019.1.2: 2019.1.2.718.0 InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2020.1.1: 2020.1.1.408.0
記事
Mihoko Iijima · 2020年7月6日

%InstallerでInterSystems Cachéにアプリケーションをデプロイする

InterSystemsのテクノロジースタックを使用して独自のアプリを開発し、顧客側で複数のデプロイを実行したいとします。 開発プロセスでは、クラスをインポートするだけでなく、必要に応じて環境を微調整する必要があるため、アプリケーションの詳細なインストールガイドを作成しました。この特定のタスクに対処するために、インターシステムズは、%Installer(Caché/Ensemble)という特別なツールを作成しました 。 続きを読んでその使用方法を学んでください。 %Installer このツールを使用すると、インストール手順ではなく、目的のCaché構成を記述するインストールマニフェストを定義できます。作成したい Caché 構成を記述します。必要な内容を記述するだけで、環境を変更するために必要なコードが自動的に生成されます。したがって、マニフェストのみを配布する必要がありますが、インストール・コードはすべてコンパイル時に特定の Caché サーバ用に生成されます。 マニフェストを定義するには、ターゲット構成の詳細な説明を含む新しいXDataブロックを作成してから、このXDataブロックのCaché ObjectScriptコードを生成するメソッドを実装します(このコードは常に同じです)。 マニフェストの準備ができたら、ターミナルまたはCaché ObjectScriptコードから、またはCachéのインストール中に自動的にアクセスできます。 マニフェストは %SYSネームスペースで実行する必要があります。 マニフェストは、システムパラメータ(スーパーサーバポート、OS、mgrディレクトリなど)とユーザーが提供した任意のパラメータの両方を処理できます。 一般に、各インストールクラスは次の要件を満たしている必要があります。 %occInclude.incへのリンクを含むこと Cachéサーバー構成のXDataブロックを含むこと ブロックには任意の有効な名前を付けること スタジオでブロックの名前の後に[XMLNamespace = INSTALLER]を追加すること ルートアイテム(1つのみである必要があります)は<Manifest>と呼ばれ、他のすべてのアイテムを含むように記述すること また、XDataブロックに必要なプログラムコードを生成するsetup()メソッドを実装すること インストーラーの基本 複数の方法でインストールマニフェストを実行できます。 ターミナルを使用して%SYSネームスペースで、またはCachéObjectScriptコードから以下実行します。 do ##class(MyPackage.MyInstaller).setup() Cachéのインストール中に自動的に実行されます。 これを行うには、インストーラーのクラスを、Cachéインストールパッケージ(すなわち、 setup_cache.exeまたはcinstallが格納されている場所)のフォルダー内に格納されているDefaultInstallerClass.xmlにエクスポートする必要があります。 このクラスは、Cachéのインストール中に%SYSネームスペースにインポートされ、 setup() メソッドを介して実行されます。 例: 簡単な例を考えてみましょう。ユーザー定義の名前で新しいネームスペースを作成し、デフォルトのWebアプリを作成し、作成したネームスペースにコードをインポートするインストーラーを含む App.Installerというクラスを作成します。 /// You can see generated method in zsetup+1^App.Installer.1XData Install [ XMLNamespace = INSTALLER ]{<Manifest> <If Condition='(##class(Config.Namespaces).Exists("${Namespace}")=0)'> <Log Text="Creating namespace ${Namespace}" Level="0"/> <Namespace Name="${Namespace}" Create="yes" Code="${Namespace}" Ensemble="0" Data="${Namespace}"> <Configuration> <Database Name="${Namespace}" Dir="${MGRDIR}${Namespace}" Create="yes"/> </Configuration> </Namespace> <Log Text="End Creating namespace ${Namespace}" Level="0"/> </If> <Role Name="AppRole" Description="Role to access and use the App" Resources="%DB_CACHESYS:RW,%Admin_Secure:U" /> <Namespace Name="${Namespace}" Create="no"> <CSPApplication Url="/csp/${Namespace}" Directory="${CSPDIR}${Namespace}" AuthenticationMethods="64" IsNamespaceDefault="true" Grant="AppRole" /> <IfDef Var="SourceDir"> <Log Text="SourceDir defined - offline install from ${SourceDir}" Level="0"/> <Import File="${SourceDir}"/> </IfDef> </Namespace></Manifest>} ///Entry point method, you need to call/// At class compile time it generate Caché ObjectScript code from the manifest/// After that you can run this installer from a terminal:/// Set pVars("Namespace")="NewNamespace"/// Set pVars("SourceDir")="C:\temp\distr\"/// Do ##class(App.Installer).setup(.pVars)ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 0, pInstaller As %Installer.Installer) As %Status [ CodeMode = objectgenerator, Internal ]{ Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "Install")}} この例では、インストーラーは次のアクションを実行します。 Namespace変数の値と同じ名前のネームスペースが存在するかどうかを確認します(明確にするために、Namespace変数がNewNamespaceに設定されていることを指定しましょう) そうでなければ、NewNamespaceという新しいネームスペースが作成されることをログに記録します。 新しいネームスペースを定義します。 名前はNewNamespaceです 新しいネームスペースを作成します ルーチンデータベースはNewNamespaceです Ensembleを有効にしないでください ルーチンデータベースはNewNamespaceです 新しいデータベースを作成します 名前はNewNamespaceです; それを mgr/NewNamespaceフォルダーに作成します(MGRDIR変数はデフォルトで使用可能であることに注意してください) ネームスペースの作成が完了し、ログに記録されます。 新しいロールを次のように作成します。 AppRole(リソース %DB_CACHESYS:RW および %Admin_Secure:U を設定) デフォルトのWebアプリケーション /csp/NewNamespace が作成されます(Grant 属性により、AppRole が設定されます) SourceDir変数が定義されている場合、そこからすべてのファイルをNewNamespaceにインポートします。 このインストーラーをターミナルで実行するには、次のコマンドを実行します。 Set pVars("Namespace")="NewNamespace" Set pVars("SourceDir")="C:\temp\distr\" Do ##class(App.Installer).setup(.pVars) 実行中、ターミナルは次の関連情報を表示します。 2016-02-17 19:26:17 0 App.Installer: Installation starting at 2016-02-17 19:26:17, LogLevel=02016-02-17 19:26:17 0 : Creating namespace NewNamespace2016-02-17 19:26:17 0 : End Creating namespace NewNamespace2016-02-17 19:26:17 0 : SourceDir defined - offline install from C:\temp\distr\2016-02-17 19:26:18 0 App.Installer: Installation succeeded at 2016-02-17 19:26:182016-02-17 19:26:18 0 %Installer: Elapsed time .545148s 発生していることについて多くの情報を取得するためには、LogLevelを指定します(0(デフォルト)から3(未加工)、数値が大きければ大きいほどより詳細な情報が得られます)。 Do ##class(App.Installer).setup(.pVars, 3) 次に、インストーラマニフェストで実行できることについて説明します。 利用可能なノード マニフェストは次のアイテムで構成されています。 ノード 親ノード 属性(デフォルト値) 説明 Arg Invoke、Error Value – 引数の値 InvokeまたはError経由で呼び出されるたメソッドに引数を渡します ClassMapping Configuration Package –マッピングされるパッケージFrom –マッピングに使用されるソースデータベースの名前 データベースからこの構成項目を含むネームスペースへのクラスマッピングを作成します。 Compile Namespace Class –コンパイルするクラスの名Flags –コンパイルフラグ(ck)IgnoreErrors –エラーを無視(0) コンパイラクラス。 $System.OBJ.Compile(Class, Flags)を呼び出す Configuration Namespace ネームスペースとデータベースの作成に使用されます。 タグを閉じるとマッピングがアクティブになり、CPFファイルを更新します。 CopyClass Namespace Src — ソースクラスTarget — ターゲットクラスReplace —ソースクラスを削除(0) ソースクラス定義をターゲット定義にコピーまたは移動します。 CopyDir Manifest Src —ソースディレクトリTarget —ターゲットディレクトリIgnoreErrors —エラーを無視(0) ディレクトリをコピーします。 CopyFile Manifest Src —ソースファイルTarget —ターゲットファイルIgnoreErrors —エラーを無視(0) ファイルをコピーします。 Credential Production Name–アクセス認証情報の名前Username–ユーザー名Password–ユーザーパスワードOverwrite –アカウントが既に存在する場合は上書き アクセス資格情報を作成または上書きします。 CSPApplication Namespace AuthenticationMethods –有効な認証方法AutoCompile –自動コンパイル(CSP設定)CSPZENEnabled – CSP / ZENフラグChangePasswordPage –パスワードページを変更するパスCookiePath –セッションCookieパスCustomErrorPage – カスタムエラーページへのパスDefaultSuperclass –デフォルトスーパークラスDefaultTimeout –セッションタイムアウトDescription–説明[文字列の折り返しの区切り]Directory – CSPファイルへのパスEventClass –イベントクラス名Grant – システムへのログイン時に割り当てられたロールのリストGroupById – IdプロパティによるグループInboundWebServicesEnabled – 受信WebサービスフラグIsNamespaceDefault – 名前空間デフォルトアプリケーションフラグLockCSPName – CSP名のロックフラグLoginClass –ログインページへのパスPackageName –パッケージ名プロパティPermittedClasses –許可されたクラスプロパティRecurse –再帰フラグ(サブディレクトリを提供)(0)Resource – Webアプリにアクセスするために必要なリソースServeFiles –サービスファイルプロパティServeFilesTimeout – 静的ファイルをキャッシュする時間(秒単位)。TwoFactorEnabled – 2段階認証Url – Webアプリケーションの名前UseSessionCookie –セッションにCookieを使用する Webアプリケーションを作成または変更します。 詳細については、ドキュメントおよび Security.Applications クラスを参照してください Database Configuration BlockSize – データベースのバイト単位のブロックサイズClusterMountMode – データベースをクラスターの一部としてマウントCollation – 並べ替え順序Create – 新しいデータベースを作成するかどうか(yes / no / overwrite) (はい))Dir –ディレクトリEncrypted – 暗号化データベースEncryptionKeyID – 暗号化キーのIDExpansionSize – MB単位のサイズInitialSize – 初期サイズMaximumSize – 最大サイズMountAtStartup –起動時にマウントMountRequired – 起動時にデータベースを正常にマウントする必要があることを指定します。Name – データベース名PublicPermissions – パブリック権限Resource – リソースStreamLocation –このデータベースに関連付けられたストリームが移動するディレクトリ データベースを作成または変更します。 詳細については、ドキュメント 、 Config.Databases および SYS.Database クラスを参照してください Default Manifest Name –変数名Value –変数値Dir –変数値(これがフォルダー/ファイルへのパスの場合) 変数値を設定します(未設定の場合) Else Manifest, Namespace If文がfalseのときに実行されます。 Error Manifest Status – エラーコードSource – エラーのソース 例外をスローします。 ${}および#{}構文は使用できないことに注意してください。       ForEach Manifest Index – 変数名Values – 変数の値のリスト コレクション制御 ループ GlobalMapping Configuration Global – グローバル名From – マッピングするデータベースの名前 Collation – 並べ替えの順序 (Caché 標準) グローバルをマッピングします。 If Manifest, Namespace Condition – 条件付きステートメント 条件付きif文 IfDef Manifest, Namespace Var – 変数名 変数がすでに設定されている場合に使用される条件付きif文 IfNotDef Manifest, Namespace Var – 変数名 変数がすでに設定されていない場合に使用される条件付きif文 Import Namespace File – インポート用のファイル/フォルダーFlags — コンパイルフラグ(ck)IgnoreErrors —エラーを無視(0)Recurse – 再帰的にインポート(0) ファイルをインポートします。 次を呼び出します。[文字列の折り返しの区切り]$System.OBJ.ImportDir(File,,Flags,,Recurse) and $System.OBJ.Load(File, Flags) Invoke Namespace Class – クラス名Method –メソッド名CheckStatus –返されたステータスを確認Return – 結果を変数に書き込む さまざまな引数を指定してクラスのメソッドの呼び出し、実行結果を返します LoadPage Namespace Name – CSPページへのパスDir – CSPページのあるフォルダーFlags — コンパイルフラグ(ck)IgnoreErrors — エラーを無視 (0) $System.CSP.LoadPage(Name, Flags)と$System.CSP.LoadPageDir(Dir, Flags)を使ってCSP fileを読み込みます。 Log Manifest Level – 0(最小)から3(詳細)までのロギングレベルテキスト – 長さ32,000文字までの文字列 ロギングレベルが「level」属性以上の場合、ログにメッセージを追加します Manifest ルートアイテム。 マニフェストで唯一のルートアイテム。他のすべてのアイテムを含みます。 Namespace Manifest Name – ネームスペースの名前Create – 新しい名前空間を作成するかどうか(はい/いいえ/上書き(はい))Code – プログラムコードのデータベースData – データベースEnsemble – ネームスペースに対してEnsembleを有効化他のすべての属性はEnsemble Webアプリケーションに適用可能 インストーラーのスコープを定義します。 Production Namespace Name – プロダクション名[AutoStart –プロダクションの自動起動 Ensembleプロダクションを構成します。 Resource Manifest Name – リソース名Description –リソースの説明Permission – パブリック権限 リソースを作成または変更します。 Role Manifest Name – 役割の名前Description – 役割の説明(カンマを含めることはできません)Resources – 役割に与えられるリソース。「MyResource:RW,MyResource1:RWU」として表されます RolesGranted – 対応するロールを付与するかどうか 新しいロールを作成します。 RoutineMapping Configuration Routines – ルーチン名Type – ルーチンタイプ(MAC、INT、INC、OBJまたはALL)From – ソースデータベース ルーチンの新しいマッピングを作成します。 Setting Production Item – 構成可能な項目[文字列の折り返しの区切り]Target – パラメータタイプ:項目、ホスト、アダプタ[文字列の折り返しの区切り]Setting – パラメータ名[文字列の折り返しの区切り]Value – パラメータ値 Ensembleプロダクションの項目を構成します Ens.Production:ApplySettings メソッドを呼び出します SystemSetting Manifest Name – 構成パッケージのclass.propertyValue – 属性値 Configパッケージの属性値を設定します(Modifyメソッドを使用)。 User Manifest Username – ユーザー名PasswordVar –パスワードを含む変数Roles – ユーザーの役割のリストFullname – フルネームNamespace – 開始ネームスペースRoutine – 開始ルーチンExpirationDate –ユーザーが非アクティブになる日付ChangePassword –システムに次回ログインしたときにパスワードを変更するEnabled – ユーザーがアクティブかどうか ユーザーを作成または変更します。 Var Manifest Name – 変数名Value – 変数値 変数に値を割り当てます。 変数 ユーザー提供の変数 属性によっては、マニフェストの実行時に展開される式(文字列)を含めることができます。 次のように、展開できる式には3つのタイプがあります。 ${<Variable_name>} – マニフェストの実行時に計算される変数(ユーザ定義または環境変数; 下記参照)の値。 ${#<Parameter_name>} –コンパイル時にインストーラーのクラスから指定されたパラメーターの値に置き換えられます。 #{<Cache_ObjectScript_code>} —指定されたCaché ObjectScript文の値は、マニフェストの実行中に処理されます。 必要に応じて引用符を付けてください。 パラメータ値はコンパイル時に定義されるため、変数またはCaché ObjectScript文の一部にすることができます。 変数はCaché ObjectScriptコードの前に解釈されるため、Caché ObjectScript文で使用できます。例:#{$ZCVT("${NAMESPACE}","L")} システム変数 次の変数は常に使用可能です。 変数 説明 サンプル値 SourceDir (インストーラーの実行時にのみ使用可能)インストール(setup_cache.exeまたはcinstall)が実行されるディレクトリ。 /InterSystems/distr/ ISCUpgrade (インストーラーの実行時にのみ使用可能)新規インストールなのか、アップグレードなのかを示します。 この変数は、0(新規インストール)または1(アップグレード)のいずれかです。 0 (インストール)1 (アップグレード) CFGDIR INSTALLDIRを参照。 /InterSystems/Cache/ CFGFILE CPFファイルへのパス /InterSystems/Cache/cache.cpf CFGNAME インスタンスの名前 CACHE CPUCOUNT CPUコアの数 4 CSPDIR CSPディレクトリ /InterSystems/Cache/csp/ HOSTNAME Webサーバーの名前 SCHOOL15 HTTPPORT Webサーバーのポート 80 INSTALLDIR Cachéのインストールディレクトリ /InterSystems/Cache/ MGRDIR マネージャディレクトリ(mgr) /InterSystems/Cache/mgr/ PLATFORM オペレーティングシステム UNIX PORT Cachéスーパーサーバポート 1972 PROCESSOR プラットフォームの名前 x86-64 VERSION Cachéのバージョン 2015.1.1 デバッグ ノード属性の値としてどのような値が割り当てることができるのか理解に苦しむことがあります。これを把握するには、setupメソッドの生成されたintコードを確認してください。 ほとんどの場合、メインコールは %Installer.Installer クラスのオブジェクトである tInstaller<ElementName>に対して行われ、次に、システムメソッドを直接呼び出します。 または、ノード属性がクラスプロパティである %Installer.<ElementName>クラスのコードを確認することもできます。 プログラムコードは、 %OnBeforeGenerateCode、 %OnGenerateCode、 %OnAfterGenerateCode メソッドで生成されます。デバッグのため、インストーラーへの呼び出しをトランザクションにラップすることをお勧めします。 たとえば、 Caché内で行われたすべての変更を簡単に元に戻すためにTSTART/TROLLBACKコマンドを使うこともできます(ただし、新しいデータベースファイルの作成など、外部の変更は元に戻りません)。 最後に、LogLevel を 3 に設定することを忘れないでください。 例: MDX2JSONプロジェクトはインストーラーを提供します 。 プロジェクトをインストールするには、MDX2JSON.Installer クラスを含むinstaller.xmlファイルを任意のネームスペースにインポートします。管理ポータルから、またはファイルをスタジオにドラッグ&ドロップすることによってインポートを実行できます。次に、ターミナルで次のコマンドを実行します。 do ##class(MDX2JSON.Installer).setup() その結果、CachéはGitHubリポジトリからアプリケーションファイルをロードし、デフォルトの MDX2JSON ネームスペース /MDX2JSON データベースにインストールを実行し、MDX2SJONパッケージを %AllとSAMPLESにマップし、MDX2SJONグローバルを %Allにマップし、SAMPLESネームスペースは /MDX2JSON で定義されるRESTアプリケーションを作成します。 これらの手順はすべてターミナルで確認できます。 MDX2JSONインストーラーの詳細については、プロジェクトのreadmeを参照してください 。 追加の例 ドキュメントからの例 Samplesネームスペースの Sample.InstallerクラスCacheGitHubCIプロジェクトは、インストーラーを提供します 。SYSMONダッシュボードプロジェクトは、インストーラーを提供します 。DeepSee監査プロジェクトは、インストーラーを提供します 。 概要 %Installerは、InterSystems Caché および Ensemble に基づいてアプリケーションを配布およびデプロイするための便利なツールです。 参考: ドキュメント
お知らせ
Toshihiko Minamoto · 2022年3月3日

Caché、Ensemble、InterSystems IRIS メンテナンスリリースのご案内

注意事項:前回リリースしましたビルド2021.1.1.324.0には問題があります。 2021.1.1 メンテナンスリリースはWRCから削除し、ビルド2021.1.2.336.0 に更新しています。2021.1.2のコンテナ版はまもなくリリースする予定です。 2種類のメンテナンスリリースが利用可能です。 Caché 2018.1.6, Ensemble 2018.1.6, HSAP 2018.1.6 InterSystems IRIS 2020.1.2, IRIS for Health 2020.1.2, HealthShare Health Connect 2020.1.2 インストレーションキットやコンテナはWRC ソフトウェア配布サイト からダウンロードできます。 Container images for the Enterprise Editions of InterSystems IRISや IRIS for Health の Enterprise Editionのコンテナイメージ、すべての関連コンポーネントはInterSystems Container Registry から取得できます。 これらのリリースは、幅広い分野で多くのアップデートが行われたメンテナンスリリースです。リリースノート、アップグレードチェックリスト、クラスリファレンス、ガイド、リファレンス、チュートリアル、記事などが含まれています。 すべてのドキュメントは、docs.intersystems.comからアクセス可能です。 これらのリリースのビルド番号は以下の通りです。 バージョン 製品 ビルド番号 2018.1.6 Caché 、 Ensemble 2018.1.6.717.0 2018.1.6 Caché 評価用 2018.1.6.717.0su 2018.1.6 HealthShare Health Connect (HSAP) 2018.1.6HS.9063.0 2020.1.2 InterSystems IRIS 2020.1.2.517.0 2020.1.2 IRIS for Health 2020.1.2.517.0 2020.1.2 HealthShare Health Connect 2020.1.2.517.0 2020.1.2 IRIS スタジオ 2021.1.2.517.0 2021.1.2 InterSystems IRIS 2021.1.2.336.0 2021.1.2 IRIS for Health 2021.1.2.336.0 2021.1.2 HealthShare Health Connect 2021.1.2.336.0 2021.1.2 IRIS スタジオ 2021.1.2.336.0 InterSystems IRIS、IRIS for Healthのコンテナイメージ、ならびに関連コンポーネントについては InterSystems Container Registry から取得可能です。2020.1.2 を取得するコマンドは以下の通りです。 docker pull containers.intersystems.com/intersystems/iris:2020.1.2.517.0 docker pull containers.intersystems.com/intersystems/irishealth:2020.1.2.517.0 docker pull containers.intersystems.com/intersystems/iris-arm64:2020.1.2.517.0 docker pull containers.intersystems.com/intersystems/irishealth-arm64:2020.1.2.517.0 すべての利用可能なイメージの一覧を取得するには ICR ドキュメント をご参照ください。
記事
Toshihiko Minamoto · 2022年6月24日

Intersystems IRIS と組み込み Python の相互運用性

# 1. interoperability-embedded-python この概念実証では、**embedded Python** で **IRIS 相互運用フレームワーク**をどのように使用できるかについて示すことを目的としています。 ## 1.1. 目次 - [1. interoperability-embedded-python](#1-interoperability-embedded-python) - [1.1. 目次](#11-table-of-contents) - [1.2. 例](#12-example) - [1.3. コンポーネントの登録](#13-regsiter-a-component) - [2. デモ](#2-demo) - [3. 前提条件](#3-prerequisites) - [4. Docker を使用したインストール](#4-installation-with-docker) - [5. Docker を使用しないインストール](#5-installation-without-docker) - [6. サンプルの実行方法](#6-how-to-run-the-sample) - [7. リポジトリの内容](#7-whats-inside-the-repository) - [7.1. Dockerfile](#71-dockerfile) - [7.2. .vscode/settings.json](#72-vscodesettingsjson) - [7.3. .vscode/launch.json](#73-vscodelaunchjson) - [7.4. .vscode/extensions.json](#74-vscodeextensionsjson) - [7.5. src フォルダ](#75-src-folder) - [8. 新しいコンポーネントの追加方法](#8-how-to-add-a-new-component) - [8.1. InboundAdapter](#81-inboundadapter) - [8.2. OutboundAdapter](#82-outboundadapter) - [8.3. BusinessService](#83-businessservice) - [8.4. BusinessProcess](#84-businessprocess) - [8.5. BusinessOperation](#85-businessoperation) - [8.6. コンポーネントの登録](#86-regsiter-a-component) - [8.7. Grongier.PEX の直接利用](#87-direct-use-of-grongierpex) - [9. 今後の取り組み](#9-future-work) - [10. クレジット](#10-credits) ## 1.2. 例 ```python import grongier.pex import iris import MyResponse class MyBusinessOperation(grongier.pex.BusinessOperation): def OnInit(self): print("[Python] ...MyBusinessOperation:OnInit() is called") self.LOGINFO("Operation OnInit") return def OnTeardown(self): print("[Python] ...MyBusinessOperation:OnTeardown() is called") return def OnMessage(self, messageInput): if hasattr(messageInput,"_IsA"): if messageInput._IsA("Ens.StringRequest"): self.LOGINFO(f"[Python] ...This iris class is a Ens.StringRequest with this message {messageInput.StringValue}") self.LOGINFO("Operation OnMessage") response = MyResponse.MyResponse("...MyBusinessOperation:OnMessage() echos") return response ``` ## 1.3. コンポーネントの登録 **ObjectScript は不要です**。 これは、Grongier.PEX.Utils.RegisterComponent() メソッドを使用できるためです。 Embedded Python シェルから始めます。 ```sh /usr/irissys/bin/irispython ``` 次に、このクラスメソッドを使用して、新しい py ファイルを相互運用のためのコンポーネントリストに追加します。 ```python iris.cls("Grongier.PEX.Utils").RegisterComponent(,,,,) ``` 例: ```python iris.cls("Grongier.PEX.Utils").RegisterComponent("MyCombinedBusinessOperation","MyCombinedBusinessOperation","/irisdev/app/src/python/demo/",1,"PEX.MyCombinedBusinessOperation") ``` これはハックであり、本番用ではありません。 # 2. デモ 本番には純粋な Python によるコンポーネントが 4 つあります。 * 2 つのビジネスサービス: * Grongier.PEX.MyCombinedBusinessService: 同期メッセージがビジネスオペレーションに連続して送信されます。 * これらのメッセージは、JSON で作成されて Grongier.PEX.Message に格納される Python オブジェクトです。 * Python コード: src/python/demo/MyCombinedBusinessService.py * Grongier.PEX.MyBusinessService: 基本的に何も行いません。メッセージログを書き込む生のビジネスサービスです。 * Python コード: src/python/demo/MyBusinessService.py * 2 つのビジネスオペレーション: * Grongier.PEX.BusinessOperation: Grongier.PEX.MyCombinedBusinessService からメッセージを受け取ります。 * Python コード: src/python/demo/MyBusinessOperation.py * Grongier.PEX.CombinedBusinessOperation: Ens.StringRequest メッセージを受け取り、Ens.StringResponse で応答します。 * Python コード: src/python/demo/MyCombinedBusinessOperation.py Python ネイティブメッセージの新しい JSON トレース: # 3. 前提条件 [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) と [Docker desktop](https://www.docker.com/products/docker-desktop) がインストール済みであることを確認してください。 # 4. Docker を使用したインストール リポジトリを任意のローカルディレクトリに Clone/git pull します。 ```sh git clone https://github.com/grongierisc/interpeorability-embedded-python ``` このディレクトリでターミナルを開き、以下を実行します。 ```sh docker-compose build ``` プロジェクトで IRIS コンテナを実行します。 ```sh docker-compose up -d ``` # 5. Docker を使用しないインストール ローカルの IRIS インスタンスに *grongier_pex-1.0.0-py3-none-any.whl* をインストールします。 ```sh /usr/irissys/bin/irispython -m pip install grongier_pex-1.0.0-py3-none-any.whl ``` 次に、ObjectScript クラスを読み込みます。 ```ObjectScript do $System.OBJ.LoadDir("/opt/irisapp/src","cubk","*.cls",1) ``` # 6. サンプルの実行方法 [Production](http://localhost:52795/csp/irisapp/EnsPortal.ProductionConfig.zen?PRODUCTION=PEX.Production) を開いて起動します。 コードサンプルの実行が開始します。 # 7. リポジトリの内容 ## 7.1. Dockerfile 便宜上、コンテナに Python の依存関係(pip、venv)と sudo をインストールする dockerfile です。 インストールすると、dev ディレクトリを作成して、この git リポジトリをそれにコピーします。 これは、IRIS を起動して Titanics cvs ファイルをインポートし、**Python Shell** 用の **%Service_CallIn** を有効にします。 関連する docker-compose.yml を使用すると、ポート番号やキーのマッピング場所、ホストフォルダなどの追加パラメーターを簡単にセットアップできます。 この dockerfile は、Python モジュールの要件をインストールして終了します。 最後に実行されるのは、Jupyter ノートブックとそのカーネルのインストールです。 .env/ ファイルを使用して、docker-compose で使用される dockerfile を調整してください。 ## 7.2. .vscode/settings.json [VSCode ObjectScript プラグイン](https://marketplace.visualstudio.com/items?itemName=daimor.vscode-objectscript)を使って、VSCode で直ちにコーディングできるようにするための設定ファイルです。 ## 7.3. .vscode/launch.json VSCode ObjectScript でデバッグする場合の構成ファイルです。 [この記事に使用されるすべてのファイルについてお読みください。](https://community.intersystems.com/post/dockerfile-and-friends-or-how-run-and-collaborate-objectscript-projects-intersystems-iris) ## 7.4. .vscode/extensions.json コンテナで VSCode を使って実行する場合に、拡張機能を追加する推奨ファイルです。 [詳細情報はこちらをご覧ください。](https://code.visualstudio.com/docs/remote/containers) ![アーキテクチャ](https://code.visualstudio.com/assets/docs/remote/containers/architecture-containers.png) これは、組み込み Python を使って作業する場合に非常に役立ちます。 ## 7.5. src フォルダ ``` src ├── Grongier │ └── PEX // Python コードをラップする ObjectScript クラス │ ├── BusinessOperation.cls │ ├── BusinessProcess.cls │ ├── BusinessService.cls │ ├── Common.cls │ ├── Director.cls │ ├── InboundAdapter.cls │ ├── Message.cls │ ├── OutboundAdapter.cls │ ├── Python.cls │ ├── Test.cls │ └── Utils.cls ├── PEX // ラップされたクラスの例 │ ├── MyBusinessOperationWithAdapter.cls │ ├── MyBusinessOperationWithIrisAdapter.cls │ ├── MyBusinessOperationWithPythonAdapter.cls │ ├── MyBusinessService.cls │ ├── MyOutboundAdapter.cls │ └── Production.cls └── python ├── demo // このデモを実行するための実際の Python コード │ ├── MyBusinessOperation.py │ ├── MyBusinessOperationWithAdapter.py │ ├── MyBusinessOperationWithIrisAdapter.py │ ├── MyBusinessProcess.py │ ├── MyBusinessService.py │ ├── MyCombinedBusinessOperation.py │ ├── MyCombinedBusinessProcess.py │ ├── MyCombinedBusinessService.py │ ├── MyInboundAdapter.py │ ├── MyLoggingOperation.py │ ├── MyNonPollingStarter.py │ ├── MyOutboundAdapter.py │ ├── MyRequest.py │ ├── MyResponse.py │ ├── MySyncBusinessProcess.py │ └── SimpleObject.py ├── dist // Python の相互運用コンポーネントを実装するために使用する Wheel │ └── grongier_pex-1.0.0-py3-none-any.whl ├── grongier │ └── pex // 相互運用コンポーネントを実装するためのヘルパークラス │ ├── _BusinessHost.py │ ├── _BusinessOperation.py │ ├── _BusinessProcess.py │ ├── _BusinessService.py │ ├── _Common.py │ ├── _Director.py │ ├── _InboundAdapter.py │ ├── _Message.py │ ├── _OutboundAdapter.py │ └── __init__.py └── setup.py // Wheel をビルドするためのセットアップ ``` # 8. 新しいコンポーネントの追加方法 ## 8.1. InboundAdapter Python で InboundAdapter を実装するには、以下を実行します。 Python で grongier.pex.InboundAdapter からサブクラス化します。 OnTask() メソッドをオーバーライドします。 ## 8.2. OutboundAdapter Python で OutboundAdapter を実装するには、以下を実行します。 Python で grongier.pex.OutboundAdapter からサブクラス化します。 必要なアクションメソッドを実装します。 ## 8.3. BusinessService Python で BusinessService を実装するには、以下を実行します。 Python で grongier.pex.BusinessService からサブクラス化します。 OnProcessInput() メソッドをオーバーライドします。 ## 8.4. BusinessProcess Python で BusinessProcess を実装するには、以下を実行します。 Python で grongier.pex.BusinessProcess からサブクラス化します。 OnRequest()、OnResponse()、および OnComplete() メソッドをオーバーライドします。 ## 8.5. BusinessOperation Python で BusinessOperation を実装するには、以下を実行します。 Python で grongier.pex.BusinessOperation からサブクラス化します。 OnMessage() メソッドをオーバーライドします。 ## 8.6. コンポーネントの登録 組み込み Python シェルを起動します。 ```sh /usr/irissys/bin/irispython ``` 次に、このクラスメソッドを使用して、新しい py ファイルを相互運用のためのコンポーネントリストに追加します。 ```python iris.cls("Grongier.PEX.Utils").RegisterComponent(,,,,) ``` 例: ```python iris.cls("Grongier.PEX.Utils").RegisterComponent("MyCombinedBusinessOperation","MyCombinedBusinessOperation","/irisdev/app/src/python/demo/",1,"PEX.MyCombinedBusinessOperation") ``` ## 8.7. Grongier.PEX の直接利用 RegisterComponent ユーティリティを使用しない場合は、 Grongier.PEX.Business* コンポーネントを追加して、そのプロパティを構成できます。 * %module: * Python コードのモジュール名 * %classname: * コンポーネントのクラス名 * %classpaths: * コンポーネントのあるパス * これは、PYTHON_PATH のほかに必要な 1 つまたは複数のクラスパスである場合があります(複数の場合は '|'(パイプ)区切り)。 例: # 9. 今後の取り組み - Service と Operation のみがテスト済みです。 - Adapter は作業中です。 # 10. クレジット このコードの大部分は、Mo Cheng と Summer Gerry による Python 用 PEX を使用しています。 登録部分は、IRIS 2021.3 の未公開機能を使用しています。
お知らせ
Mihoko Iijima · 2022年7月12日

★投票開始!★InterSystems Full Stack コンテスト 2022

開発者の皆さん、こんにちは! InterSystems Full Stack コンテスト 2022 の投票が始まりました! 🔥 ベストアプリケーションだ! 🔥と思う作品に投票をお願いします! 投票方法は以下ご参照ください。 Experts nomination: インターシステムズの経験豊富な審査員がベストアプリを選び、Expert Nominationで賞品をノミネートします。 ⭐️ @Andreas.Dieckow, Principal Product Manager⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Robert.Kuszewski, Product Manager⭐️ @Raj.Singh5479, Product Manager⭐️ @akoblov, Support Specialist⭐️ @Daniel.Kutac, Senior Sales Engineer⭐️ @Guillaume.Rongier7183, Sales Engineer⭐️ @Steve.Pisani, Senior Solution Architect⭐️ @Eduard.Lebedyuk, Senior Cloud Engineer⭐️ @Alex.Woodhead, Technical Specialist⭐️ @Timothy.Leavitt, Development Manager ⭐️ @Jeffrey.Fried, Director of Product Management⭐️ @Evgeny.Shvarov, Developer Ecosystem Manager Community nomination: 開発者コミュニティのメンバーは、お好みのアプリケーションに対して1位~3位を指定しながら投票できます。 開発者コミュニティでのあなたの状態 順位 1位 2位 3位 開発者コミュニティに記事を掲載したり、OpenExchange(OEX)にアプリをアップロードしたことがある方 9点 6点 3点 開発者コミュニティに1つの記事を掲載した、または 1アプリケーションを OEX にアップロードしたことがある方 6点 4点 2点 開発者コミュニティへコメントや質問を投稿したことがある方 3点 2点 1点 エキスパートレベル 順位 1位 2位 3位 グローバルマスターズの VIP レベル または、InterSystems Product Managers 15点 10点 5点 グローバルマスターズの Ambassador レベル 12点 8点 4点 グローバルマスターズの Expert レベル または DC モデレーター 9点 6点 3点 グローバルマスターズの Specialist レベル 6点 4点 2点 グローバルマスターズの Advocate レベル または インターシステムズの従業員 3点 2点 1点 今回も「ブラインド投票」とします。 各応募作品への投票数は、誰にも分らないようになっています。1日1回、この記事のコメント欄に投票数を公開する予定です。 コンテストページ の表示順は、コンテストに応募した時期が早ければ早いほど、上位に表示されます。 メモ:新しいコメントの通知を受けるために、この投稿を購読することをお忘れなく!(記事末尾の ベルのアイコンをクリックするだけ!) 投票に参加するには Open Exchange へのサインインします(開発者コミュニティのアカウントを使用してください)。 投票ボタンは、開発者コミュニティ内で、質問/回答/記事の掲載/投稿に対するコメント など 記載いただいた方に対して有効になります。 ボタンが押せない場合は、コミュニティへのコメントやオリジナルの記事など、書き込みお願いします!詳細は、こちらの記事をご参照ください。 気が変わった場合は? - 選択をキャンセルして別のアプリケーションに投票できます。 ぜひ 🔥これだ🔥 と思う作品に投票お願いします! メモ:コンテストへ応募された作品は、投票週間中にバグを修正したり、アプリケーションを改良したりすることができますので、アプリケーションのリリースを見逃さずに購読してください。
記事
Mihoko Iijima · 2020年10月27日

【はじめてのInterSystems IRIS】Interoperability(相互運用性):メッセージ

この記事はこちらの投稿の続きの内容です。 前回の記事では、プロダクションとは?について確認しました。また、サンプルコードを動かしながらプロダクションに流れるメッセージの中身をトレース画面で確認しました。 今回は記事では、システム統合を行うための必要な開発内容の中から、コンポーネント間のデータ送受信に使用される メッセージ について、作成するときの考え方や定義方法を確認していきます。 プロダクション(前回の記事) メッセージ コンポーネント ビジネス・サービス ビジネス・プロセス ビジネス・オペレーション メッセージ を作成する前に、サンプルのテーマを再度確認しましょう。 ショッピングサイトを運営している会社があり、季節に合わせ商品情報の表示順を変更する作業を行っています。ところが、季節を問わず良く売れるもの、想定しなかった時期に売れるものもあり、現在の表示順変更ルールにうまく合いません。そこで、季節に合わせた表示順ではなく、そのときの気温にあわせた表示順に変更できないか検討した結果、購入物品に対してそのときの気温を調査する必要が出てきました。気象情報の確認には、外部の Web API が利用できるため、購入されたタイミングで気象情報を収集し、後で確認できるようにデータベースに情報を登録していく予定です。 このテーマから、以下の内容が確認できます。 外部から受信する情報は「購入した商品情報と気象情報の検索に使用する都市名」であることIRIS から外部システムへ処理を依頼するための送信情報は「都市名」であること処理結果である応答内容は「気象情報」であること このテーマから、システム統合に必要なコンポーネントを実装しますが、その前に、コンポーネントを動作させるためには、中継データであるメッセージを送受信する必要があり、メッセージを利用するためには、メッセージクラスを定義する必要があります。 メッセージクラスは、コンポーネントを動作させるためにどのような情報(=メッセージ)を送受信したらよいかを考えながら設計します。今回の流れでは、以下の2種類の情報が必要となります。 A) 気象情報を取得するため外部Web API に送信する都市名 B) DBに記録するための気象情報と購入商品名 A) の都市名 と B) の購入商品名 は、IRIS への入力情報に含めてもらうことで対応できます。 B) の気象情報は、外部 Web API の応答情報から取得できます。 確認できている情報から各コンポーネントを送受信するメッセージとしてどんな情報が必要になるかを考えた図が以下の通りです。 黄色い吹き出しの1行目がメッセージクラス名、2行目以降にプロパティに何を設定するか、を記載しています。 サンプルコードでは、以下3種類のメッセージを用意しました。 Start.Request(要求メッセージ)サービスからプロセス、プロセスから気象情報取得用オペレーションの呼び出しで、購入商品名と都市名を送信するために使用します。 Start.Response(応答メッセージ)気象情報取得用オペレーションの結果(気象情報)をプロセスに返送するために使用します。 Start.InsertRequest(要求メッセージ)プロセスからDB登録用オペレーションへ気象情報と購入商品名を送信するために使用します。 メッセージはスーパークラスの指定が決まっていて、要求メッセージは Ens.Request 、応答メッセージは Ens.Response を継承します。 以下、要求メッセージ:Start.Request の定義例です。 以下、応答メッセージの定義例です。 DB登録依頼で送付する要求メッセージの Start.InsertRequest は以下の通りです。(天気情報を取得後に返送される Start.Response の情報をそのまま WeatherInfoプロパティに設定する予定で定義しています) スタジオで作成する場合、メッセージ作成用ウィザードを利用することもできます。 ご参考)スタジオでレスポンスクラスを作成する手順 ここまでのポイント メッセージクラスは、コンポーネントを動作させるために「どのような情報(=メッセージ)を送受信したらよいか」を考えながら設計します。 各コンポーネントを動かすための情報であるメッセージクラスが実装できたら、次はコンポーネント用クラスを作成します。
お知らせ
Toshihiko Minamoto · 2023年1月4日

InterSystemsコンテナレジストリ Webユーザインターフェースのお知らせ

InterSystemsコンテナレジストリ Webユーザインターフェースのお知らせ InterSystemsはこの度、InterSystems コンテナレジストリ (ICR) Web ユーザインターフェースをリリースしました。このツールはICR上に多くあるコンテナイメージを見つけやすく、使いやすくできるようデザインされたものです。 InterSystems コンテナレジストリUIは以下のサイトです。 https://containers.intersystems.com/contents コミュニティエディションコンテナ When you visit the ICR ユーザインターフェース,を訪問すると、コミュニティエディションといったパブリックに利用可能なコンテナにアクセスできます。画面左のナビゲーションで必要なプロダクトファミリを選択し、コンテナを選択、最終的に特定のバージョンを指定します。 エンタープライズエディションコンテナ IRISエンタープライズエディションといったプライベートコンテナを観るにはログインボタンをクリックしてください。一度ログインいただくと、画面左のナビゲーションにはアクセスできるすべてのコンテナが表示されます。 ぜひ、ご利用ください!
お知らせ
Mihoko Iijima · 2021年10月26日

★受賞者発表!★InterSystems Interoperability コンテスト 2021

開発者の皆さん、こんにちは! InterSystems Interoperability コンテスト 2021 の投票結果が発表されました! 今回も、コーディングコンテストにご興味おもちいただきありがとうございました! この記事では、コンテスト受賞者を発表します! 受賞された開発者の皆さん、👏おめでとうございます!🎊 🏆 Experts Nomination - 特別に選ばれた審査員によって選出されました。 🥇 1位 - $4,000 は、Node-RED node for InterSystems IRIS を開発された @Dmitry.Maslennikov さんに贈られました! 🥈 2位 - $2,000 は、IRIS Interoperability Message Viewer を開発された @Henrique さんに贈られました! 🥉 3位 - $1,000 は、IRIS Big Data SQL Adapter を開発された @Yuri.Gomes さんに贈られました! さらに! 🏅 $100 - appmsw-telealerts を開発された @MikhailenkoSergey さんに贈られました! 🏅 $100 - CSV to M$-OFX を開発された @Robert.Cemper1003 さんに贈られました! 🏅 $100 - ESKLP を開発された @Aleksandr.Kalinin6636 さんに贈られました! 🏅 $100 - LabResultsVerification-hl7 を開発された @Muhammad.Waseem さんに贈られました! 🏅 $100 - interoperability-for-money を開発された @Oliver.Wilms さんに贈られました! 🏅 $100 - iris-crypto-tracker を開発された @Evgeniy.Potapov さんに贈られました! 🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。 🥇 1位 - $1,000 は、IRIS Interoperability Message Viewer を開発された @Henrique に贈られました! 🥈 2位 - $500 は、Node-RED node for InterSystems IRIS を開発された @Dmitry.Maslennikov に贈られました! 🥉 3rd位 - $250 は、IRIS Big Data SQL Adapter を開発された @Yuri.Gomes に贈られました! 🎊 受賞者の皆様、おめでとうございます!👏 今回も、コンテストにご注目いただきありがとうございました!
お知らせ
Mihoko Iijima · 2021年9月13日

★受賞者発表!★InterSystems Analytics コンテスト2021

開発者の皆さん、こんにちは! InterSystems Analytics コンテスト2021 は終了しました。コーディングコンテストにご参加いただきありがとうございました! この記事では、コンテスト受賞者を発表します! 受賞された開発者の皆さん、👏おめでとうございます!🎊 🏆 Experts Nomination - 特別に選ばれた審査員によって選出されました。 🥇 1位 - $4,000 は、promjet-stats を開発された @Evgeniy.Potapov さんに贈られました! 🥈 2位 - $2,000 は、iris-analytics-datastudio を開発された @Dmitry.Maslennikov さんに贈られました! 🥉 3位 - $1,000 は、pop-song-analytics を開発された @henry さんに贈られました! 🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。 🥇 1位 - $1,000 は、iris-analytics-datastudio を開発された @Dmitry.Maslennikov さんに贈られました! 🥈 2位 - $500 は、AlertDashboard を開発された @John Pan さんに贈られました! 🥉 3位 - $250 は、promjet-stats を開発された @Evgeniy.Potapov さんに贈られました! 🎊 受賞者の皆様、おめでとうございます!👏 今回も、コンテストにご注目いただきありがとうございました!
記事
Mihoko Iijima · 2020年6月28日

【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その3:IRIS でクラス定義を作ろう(オブジェクト操作の練習)

IRIS でのクラス定義の作成、ObjectScript でインスタンスの生成と永続化(保存)の方法について解説します。 もくじ 最初~1:55 前回のビデオの学習 1:55~2:45 今回の説明内容解説 2:45~5:15 クラスの種類について 5:15~13:20 作成するクラスの説明、定義説明 13:20~18:44 スタジオでの作成実演 18:44~22:35 VS Codeでの作成実演 22:35~27:40 ObjectScriptでインスタンス生成 27:40~29:38 インスタンス生成~永続化の実演 29:38~34:54 データの確認 34:54~40:13 マルチモデル(永続クラス=テーブル)の確認 40:13~51:25 JSONとXMLアダプタの操作実演 51:25~57:36 クラスメソッドの定義と実行 57:36~最後まで まとめ ※ YouTubeでご覧いただくと「もくじ」の秒数クリックでビデオをジャンプできます。 その他ビデオ一覧は索引ページをご参照ください。 クラス定義例 /// PersonクラスClass Test.Person Extends %Persistent{ /// 名前Property Name As %Library.String; /// メールProperty Email As %Library.String; ClassMethod CreateEmail(account As %String) As %String{ if $get(account)=""{ return "" } return account_"@mail.com"} インスタンス生成~保存までの実行例 インスタンス生成(Test.Personに継承された%New()メソッドを使用) set person=##class(Test.Person).%New() プロパティに値を割り当てる(文字列は二重引用符で括ります) set person.Name=”テスト太郎”set person.Email=”taro@mail.com” データベースに保存(Test.Personに継承された%Save()メソッドを使用) set status=person.%Save() 保存が成功したかどうかの確認(成功すると 1を返し、失敗すると内部文字列を返します) write status 保存失敗時のメッセージ確認(システムオブジェクトのStatusクラスを利用します) write $system.Status.GetErrorText(status) CreateEmail()の実行 戻り値がある場合 set modori=##class(Test.Person).CreateEmail("abc") 戻り値がない場合 do modori=##class(Test.Person).CreateEmail("abc") グローバル変数を直接操作する例 ID=1の Test.Person の名前(Name)とメール(Email)を出力 write $LIST(^Test.PersonD(1),2)write $LIST(^Test.PersonD(1),3) ID=1 の Test.Person の名前(Name)を更新 set $LIST(^Test.PersonD(1),2)="やまだたろう" JSONアダプタの利用例 Test.Person クラスのスーパークラスに %JSON.Adapter クラスを追加する例(追加後、コンパイルが必要です) Class Test.Person Extends (%Persistent, %JSON.Adaptor) JSONオブジェクトを作成し、JSON アダプタを利用して Test.Person の新規インスタンス生成する例 set json={} set json.Name="すずき",json.Email="suzuki@mail.com"set p=##class(Test.Person).%New()set st=p.%JSONImport(json) 既存オブジェクトをオープンし(例ではID=1をオープン)JSON文字列に変換 set p=##class(Test.Person).%OpenId(1)set st=p.%JSONExportToString(.moji)write moji XMLアダプタの使用例 Test.Person クラスのスーパークラスに %XML.Adapter クラスを追加する例(追加後、コンパイルが必要です) Class Test.Person Extends (%Persistent, %XML.Adaptor) 既存オブジェクトをオープンし(例ではID=1をオープン)XMLに変換 set p=##class(Test.Person).%OpenId(1)set writer=##class(%XML.Writer).%New()set writer.Indent=1set st=writer.RootObject(p)write st // 1が返れば成功 出力された XML を任意のファイル名で保存し、名前やメールアドレスを編集し、今度は IRIS から XML を Read します。 set reader=##class(%XML.Reader).%New()set file="c:\kit\sample.xml"set st=reader.OpenFile(file)write st // 1が返れば成功 読み込んだ XML と Test.Person を関連付けて、Test.Person のインスタンスを生成する do reader.Correlate("Person","Test.Person")do reader.Next(.obj,.st)zwrite obj
お知らせ
Yoichi Miyashita · 2021年4月13日

InterSystems IRIS および IRIS for Health バージョン 2020.4 リリースのご案内

インターシステムズは InterSystems IRIS および IRIS for Health バージョン2020.4 をリリースしました。本バージョンは、継続的デリバリ(CD) リリースのため、Docker コンテナ として知られる OCI (Open Container Initiative)形式 (for Linux x86-64 および Linux ARM64) のみ入手いただけます。 コンテナイメージは OCI に準拠した Linux x86-64 および Linux ARM64 対応のランタイムエンジンで動作可能です。 あわせて IRIS Studio 2020.4 もリリースしました。 リリースのビルド番号は 2020.4.0.547.0 です。 【新機能のご紹介】InterSystems IRIS Data Platform 2020.4 には、以下の新機能が含まれます。 アプリケーション および インターフェース開発者向け機能 Java SE 11 LTS のサポート (Oracle OpenJDK, AdoptOpenJDK) JDBC 接続プールのサポート セグメント化された仮想ドキュメントのルーティングルールに利用できる "foreach" アクションの導入 データベース および システム管理者向け機能 ICM において、System Alerting and Monitoring (SAM) と InterSystems API Manager (IAM) の導入をサポート 管理タスク向け SQL シンタックスの拡張 InterSystems レポートの導入を簡素化 InterSystems IRIS for Health 2020.4 には、上記に加えて、以下の新機能が含まれます。 FHIR プロファイルのサポートを含む、FHIR サポートの強化 IHE プロファイル RMD のサポート HL7 マイグレーションツールにおける DataGate のサポート 【開発環境】InterSystems IRIS Studio 2020.4 は、Microsoft Windows で動作するスタンドアロンの統合開発環境です。InterSystems IRIS と IRIS for Health 2020.4 以前で動作します。 あわせて InterSystems IRIS は、VSCode-ObjectScript プラグインを利用してVisual Studio Code でのアプリケーション開発もサポートします。Visual Studio Code は Microsoft Windows, Linux, MacOS で動作します。 【キットのご案内】(1) エンタープライズエディションInterSystems コンテナレジストリ (ICR) から、次のコマンドで入手いただけます。 docker pull containers.intersystems.com/intersystems/iris:2020.4.0.547.0 docker pull containers.intersystems.com/intersystems/irishealth:2020.4.0.547.0 ICR のイメージ一覧は ドキュメント(英語)をご覧ください。 (2) コミュニティエディションDocker Store から、次のコマンドで 入手いただけます。 docker pull store/intersystems/iris-community:2020.4.0.547.0 docker pull store/intersystems/iris-community-arm64:2020.4.0.547.0 docker pull store/intersystems/irishealth-community:2020.4.0.547.0 docker pull store/intersystems/irishealth-community-arm64:2020.4.0.547.0 上記(1)(2)のコンテナイメージは全て、WRC ダウンロードページのContinuous Delivery カテゴリから TAR 形式で入手いただけます。 (3) Studio, ODBC ドライバ, Web GatewayInterSystems IRIS Studio, ODBC ドライバ および Web Gateway などの各種単体コンポーネントは、WRC ダウンロードページの Components カテゴリから入手いただけます。 【製品ドキュメント】ドキュメント(英語)は以下の通りです。 (1) サポートプラットフォーム (2) InterSystems IRIS 2020.4 ドキュメント リリースノート (3) InterSystems IRIS for Health 2020.4 ドキュメント リリースノート
お知らせ
Mihoko Iijima · 2021年5月5日

第12回 InterSystems IRIS プログラミングコンテスト(FHIR Accelerator)開催!

開発者の皆さん、こんにちは!GW は、のんびりゆったり良いお休みになりましたでしょうか🎏? 休み明けにぴったりのコンテストテーマが発表されました!今回は 🔥 FHIR Accelerator 🔥 です! 🏆 InterSystems FHIR Accelerator Programming Contest 🏆 InterSystems FHIR-as-a-service on AWS を使用する、または、InterSystems IRIS FHIR Accelerator を使用したソリューションの開発に役立つアプリケーションを開発し、ご応募ください! 応募期間は 2021年5月10日~5月30日 です! 💰 賞金総額: $8,750 💰 (投票期間は 2021年5月31日~6月6日、勝者発表は 6月7日を予定しています) 優勝特典 1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。 🥇 1位 - $4,000 🥈 2位 - $2,000 🥉 3位 - $1,000 2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。 🥇 1位 - $1000 🥈 2位 - $500 🥉 3位 - $250 複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。 参加資格 どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます) 👥 開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます! 1チーム 2~5名 までご参加いただけます。 チームでご応募いただく場合は、アプリケーションの README にチームメンバー名の記載をお忘れなく!!(開発者コミュニティのプロファイルのリンクもお願いします) コンテストのスケジュール 5月10日~5月30日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=3週間です。この期間内であればアップロード後も自由に編集できます。) 5月31日~6月6日 投票(1週間) 6月7日 勝者発表(US時間に発表します) コンテストのテーマ 💡 InterSystems IRIS FHIR Accelerator as a service 💡 InterSystems FHIR-as-a-service on AWS を使用したアプリケーション、または InterSystems IRIS FHIR Accelerator を使用したソリューションの開発に役立つアプリケーションをご応募ください。 アプリケーションの具体例としては U.S. Core Implementation Guide を含む FHIR R4 をサポートしているアプリケーション FHIR API をテストでき、理解するために役に立つ開発者用ポータルの提供 API キーや OpenID Connect など、複数の認証方法に対応しているアプリケーション sFTP 経由で FHIR Bundle の一括インポートが行えるアプリケーション FHIR リクエストデータのロギングが行えるアプリケーション HIPAA と GDPR をサポートする ISO 27001:2013 と HITRUST 認証を取得した AWS インフラストラクチャ上に構築したアプリケーション 要件は以下の通りです。 応募対象となるアプリケーション Open Exchange で新規作成したアプリケーション、または Open Exchange に既にUploadされたアプリケーションであっても大幅に改善されている内容はご応募いただけます。 コミュニティの担当チームは、コンテストへの応募を承認する前に申請された全アプリケーションをレビューします。 アプリケーションは、InterSystems IRIS FHIR as a service を使用するあらゆる技術で構築できます。 アプリケーションはオープンソースで、GitHubで公開されている必要があります。 アプリケーションの README ファイルは、英語で記述してください(日本語で記述したものがあればそのまま掲載いただき、英文の追記をお願いします)。また、インストール手順や、アプリケーションがどのように動作するかの説明、またはビデオデモを含めてください。 InterSystems ObjectScript で記述したソースコードがある場合は、(XMLでエクスポートしたファイルではなく)UDL 形式 で提供する必要があります。例 上記要件は、変更される場合もあります。予めご了承ください。 Helpful resources 1. 開発環境テンプレート 近日公開予定です。 2. ドキュメント(英語) InterSystems IRIS FHIR Accelerator Service 3. InterSystems FHIR を対応しているオンラインコース Learn FHIR for Software Developers Building SMART on FHIR Apps with InterSystems FHIR Sandbox Exploring FHIR Resource APIs Using InterSystems IRIS for Health to Reduce Readmissions Connecting Devices to InterSystems IRIS for Health Monitoring Oxygen Saturation in Infants 同じテーマを利用した日本語による記事もあります(日本語版開発環境テンプレートでは、Bundle リソースで登録できるように改良しています)。詳しくは、「FHIR R4 リソースリポジトリを簡単にお試しいただける開発環境テンプレートのご紹介」をご参照ください。 FHIR Integration QuickStart 日本語による REST クライアントから FHIR R4 リソースリポジトリへアクセスする方法をご紹介するビデオはこちら(日本語) 4. ビデオ Getting Started with the InterSystems IRIS FHIR Accelerator Service on AWS (日本語)動画:FHIR+IRIS for Health 101 この動画では、FHIR をご存じない方に向けて FHIR の概要を解説し、日本における FHIR 標準化活動の状況や国内外の事例を紹介しています。後半の16分~くらいからは、InterSystems IRIS for Health が提供する FHIR リポジトリに代表される FHIR 関連機能と、今後の機能ロードマップを紹介しています。 (日本語)FHIR in the Cloud ー FHIR アクセレレータ・サービスのご紹介 FHIR Accelerator Service については動画の10分ごろから解説が始まります。 5. FHIR についての Q&A : コミュニティの記事については、FHIR タグで探してください。 FHIR tag (US) FHIRタグ(JP) community.fhir.org へ質問する 6. コンテスト応募方法(このページ末尾のビデオをご参照ください) 審査及び投票ルール 投票ルールは近日公開します。 皆様からの✨素敵な✨プロジェクトをお待ちしております!コミュニティのコーディングマラソンに参加して、優勝を目指しましょう!(ง`0´)ง ❗️ コンテスト規約については、こちらをご参照ください。❗️ ご応募方法について 以下の応募方法ビデオをご参照ください。 以下、コンテストに応募する迄の手順をご説明します。 コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。 1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。 2、コンテスト用アプリケーションを作成します。 3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。 初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。 git config --global user.name "ここにユーザ名" git config --global user.email "ここにメールアドレス” 4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。 リポジトリ作成後、リモートリポジトリのURLをコピーします。 5、リモートのGitリポジトリへPushします。 git push ここにリモートのリポジトリのURL 6、OpenExchangeにログインし、アプリケーションを追加します。 ※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。 InterSystems IRIS FHIR Accelerator Service (FHIRaaS) を AWS で利用するための事前準備についての記事を追加しました! ぜひご参照ください
お知らせ
Mihoko Iijima · 2020年10月12日

★受賞者発表!★第6回 InterSystems IRIS プログラミングコンテスト(Full Stackコンテスト)

開発者の皆さんこんにちは! 第6回 InterSystems IRIS プログラミングコンテスト(Full Stackコンテスト) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。 今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します! 🏆 審査員賞 - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。 🥇 1位 - $1,500 は npm-iris を開発された Henrique Gonçalves Dias さんに贈られました! 🥈 2位 - $1,000 は apptools-admin を開発された Sergey Mikhailenk さんに贈られました! 🥉 3位 - $500 は realworld-intersystems-iris を開発された Dmitriy Maslenniko さんに贈られました! 🏆 開発者コミュニティ賞 - 最も多くの票を獲得したアプリケーションに贈られます。 🥇 1位 - $1,000 は npm-iris を開発された Henrique Gonçalves Dias さんに贈られました! 🥈 2位 - $250 は apptools-admin を開発された Sergey Mikhailenk さんに贈られました! 🥈 2位 - $250 は restoreUI を開発された Vasiliy Bondar さんに贈られました! 🎊 受賞者の皆様、おめでとうございます!👏 今回の Full Stack コンテストにご注目いただきありがとうございます! 見事1位🎊に輝きましたエンリケさんより、アプリケーション概要の日本語解説が投稿されています!ありがとうございます! ぜひ、ご参照ください! さて、次回のコンテストは・・・・・・? 近日中に発表予定です!ご期待ください! 皆さん、こんにちは!どうもありがとうございました