検索

クリアフィルター
記事
Toshihiko Minamoto · 2021年7月28日

InterSystems API Management で OAuth 2.0 を使用して API を保護する - パート 3

この 3 部構成の記事では、IAM を使って、以前に IRIS にデプロイされた認証されていないサービスに OAuth 2.0 標準に従ったセキュリティを追加する方法を説明します。 [パート 1](https://community.intersystems.com/post/securing-your-apis-oauth-20-intersystems-api-management-%E2%80%93-part-1) では、サービスを保護するプロセス全体を理解しやすくするために、IRIS と IAM の基本的な定義と構成を示しながら OAuth 2.0 の背景を説明しました。 [パート 2](https://community.intersystems.com/post/securing-your-apis-oauth-20-intersystems-api-management-%E2%80%93-part-2) では、着信リクエストに存在するアクセストークンを検証し、検証が成功した場合にはそのリクエストをバックエンドに転送するように IAM を構成する手順について詳しく説明しました。 連載の最後となるこのパートでは、IAM がアクセストークンを生成(承認サーバーとして機能します)してそれを検証するために必要な構成と、重要な最終考慮事項を説明します。 IAM をお試しになりたい方は、InterSystems 営業担当者にお問い合わせください。 シナリオ 2: 承認サーバーとアクセストークンのバリデーターとしての IAM このシナリオでは、最初のシナリオとは異なり、「OAuth 2.0 Authentication」というプラグインを使用します。 このリソース所有者パスワード資格情報フローで IAM を承認サーバーとして使用するには、クライアントアプリケーションがユーザー名とパスワードを認証する必要があります。 IAM からアクセストークンを取得するリクエストは、認証が成功した場合にのみ行う必要があります。 プラグインを「SampleIRISService」に追加しましょう。 以下のスクリーンショットからわかるように、このプラグインを構成するために入力が必要なフィールドがいくつかあります。 まず、「SampleIRISService」の ID を[service_id]フィールドに貼り付けて、このプラグインをサービスに適用します。 [config.auth\_header\_name]フィールドには、承認トークンを運搬するヘッダー名を指定します。 ここでは、デフォルト値の「authorization」のままにします。 「OAuth 2.0 Authentication」プラグインは、認可コードグラント、クライアント資格情報、インプリシットグラント、またはリソース所有者パスワード資格情報グラントの OAuth 2.0 フローをサポートしています。 この記事ではリソース所有者パスワードを使用しているため、[config.enable\_password\_grant]チェックボックスをオンにします。 [config.provision_key]フィールドには、プロビジョンキーとして使用される任意の文字列を入力します。 この値は、IAM にアクセストークンをリクエストするために使用されます。 ここでは、ほかのすべてのフィールドはデフォルト値のままにしました。 各フィールドの完全なリファレンスは、[こちら](https://docs.intersystems.com/iris20193/csp/docbook/apimgr/plugins/oauth2.html)からアクセスできるプラグインのドキュメントをご覧ください。 最終的に、プラグイン構成は次のようになります。 プラグインが作成されたら、「ClientApp」コンシューマーへの資格情報を作成する必要があります。 作成するには、左メニューの[コンシューマー]に移動して[ClientApp]をクリックします。 次に[資格情報]タブをクリックして[新しい OAuth 2.0 アプリケーション]ボタンをクリックします。 次のページでは、[名前]フィールドにアプリケーションを識別するための任意の名前を入力し、[client\_id]フィールドと[client\_secret]にクライアント ID とクライアントシークレットを定義し、[redirect_uri]フィールドに承認後にユーザーが送信されるアプリケーションの URL を入力します。 そして、[作成]をクリックします。 これで、リクエストを送信する準備が整いました。 最初に行うのは、IAM からアクセストークンを取得するためのリクエストです。 「OAuth 2.0 Authentication」プラグインは自動的に、作成済みのルートに「/oauth2/token」パスを追加して、エンドポイントを作成します。 注意: HTTPS プロトコルと、TLS/SSL リクエストをリスンする IAM のプロキシポート(デフォルトポートは 8443)を使用していることを確認してください。 これは OAuth 2.0 の要件です。 したがって、この場合、次の URL に POST リクエストを行う必要があります。 **https://iamhost:8443/event/oauth2/token** リクエスト本文に、次の JSON を含める必要があります。 {    "client_id": "clientid",    "client_secret": "clientsecret",    "grant_type": "password",    "provision_key": "provisionkey",    "authenticated_userid": "1" }   ご覧のとおり、この JSON には「OAuth 2.0 Authentication」プラグイン作成中に定義した値(「grant\_type」や「provision\_key」など)とコンシューマーの資格情報の作成中に定義した値(「client\_id」や「client\_secret」など)が含まれています。 提供されたユーザー名とパスワードが正しく認証された場合には、クライアントアプリケーションによって「authenticated_userid」パラメーターも追加される必要があります。 この値は、認証されたユーザーを一意に識別するために使用されます。 リクエストとそれに対応するレスポンスは次のようになります。   これで、上記のレスポンスの「access_token」値を次の URL への GET リクエストの「ベアラートークン」として含めて、イベントデータを取得するリクエストを行えるようになりました。 **https://iamhost:8443/event/1** アクセストークンが期限切れになった場合は、アクセストークンを取得するために使用したのと同じエンドポイントに、わずかに異なる本文を使って POST リクエストを送信し、期限切れのアクセストークンととも受け取ったリフレッシュトークンを使用して、新しいアクセストークンを生成することができます。 {    "client_id": "clientid",    "client_secret": "clientsecret",    "grant_type": "refresh_token",    "refresh_token": "E50m6Yd9xWy6lybgo3DOvu5ktZTjzkwF" }   リクエストとそれに対応するレスポンスは次のようになります。 「OAuth 2.0 Authentication」プラグインには、アクセストークンを表示して無効にするという興味深い機能があります。 トークンを一覧表示するには、次に示す IAM の管理 API のエンドポイントに GET リクエストを送信します。 **https://iamhost:8444/{workspace\_name}/oauth2\_tokens** 上記の {workspace_name} は使用される IAM ワークスペースの名前です。 RBAC を有効している場合に備え、IAM の管理 API を呼び出すために必要な資格情報を入力してください。 「credential\_id」は ClientApp コンシューマー内に作成した OAuth アプリケーションの ID(この場合は SampleApp)で、「service\_id」はこのプラグインが適用される「SampleIRISService」の ID であることに注意してください。 トークンを無効にするには、次のエンドポイントに DELETE リクエストを送信します。 **https://iamhost:8444/Sample/oauth2\_tokens/{token\_id}** 上記の {token_id} は無効にされるトークンの ID です。 無効化されたトークンを使おうとした場合、この無効なトークンをベアラートークンとして含む GET リクエストを 次の URL に送信すると、トークンが無効であるか期限切れであるというメッセージが表示されます。 **https://iamhost:8443/event/1** 最終的な考慮事項 この記事では、IRIS にデプロイされている認証されていないサービスに対し、IAM で OAuth 2.0 認証を追加する方法を示しました。 サービスそのものは、IRIS で認証されないままとなることに注意してください。 したがって、IRIS サービスのエンドポイントを IAM レイヤーを介さずに直接呼び出すと、情報は認証なしで表示されます。 そのため、ネットワークレベルでセキュリティルールを設定し、不要なリクエストが IAM レイヤーをバイパスしないようにすることが重要です。 IAM の詳細については[こちら](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AIAM)をご覧ください。 IAM をお試しになりたい方は、InterSystems 営業担当者にお問い合わせください。
記事
Toshihiko Minamoto · 2025年5月16日

Auth0 と InterSystems IRIS FHIR サーバーを使った SMART On FHIR アプリケーションの開発 - Angular アプリケーション

Auth0 と InterSystems IRIS FHIR リポジトリ使った SMART On FHIR に関する連載最終回では、Angular 16 で開発したアプリケーションをレビューします。 このソリューションに定義されたアーキテクチャがどのように構成されているかを思い出しましょう。 フロントエンドのアプリケーションは 2 列目で、ご覧のように 2 つのことを行います。 ログインリクエストを Auth0 にリダイレクトし、レスポンスを受信する。 REST 経由でリクエストを FHIR サーバーに送信し、そのレスポンスを受信する。 Angular Angular は TypeScript が開発し、Google が管理するオープンソースの Web アプリケーションフレームワークで、シングルページ Web アプリケーションの作成と管理に使用されます。 この「シングルページアプリケーション」デザイン手法によって、はるかに動的なユーザー向けアプリケーションを設計することができます。 最初の記事で説明したとおり、ここではアプリケーションサーバーとリバースプロキシとして NGINX を使用し、呼び出しヘッダーがサーバーの呼び出しヘッダーに一致するように変更して、CORS から派生する問題を回避します。 アプリケーションのデザイン モバイルアプリケーションのデザインをシミュレートするように、Angular Material を使ってアプリケーションを設計しました。 この例では、アプリケーションは心拍数、血圧、および体重などの一連の患者データを記録することを目的としており、このために、2 種類の FHIR リソースをサーバーに送信します。1 つ目はユーザーがデータを登録する Patient タイプリソースで、2 つ目は、送信しようとしている各タイプのデータを送信する Observation リソースに対応します。 アプリケーションには、記録されたデータの変化がグラフで表示されます。 ログイン画面 ユーザーがパス https:\\localhost にアクセスすると最初の画面が表示され、そこからログインをリクエストできます。 ログインボタンをクリックすると、アプリケーションは構成済みの API に対して有効化された Auth0 ページに自動的にユーザーをリダイレクトします。 ユーザー名とパスワードを入力すると、Auth0 はデータへのアクセス許可をアプリケーションに付与するよう求めます。 データへのアクセスが確認されたら、Auth0 は、構成プロセス中に指定した URL にリダイレクトします。 アクセストークンが生成されると、Auth0 ライブラリは、サーバーに対して発行するすべての呼び出しのヘッダーにそのトークンを含めるようになります。 これは以下の図で確認できます。 最初の画面 ログインが完了すると、ログインユーザーが使用できる情報を FHIR サーバーにリクエストする最初の通信が発生します。これには、パラメーターによるクエリを使用して、次のような GET 呼び出しを送信します。 https://localhost:8443/smart/fhir/r5/Patient?email=lperezra%40intersystems.com サーバーのレスポンスは次の情報を含む Bundle タイプリソースです。 { "resourceType":"Bundle", "id":"8c5b1efd-cfdd-11ee-a06b-0242ac190002", "type":"searchset", "timestamp":"2024-02-20T10:48:14Z", "total":0, "link":[ { "relation":"self", "url":"https://localhost:8443/smart/fhir/r5/Patient?email=lperezra%40intersystems.com" } ] } ご覧のように、そのメールアドレスを使用する患者は合計 0 人であるため、アプリケーションにはデータを登録できる最初の画面が表示されます。 ご覧のように、メールアドレスのフィールドにはログインユーザーのアドレスが入力されています。これは、最初のクエリで見たように、メールアドレスを ID として使用するためです。 フォームの入力が完了したら、POST 経由で次のような呼び出しを送信します。 https://localhost:8443/smart/fhir/r5/Patient Patient リソースによって形成されたメッセージ本文: { "resourceType":"Patient", "birthDate":"1982-03-08", "gender":"male", "identifier":[ { "type":{ "text":"ID" }, "value":"12345678A" } ], "name":[ { "family":"PÉREZ RAMOS", "given":[ "LUIS ÁNGEL" ] } ], "telecom":[ { "system":"phone", "value":"600102030" }, { "system":"email", "value":"lperezra@intersystems.com" } ] } 患者データがサーバーに登録され、患者のクエリによって結果が返されるようになったため、さまざまな経過観察を記録できる準備が整いました。 最初の画面がどのように表示されるか見てみましょう。 経過観察画面 患者のデータを送信したのと同じ方法で、特定の画面から経過観察を送信します。 サーバーに送信されたリソースごとに、アプリケーションは新しい点をグラフに追加します。 これを行うために、そのユーザーに属する Observation タイプリソースをリクエストするクエリをサーバーに発行します。 https://localhost/smart/fhir/r5/Observation?patient=Patient/1 すると、サーバーはもう一度、その患者に対して記録されたすべての経過観察を含む Bundle タイプリソースを返します。 結果が取得されたので、アプリケーションはすべての数値を抽出し、関連するグラフを構築します。 まとめ この記事と前回の 2 つの記事で確認したように、SMART On FHIR アプリケーションの設計と作成はそれほど複雑ではなく、FHIR サーバーで使用できるすべての機能を利用するアプリケーションを素早くアジャイルに構築することができます。 この種のアプリケーションでは、データに対する CRUD タイプの操作を管理する複雑なバックエンドの開発が不要であり、OAuth2 を使用することで、アプリケーションのユーザーを管理する必要もありません。その機能は Auth0 または選択した認証・承認サーバーに任せることができます。 SMART On FHIR では、簡単かつ単純な方法で、患者と医療専門家に対し医療データ管理に必要なツールを提供することができます。 お読みいただきありがとうございました!
お知らせ
Toshihiko Minamoto · 2023年1月20日

InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.1.2がリリースされました

InterSystems IRIS for Health, and HealthShare Health Connect のメンテナンスリリースとして2022.1.2 をリリースしました。このリリースは2022.1.0ならびに2022.1.1からの機能追加やバグフィックスを提供します。 変更の詳細については以下のページをご覧ください。 InterSystems IRIS InterSystems IRIS for Health HealthShare Health Connect 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください。 ソフトウェアの取得方法 ソフトウェアは従来のインストレーションパッケージ形式に加え、コンテナイメージでの提供が可能です。利用可能なインストーラやコンテナイメージの詳細については サポートされるプラットフォームのページをご参照ください。 各種製品の完全なインストレーションパッケージは Software Distribution page をご参照ください。 インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト から入手できます。 InterSystems IRIS やIRIS for Healthの製品版やコミュニティエディションのコンテナイメージ、およびそれに対応するすべてのコンポーネントは、以下のコマンドでInterSystems Container Registry から入手できます。 このリリースのビルド番号は2022.1.2.574.0 です。
お知らせ
Ayumu Tanaka · 2024年8月1日

InterSystems IRIS, IRIS for Health, HealthShare Health Connect バージョン 2024.2 リリースのご案内

インターシステムズは InterSystems IRIS Data Platform, InterSystems IRIS for Health, HealthShare Health Connect バージョン 2024.2 をリリースしました。 リリースハイライト 2024.2 は Continuous Delivery(CD)リリースです。2024.2 には多くのアップデートや拡張機能が追加されています。 開発者向け機能の強化 スタジオの削除 - 本リリース以降、Windows キットにはスタジオが含まれなくなります。つまり、このキットを使用した新規インストールではスタジオがインストールされません。既存のインスタンスをバージョン 2024.2以降にアップグレードした場合は、インスタンスの bin ディレクトリから スタジオが削除されます。スタジオをこれからも利用されたい方は、WRC 配布ページから 2024.1 スタジオの独立したコンポーネントをダウンロードできます。 外部テーブル の正式サポート - 2024.2 リリースでは、早期アクセスユーザからのフィードバックに対応しており、メタデータ管理の改善、述語プッシュダウンの改善、外部データをIRIS SQLテーブルに投影するのではなく取り込む LOAD DATA コマンドとのさらなる調整などが行われています。 フレキシブルPythonランタイム for Microsoft Windows - Microsoft Windows システム上で、Embedded Python が使用する Python ランタイムを選択できるようになります。 AIとアナリティクスの強化 InterSystems IRIS BI - ファクトテーブルのメジャーに基づいて標準偏差と分散を計算する標準 KPI プラグインが追加され、PowerBI コネクタ権限との統合が改善されました。これによりPowerBI ユーザはリソースによって制限されていないすべてのキューブやパブリックキューブにアクセスできるようになりました。 InterSystems Reports - Logi Report 2024.1 SP2 の新バージョンに PDF エクスポートの機能強化が含まれています。詳細については、Logi Report リリースノートを参照してください。 相互運用性とFHIRの強化 NEW HL7 DTL ジェネレータ: a) 他ベンダからの移行、または b) 新しい DTL を構築する場合に向けた生産性ツールキットの新しい機能が追加され、ユーザの生産性を向上できます。DTL ジェネレータはソースメッセージとターゲットメッセージのペアに基づいて、シンプルな変換ロジックを備えたスケルトン DTL を作成します。インターフェイスエンジニアはそれを検証して、必要なより複雑なロジックが不足していないかどうかを確認できます。 X12 / CMS0057 のサポート: 今後の CMS0057 事前承認要件に備え、HIPAA 4010、HIPAA 5010、HIPAA 6020 を含む追加のスキーマパッケージをサポートします。 これに加えて、X12 long segment のサポートが含まれるようになります。 新しい FHIR 構成 REST API (コントロールプレーン): 単一の REST ハンドラで各インスタンス全体をサポートします。これにより複数ネームスペースを使用したFHIR サーバの構成が容易になります。新しいコントロールプレーンのエンドポイント(ベースURL: /csp/fhir-management/api) が利用可能になり、ネームスペースで承認されたユーザーのみがコントロールプレーン REST API にアクセスできるようにすることで、セキュリティが強化されました。. IRIS OAuth サーバのカスタマイズを強化: IRIS for Health 設定に IRIS OAuth サーバのカスタマイズロジックが組み込まれ、すぐに使用可能なサポートおよびドキュメント化されたフレームワークにより、IRIS for Health OAuth のカスタマイズがより簡単になりました。適切な OAuth クラスフックを選択すると「カスタマイズ オプション」の既定値が 設定されます。 FHIR サーバ構成 と Bulk FHIR 構成 の UI を改善: 改良された FHIR サーバ構成ダッシュボードは、FHIR サーバを構成するための更新されたバックエンドAPI を活用して、ユーザエクスペリエンスを向上します。 改良された Bulk FHIR コーディネータは、Bulk FHIR サーバを構成する際に直感的なワークフローを作成することで、ユーザエクスペリエンスを向上します。 プラットフォームの更新 IRIS 2024.2 では Ubuntu 22.04 のサポートに加えて、Ubuntu 24.04 もサポートされるようになりました。 コンテナのベースイメージは Ubuntu 24.04 になります。 ドキュメント ハイライトされた機能の詳細は以下のリンクにあるドキュメント(英語)をご覧ください。 InterSystems IRIS 2024.2 ドキュメント , リリースノート , 非推奨、廃止された機能 InterSystems IRIS for Health 2024.2 ドキュメント, リリースノート , 非推奨、廃止された機能 アップグレードチェックリスト も併せてご確認ください。 ソフトウェアの入手方法 CDリリースには、サポートされているすべてのプラットフォーム用のクラシックインストールパッケージと、Dockerコンテナ形式のコンテナイメージがあります。サポートされるプラットフォームのリストについては ドキュメント(英語) を参照してください。 インストーラパッケージ 各製品のインストーラパッケージはWRC Directの 製品ダウンロードページ(CDキット) から入手できます。 評価サービスのサイトは こちら です。 InterSystems IRIS Studio は本リリースに対しても使用可能です。WRC Directのダウンロード Components ページから入手できます。 コンテナイメージ InterSystems IRIS、IRIS for Health および関連コンポーネントのエンタープライズエディション、コミュニティエディションのコンテナイメージは InterSystems コンテナレジストリ(ICR)のウェブインターフェース から入手できます。 ✅ このリリースのビルド番号は 2024.2.0.247.0 です。ただし、OpenSSL 1.0 AIX キットのビルド番号は 2024.2.0.247.1です。ICRでは、コンテナは "latest-cd" でタグ付けされています。
記事
Toshihiko Minamoto · 2020年11月5日

Azure BackupによるInterSystems IRISおよびCachéアプリケーション・コンシステントなバックアップ

データベースシステムには非常に特殊なバックアップ要件があり、企業のデプロイメントでは、事前の検討と計画が必要です。 データベースシステムの場合、バックアップソリューションの運用上の目標は、アプリケーションが正常にシャットダウンされた時と同じ状態で、データのコピーを作成することにあります。 アプリケーションの整合性バックアップはこれらの要件を満たし、Cachéは、このレベルのバックアップ整合性を達成するために、外部ソリューションとの統合を容易にする一連のAPIを提供しています。 これらのAPIは**_ExternalFreeze_**と**_ExternalThaw_**です。 _ExternalFreeze_は一時的にディスクへの書き込みを停止し、この期間にCaché はメモリ内の変更をコミットします。 この期間にバックアップ操作を完了させ、_ExternalThaw_の呼び出しを行う必要があります。 この呼び出しによって、書き込みのデーモンがグローバルバッファプール(データべースキャッシュ)で更新されたキャッシュをディスクに書き込むと、通常のCachéデータベースの書き込みデーモン操作が再開します。 このプロセスはCachéのユーザープロセスに対して透過的に行われます。 具体的なAPIクラスメソッドは次のとおりです。 [##Class(Backup.General).ExternalFreeze()](http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=Backup.General#ExternalFreeze) [##Class(Backup.General).ExternalThaw()](http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=Backup.General#ExternalThaw) これらのAPIは、スナップショット操作のプリスクリプトとポストスクリプトを実行するAzure Backupの新機能と合わせて、Azure上のCachéのデプロイメントに対する包括的なバックアップソリューションを提供しています。 [Azure Backupのプリスクリプトとポストスクリプト機能](https://azure.microsoft.com/en-us/blog/announcing-application-consistent-backup-for-linux-vms-using-azure-backup)は現在、Linux VMでのみ利用できます。 ## 前提条件 Azure Backupを使用してVMをバックアップする前に、おおまかに3つのステップを実行する必要があります。 1. Recovery Servicesコンテナーを作成する 2. VM Agentの最新バージョンをインストールする 3. VMからAzureサービスへのネットワークアクセスを確認する Recovery Servicesコンテナーは、バックアップの目標、ポリシー、および保護する項目を管理します。 Recovery Servicesコンテナーの作成は、Azure PortalまたはPowerShellを使ったスクリプトによって行います。 Azure BackupにはVMで実行する拡張機能が必要であり、Linux VMエージェントによって管理されています。また、最新バージョンのエージェントも必要です。 拡張機能はAzure StorageとRecovery Servicesコンテナーの外向きのHTTPSエンドポイントと対話します。 VMからこれらのサービスへのセキュアアクセスは、Azure Network Security Groupのプロキシとネットワークルールを使用して構成できます。 上記のステップに関する詳細は、「[Prepare your environment to back up Resource Manager-deployed virtual machines](https://docs.microsoft.com/en-us/azure/backup/backup-azure-arm-vms-prepare)」を参照してください。 ## プリスクリプトとポストスクリプトの構成 バックアップ操作の前と後にスクリプトを呼び出す機能は、Azure Backup Extension(Microsoft.Azure.RecoveryServices.VMSnapshotLinux)の最新バージョンに含まれています。 この拡張機能のインストール方法については、[機能に関する詳細なドキュメント](https://docs.microsoft.com/en-us/azure/backup/backup-azure-linux-app-consistent)を確認してください。 デフォルトでは、拡張機能には、Linux VMの次の場所に、サンプルのプリスクリプトとポストスクリプトが含まれます。 /var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.9110.0/main/tempPlugin そして、スクリプトをそれぞれ次の場所にコピーする必要があります。 /etc/azure/prescript.sh /etc/azure/postScript.sh スクリプトテンプレートは、[GitHub](https://github.com/MicrosoftAzureBackup/Cache)からもダウンロード可能です。 Cachéでは、ExternalFreeze APIを呼び出すprescript.shスクリプトを実装でき、postScript.shにはExternalThawを実行するコードが含まれている必要があります。 **以下は、Cachéの*prescript.sh*の実装例です。** #!/bin/bash # variables used for returning the status of the script success=0 error=1 warning=2 status=$success log_path="/etc/preScript.log" #path of log file printf "Logs:\n" > $log_path # TODO: Replace <CACHE INSTANCE> with the name of the running instance csession <CACHE INSTANCE> -U%SYS "##Class(Backup.General).ExternalFreeze()" >> $log_path status=$? if [ $status -eq 5 ]; then echo "SYSTEM IS FROZEN" printf "SYSTEM IS FROZEN\n" >> $log_path elif [ $status -eq 3 ]; then echo "SYSTEM FREEZE FAILED" printf "SYSTEM FREEZE FAILED\n" >> $log_path status=$error csession <CACHE INSTANCE> -U%SYS "##Class(Backup.General).ExternalThaw()" fi exit $status **以下は、Cachéの*postScript.sh*の実装例です。** #!/bin/bash # variables used for returning the status of the script success=0 error=1 warning=2 status=$success log_path="/etc/postScript.log" #path of log file printf "Logs:\n" > $log_path # TODO: Replace <CACHE INSTANCE> with the name of the running instance csession <CACHE INSTANCE> -U%SYS "##class(Backup.General).ExternalThaw()" status=$? if [ $status req 5]; then echo "SYSTEM IS UNFROZEN" printf "SYSTEM IS UNFROZEN\n" >> $log_path elif [ $status -eq 3 ]; then echo "SYSTEM UNFREEZE FAILED" printf "SYSTEM UNFREEZE FAILED\n" >> $log_path status=$error fi exit $status ## バックアップの実行 Azureポータルで、Recoveryサービスに移動して、最初のバックアップをトリガできます。 初回バックアップまたは後続のバックアップに関係なく、VMスナップショットの時間は数秒であることに注意してください。 最初のバックアップのデータ転送には時間がかかりますが、データ転送は、データベースのフリーズを解除するポストスクリプトの実行後に開始されるため、プリスクリプトとポストスクリプト間の時間に影響を与えることはありません。 データ保護操作が有効であることを確認するには、定期的に非本番環境にバックアップを復元して[データベースの整合性チェック](http://docs.intersystems.com/latestj/csp/docbook/DocBook.UI.Page.cls?KEY=GCDI_integrity#GCDI_integrity_verify_utility)を実行することを強くお勧めします。 バックアップのトリガ方法、およびバックアップスケジュールなどの関連トピックについては、「[Back up Azure virtual machines to a Recovery Services vault](https://docs.microsoft.com/en-us/azure/backup/backup-azure-arm-vms-prepare)」を参照してください。  
記事
Mihoko Iijima · 2020年10月27日

【はじめてのInterSystems IRIS】Interoperability(相互運用性)を使ってみよう!

皆さん、こんにちは! InterSystems IRIS には [Interoperability(相互運用性)]というメニューがあります。 このメニューには、システム統合を簡単に作成できる仕組み(アダプタ、レコードマップ、BPM、データ変換など)が用意されていて、異なるシステムを簡単に接続することができます。 例えば、普段繋がっていないシステムを繋げるために相手の仕様に合わせてデータを受信(または送信)したり、データ送信前に別システムから情報を取得して追加したり、データベース(IRIS でもそれ以外でも)から情報を取得したり更新したり、データ中継の流れの中に様々な処理を含むことができます。 この記事のシリーズでは、Interoperability(相互運用性)でシステム統合を行う際、どのような仕組みで動作するのか、またどのような開発が必要になってくるのか、をご理解いただくためにサンプルコードをご覧いただきながら以下の項目を解説します。 動作の仕組み プロダクションとは メッセージ コンポーネントの作成 ビジネス・オペレーション ビジネス・プロセス ビジネス・サービス まずはこのシリーズで使用するテーマをご紹介します。 ショッピングサイトを運営している会社があり、季節に合わせ商品情報の表示順を変更する作業を行っています。ところが、季節を問わず良く売れるもの、想定しなかった時期に売れるものもあり、現在の表示順変更ルールにうまく合いません。そこで、季節に合わせた表示順ではなく、そのときの気温にあわせた表示順に変更できないか検討した結果、購入物品に対してそのときの気温を調査する必要が出てきました。気象情報の確認には、外部の Web API が利用できるため、購入されたタイミングで気象情報を収集し、後で確認できるようにデータベースに情報を登録していく予定です。 とても簡単な内容ですが、「外部の Web API」を利用して情報収集する必要があるのと、取得できた情報と購入情報をデータベースに登録する作業をひとまとめにする必要があります。 具体的な方法は関連記事に続きます(Webサイトの作成は含みません)。ぜひご参照ください! さて、今回利用している「外部の Web API」ですが、OpenWether の Current weather data を使用しています。 (実際お試しになる場合は、アカウント登録を行い、APIIDを取得する必要があります。) REST クライアントから GET 要求を行った結果は以下の通りです(この内容を Interoperability で実装する仕組みの中で実行していく予定です)。 HTTP 応答の JSON は以下の通りです。 { "coord": { "lon": 138.1, "lat": 36.64 }, "weather": [ { "id": 801, "main": "Clouds", "description": "薄い雲", "icon": "02d" } ], "base": "stations", "main": { "temp": 10.12, "feels_like": 9.1, "temp_min": 8.33, "temp_max": 11.67, "pressure": 1013, "humidity": 86 }, "visibility": 10000, "wind": { "speed": 0.76, "deg": 233 }, "clouds": { "all": 24 }, "dt": 1603584269, "sys": { "type": 3, "id": 19237, "country": "JP", "sunrise": 1603573442, "sunset": 1603612743 }, "timezone": 32400, "id": 1856215, "name": "Nagano", "cod": 200} 次の記事では、Interoperability(相互運用性) メニューを利用してシステム統合を行う際、どのような仕組みで動作しているのか について解説します。
記事
Mihoko Iijima · 2020年10月27日

【はじめてのInterSystems IRIS】Interoperability(相互運用性):コンポーネントの作成(ビジネス・オペレーション)

この記事はこちらの投稿の続きの内容です。 前回の記事では、コンポーネント間のデータ送受信に使用される メッセージ について、作成するときの考え方や定義方法を確認しました。 今回の記事では、コンポーネントの作成方法の中から、ビジネス・オペレーションの作成について解説します。 プロダクション メッセージ(前回の記事) コンポーネント ビジネス・サービス ビジネス・プロセス ビジネス・オペレーション 早速サンプルを参照しながらコードを確認します。 コンポーネント名 役割 Start.FileBS 指定ディレクトリに置かれたファイルを一定間隔で読み取るファイルインバウンドアダプタを利用しているビジネス・サービス Start.NonAdapterBS アダプタを利用せず直接アプリケーションやユーザから情報を入力してもらうためのビジネス・サービス Start.WS.WebServiceBS Webサービスを利用して情報を入力してもらうためのビジネス・サービス Start.WeatherCheckProcess 気象情報を取得してからデータベースの登録を行う手順を制御するビジネス・プロセス Start.GetKionOperation 気象情報提供先のWebサービスへ都市名を渡し気象情報を返送してもらうビジネス・オペレーション Start.SQLInsertOperation データベースへ気象情報と購入情報の登録依頼を行うため、SQLアウトバウンドアダプタを使用するビジネス・オペレーション Start.InsertOperation アダプタを使用せず、InterSystems IRIS内テーブル対して更新処理を行うビジネス・オペレーション メモ:BSはビジネス・サービス、BPはビジネス・プロセス、BOはビジネス・オペレーションの略です。 ビジネス・サービスとビジネス・オペレーションはスクリプトの記述があるため、VSCode または スタジオで作成します。ビジネス・プロセスは管理ポータルでも作成できます(VSCodeの使い方については、こちらの記事をご参照ください)。 作成順は特にありませんが、今回のサンプルで考えると、接続先の外部サイトは公開サイトであるためすぐに利用できます。こういった場合ビジネス・オペレーションから作成し始めるとテストが簡単に行えて便利です。 コンポーネント作成後のテストですが、ビジネス・プロセスとビジネス・オペレーションについては、プロダクションにテスト画面が用意されています。ただ、本番環境で誤ってテストしないように、プロダクション定義のデフォルト設定でテストは無効化されています。 プロダクションで「テスト使用可」とするかどうかの設定方法は、以下の通りです(サンプルプロダクションは予め「テスト使用可」に設定しています)。 1) ビジネス・オペレーション サンプルでは、2種類のビジネス・オペレーションを用意しています。 1つは、REST で外部の Web API に都市名を渡し、気象情報の取得を依頼するオペレーションで、もう1つは、InterSystems IRIS 内のデータベースへ気象情報と購入商品名を渡し更新処理を依頼するオペレーションです。 1)-1 REST ビジネス・オペレーション REST で外部の Web API を呼び出すオペレーションの作成から確認していきましょう 。このオペレーションは、Start.Request メッセージが入力されると GetKion() メソッドが起動し、外部サイトへ問い合わせを行い、気象情報を Start.Response メッセージに格納し返送します. コード詳細はこちらをご参照ください。 REST 用ビジネス・オペレーションを作成する場合は、EnsLib.REST.Operation を継承します。 Class Start.GetKionOperation Extends EnsLib.REST.Operation このクラスの継承により HTTP メソッドに合わせた IRIS 内の以下メソッドが提供されます。詳細はドキュメントもご参照ください。 GetURL()— HTTP GET オペレーションで使用します。 PostURL()— HTTP POST オペレーションで使用します。 PutURL()— HTTP PUT オペレーションをで使用します。 DeleteURL()— HTTP DELETE オペレーションで使用します。 REST の場合、アダプタは EnsLib.HTTP.OutboundAdapter を使用します。アダプタ名を例のように ADAPTER パラメータと Adapter プロパティに設定します。 また INVOCATION パラメータは Queue を設定します。 Parameter ADAPTER = "EnsLib.HTTP.OutboundAdapter"; Property Adapter As EnsLib.HTTP.OutboundAdapter; Parameter INVOCATION = "Queue"; 接続先の OpenWeather の API は実行時に各自で入手する API Key の指定が必要になります。環境に合わせて設定値が変動するような項目は、プロダクションの設定項目として表示させる方法があります。 手順は以下の通りです。 プロパティを定義する SETTINGSパラメータに作成したプロパティ名を指定する(複数ある場合はカンマで区切って指定します)。 任意でカテゴリも指定できます(プロパティ名:カテゴリ名 で指定します)。 コード例は以下の通りです。 /// APIキーを指定します Property appid As %String; Parameter SETTINGS = "appid:OpenWeatherMap"; プロダクション設定画面では以下のように表示されます。また、プロパティ定義の直前の行に記載した説明文は、図のようにプロダクション設定画面にも表示されます。 次に、ビジネス・オペレーションにとって大事な設定である、メッセージマップについて確認します。 上記定義は、Start.Request メッセージが送信されると、GetKion()メソッドが動作するように定義されています。 GetKion() メソッドでは、入力情報として渡される要求メッセージの Area プロパティから都市名が取得できます。この都市名を外部の Web API が公開している URL のパラメータに設定し呼び出せば、気象情報が取得できます。 なお、HTTP サーバや URL の設定は管理ポータルのプロダクション画面で設定します。設定内容を取得するには、HTTP アウトバウンドアダプタから提供される Adapter プロパティを使用します。 例) URLの指定の場合は、 ..Adapter.URL REST 用ビジネス・オペレーションが提供する GetURL() メソッドを使用して、外部サイトを呼び出します。第1引数に実行したい URL(=都市名など必要なパラメータに指定した URL)、第2引数に参照渡しで引数を用意し HTTP 応答を受け取ります。 HTTP 応答にはJSON 形式で気象情報が格納されるので、応答メッセージ(=pResponse)に情報を登録したらオペレーションは完成です。 作成したメソッドの第 2 引数には、参照渡しで応答メッセージクラス名が指定されています。 Method GetKion(pRequest As Start.Request, Output pResponse As Start.Response) As %Status 呼び出し元に応答メッセージを返す場合は、応答メッセージのインスタンスを生成し、第 2 引数の変数(pResponse)に格納し、プロパティに必要な情報を設定します。 set pResponse=##class(Start.Response).%New() set weatherinfo={}.%FromJSON(tHttpResponse.Data) set pResponse.AreaDescription=weatherinfo.weather.%Get(0).description set pResponse.KionMax=weatherinfo.main."temp_max" set pResponse.KionMin=weatherinfo.main."temp_min" set pResponse.Area=weatherinfo.name //UTC時間なので日本時間にするために9時間(9*60*60)足すset unixEpochFormat=weatherinfo.dt+32400 set dt=$system.SQL.Functions.DATEADD("s",unixEpochFormat,"1970-01-01 00:00:00") set pResponse.AreaPublicTime=dt 外部サイトからのHTTP応答がJSON形式で返送されるため、HTTP 応答で取得できたストリームを利用して、IRIS 内の JSON 操作に便利なダイナミックオブジェクトに変換しています。 set weatherinfo={}.%FromJSON(tHttpResponse.Data) 返送される JSON 文字列の例は以下の通りです。 { "coord": { "lon": 138.1, "lat": 36.64 }, "weather": [ { "id": 801, "main": "Clouds", "description": "薄い雲", "icon": "02d" } ], "base": "stations", "main": { "temp": 10.12, "feels_like": 9.1, "temp_min": 8.33, "temp_max": 11.67, "pressure": 1013, "humidity": 86 }, "visibility": 10000, "wind": { "speed": 0.76, "deg": 233 }, "clouds": { "all": 24 }, "dt": 1603584269, "sys": { "type": 3, "id": 19237, "country": "JP", "sunrise": 1603573442, "sunset": 1603612743 }, "timezone": 32400, "id": 1856215, "name": "Nagano", "cod": 200} 最高気温、最低気温、天気 は以下のように取得できます。 set pResponse.KionMax=weatherinfo.main."temp_max" set pResponse.KionMin=weatherinfo.main."temp_min" set pResponse.AreaDescription=weatherinfo.weather.%Get(0).description IRIS 内の JSON 操作について確認されたい場合は、こちらの記事やドキュメントもご参照ください。 それでは、天気情報をちゃんと取得できるかどうか、プロダクションのテストツールを使って確認しましょう。 プロダクション画面を開き(管理ポータル > [Interoperability] > [構成] > [プロダクション] )Start.GetKionOperation をクリックし、[アクション]タブの「テスト」ボタンをクリックします。 Area に 都市名(那覇市、札幌市、長野市、新宿区 など)を指定して、「テストサービスを実行」ボタンをクリックします。下にテスト結果が表示され、最高気温、最低気温、天気が表示されるのが確認できます。 続いて、トレース画面の使い方をご紹介します。 左画面で などの横長の長方形を選択すると、右画面の情報が変わります。 システム統合の流れで送受信したメッセージは自動的にデータベースに保存されます。メッセージのトレース画面を使用すると、時系列でどのようなメッセージがどのコンポーネントに渡されたか、応答があったかどうか、など詳細に確認することができます。 また、エラーが発生した場合は、 「○から△のコンポーネントに□のメッセージを 送付中/受信中/受信後 にエラー発生」 がわかるように、エラーが発生した場所に赤いマークがつきます。もちろん、トレース以外にもイベントログページも用意しています。(管理ポータル > [Interoperability] > [表示] > [イベントログ]) 続いて、データベースへ更新依頼を行うオペレーションを確認してみましょう。 1)-2 データベースへ更新依頼を行うビジネス・オペレーション サンプルには Start.SQLInsertOperation と Start.InsertOperation の2種類のオペレーションの用意があります。 それぞれ、データベースの更新依頼を行うオペレーションですが、Start.SQLInsertOperation は、SQLアウトバウンドアダプタを利用していますが、Start.InsertOperation は、アダプタを使用していません。 両者の違いは、 SQL アウトバウンドアダプタを使用するオペレーションは、ODBC/JDBC接続でのアクセスを前提としているため、データベースの接続先をプロダクションの設定で切り替えることができます。 アダプタを使用しないオペレーションでは、DB更新対象はプロダクション構成から見える範囲のデータベースで、接続先の切り替えが発生しないことが前提となります。 IRIS にはデータベースが含まれているため、システム統合中の任意データの格納場所に IRIS 内データベースを使用できますが、数年後、システム構成が何らかの理由で変更となり、異なるサーバ上のデータベースへ接続する必要が出てきた場合、アダプタを使用しないオペレーションをそのまま継続利用することはできません。 反対に、SQL アウトバウンドアダプタを使用するオペレーションは、接続先指定を変えることで処理内容に変更が無ければそのまま運用できます(実行する SQL 文に問題がなければ、異なる製品のデータベースにも接続できます)。 システム統合の中では、外部システムの都合で接続情報が変更となるケースも考えられるため、変更に柔軟に対応できるような設計にしておくことが重要です。そのため、外部接続に対応するコンポーネントは 疎結合 で作成することを推奨しています。 とはいえ、将来構成に変更がなければ、わざわざ ODBC/JDBC 接続を使用しなくても IRIS 内データベースにアクセスできますので、利用用途に合わせアダプタを使用する/しないをご選択いただけます。 それでは順番に、アダプタを使用する Start.SQLInsertOperation のコードを確認しましょう。 サンプルが使用しているアダプタは SQL アウトバウンドアダプタで、データベースに対して SQL文 の実行を依頼できるアダプタです。アダプタが異なると提供されるメソッドも異なります。アダプタから提供されるメソッド詳細についてはドキュメントをご参照ください。 続いて、アダプタを使用しない Start.InsertOperation のコードを確認しましょう。 アダプタを使用する/しないに関わらず、オペレーションのメッセージマップとメソッド定義は必要です。アダプタを使用しない場合は、アダプタ用 Paramter と Property の定義は不要です。 アダプタを使用しないビジネス・オペレーション: Start.InsertOperation では、ObjectScript を利用してSQLを実行しています(コメント文はオブジェクト操作での更新処理です)。 更新対象データベースが IRIS から切り離されることが無ければ十分な実装といえます。 アダプタを使用したオペレーションは、接続先に処理を依頼するための専用メソッドが提供されることがわかりました。また、アダプタを使用しないオペレーションも作成可能で自由にコードを記述できることが確認できました。 次の投稿では、天気情報取得用オペレーションとデータベース更新用オペレーションを順番を守って呼び出しを行うビジネス・プロセスの作り方について解説します。
記事
Mihoko Iijima · 2020年10月27日

【はじめてのInterSystems IRIS】Interoperability(相互運用性):コンポーネントの作成(ビジネス・プロセス)

この記事はこちらの投稿の続きの内容です。 前回の記事では、システム統合に必要なコンポーネントの中から、ビジネス・オペレーションの作成について解説しました。 今回の記事では、確認した2つのビジネス・オペレーションを順番を守って呼び出しを行うビジネス・プロセスの作成について解説します。 プロダクション メッセージ コンポーネント ビジネス・サービス ビジネス・プロセス ビジネス・オペレーション(前回の記事) ビジネス・プロセスは処理の調整役(司令塔)として働きます。 サンプルの中で行いたい処理の調整は、以下の内容です。 手順① 外部の Web API に都市名を渡し気象情報を問い合わせる手順② ①の問合せ結果(気象情報)と、処理開始時に受信した購入商品名をDBへ登録する サンプルのビジネス・プロセスでは、手順① の回答を待って手順② を動かすように調整します。 回答を待つ処理(=同期を取る処理)ですが、例えば、手順① が数日返ってこない場合、どうなるでしょうか? 数日回答を待ち続けている間にビジネス・プロセスへ次々に新メッセージが渡された場合、メッセージは一旦キューに格納されるため消失しませんが、新メッセージの処理をビジネス・プロセスが実行できず処理に遅延が発生します。 メモ: ビジネス・プロセスとビジネス・オペレーションにはキューがあります。 そこで、プロダクションでは、ビジネス・プロセスの動きとして、同期呼び出しがある場合に、A)完全に同期を取る方法と、B)応答待機中は他の処理が動作できるようにビジネス・プロセス自身の状態を一旦データベースに保存し、実行環境を明け渡す方法 を用意しています。 A)完全に同期を取る方法は、 同期呼び出しを行っている間は、ビジネス・プロセスの処理は継続中となり全ての処理が終了するまで次のメッセージの処理は待たされる。➡ 先入れ先出し方式で処理順を保障する必要がある場合に利用します。 B)応答待機中は他の処理が動作できるようにビジネス・プロセス自身の状態を一旦データベースに保存し、実行環境を明け渡す方法は、 同期呼び出しを行った時点で一旦データベースに自分自身の状態を保存する。応答メッセージを受信しメッセージを処理する順番が来たときにデータベースからオープンし次の処理を実行する。(データベースへのビジネス・プロセスの保存・再オープンは IRIS が管理します)➡ メッセージの処理順序が入れ替わっても良い場合(=応答を待つ間に受信した別メッセージをどんどん処理してよい場合)に利用します。 サンプルでは、B) を利用しています。 ビジネス・プロセスを作成するエディタは2種類あり、処理用の箱(アクティビティ)を配置し、実行内容を定義しながら実装できるビジネス・プロセス・エディタと、スタジオや VSCode 上で ObjectScript を使用して作成する方法があります。 ビジネス・プロセス・エディタを使用する場合、コンポーネントの呼び出しに call アクティビティを使用しますが、このアクティビティは B) の方法で実装されます。もちろん、ビジネス・プロセス・エディタでも A) の方法を実装できますが、その場合は call アクティビティを使用しません(code アクティビティを使用します)。 では、作成方法について解説します。 ビジネス・プロセス・エディタを利用する場合、管理ポータルで記述します。また、プロダクション構成画面からビジネス・プロセスを開くこともできます。下図は、その手順です。 このエディタで のようなアイコンはアクティビティと呼び、<call> のマークがあるものは、他コンポーネントの呼び出しができるアクティビティです。 アイコンの右端に の記号がありますが、この記号は応答メッセージが返る(=同期呼び出しを行う)マークです。<call>アクティビティのデフォルトは非同期呼び出し設定のため、必要に応じて変更します。 さて、ビジネス・プロセスは、ビジネス・オペレーションと同様に要求メッセージを受信すると起動するコンポーネントです。サンプルでは、要求メッセージ:Start.Request を受信すると起動し、応答メッセージは返送しない設定としています。 ビジネス・プロセスでは、いろいろな場面でメッセージが登場します。 ビジネス・プロセスに送信される要求メッセージ <call> アクティビティを利用して他コンポーネントを呼び出すときに送信する要求メッセージ(+応答メッセージ) ビジネス・プロセス・エディタでは、どこからどこへ送受信したメッセージか確認できるようにメッセージを格納するオブジェクト名を明確に分けています。 request(基本要求) ビジネス・プロセスの起動のきっかけになったメッセージでサンプルでは、Start.Request (ビジネス・プロセス・エディタ上、コンテキストタブのリクエストの設定に指定するメッセージ) response(基本応答) ビジネス・プロセスの呼び出し元に返送する応答メッセージ(サンプルでは利用していません) (ビジネス・プロセス・エディタ上、コンテキストタブのレスポンスの設定に指定するメッセージ) callrequest(要求メッセージ) <call>アクティビティで指定したコンポーネントを呼び出すときに送信する要求メッセージ callresponse(応答メッセージ) <call>アクティビティで指定したコンポーネントから返送される応答メッセージ callrequest と callresponse は、<call>アクティビティの呼び出し処理が終了すると消去されるオブジェクトです。それ以外は、ビジネス・プロセスの処理が終了するまで消えないオブジェクトです。 さて、callresponse が消えると困ることがあります。 それは、今回のサンプルにもあるように、コンポーネントを呼び出す際、それ以前に呼び出したコンポーネントの応答結果を利用したい場合に、応答メッセージが消失してしまうため次のコンポーネントで使用する予定だった情報が消えてしまう。 困りました😓 どうしたらいいでしょうか・・・・・ そんなとき、context オブジェクトを利用します。 context オブジェクトは、request/response 同様、ビジネス・プロセスの処理が終了するまで生き残るオブジェクトです。しかも context は汎用オブジェクトなので、プロセスエディタ内で定義できます。context のほかに、response オブジェクトも引き継ぐデータの退避にあうプロパティがあれば、利用できます。 では、今回の流れを再度確認しましょう。 水色の吹き出しの応答メッセージ:Start.Response は処理が終了すると消去されるオブジェクトです。 次に実行する [DB更新用ビジネス・オペレーション] へ送信するメッセージに、気象情報が格納された応答メッセージ(Start.Response)を利用したいため、context オブジェクトへ応答メッセージ(Start.Response)のプロパティ値を全て代入できるように実装します。 では、context プロパティの設定はどうなっているでしょうか。 ビジネス・プロセス・エディタのコンテキストタブにある「コンテキスト・プロパティ」にプロパティを定義します。今回は、応答メッセージ(Start.Response)のプロパティ全てを context オブジェクトへ退避したいので、プロパティのタイプ指定はStart.Response を設定しています。 つづいて、<call>アクティビティ内の設定を確認します。 要求メッセージと応答メッセージには、○○・ビルダ というボタンがついています。このボタンを押下すると、それぞれのメッセージのプロパティに何を登録したらよいか?を指定できる線引きエディタを起動します。 この後、データベース更新依頼用ビジネス・オペレーション(Start.SQLInsertOperation か、Start.InsertOperation)を同様に<call>アクティビティで呼び出したら完成です。 (詳細は、ビジネス・プロセスの の設定をご参照ください) 確認が完了したらテストします。テストの方法は、ビジネス・オペレーションのテスト方法と共通です(こちらの記事をご参照ください)。 テスト後のトレースは以下の通りです。 ビジネス・プロセスは調整役 なので、同期実行の順番を守りながら定義されたコンポーネントを順次呼び出しているのが確認できました。 メモ1:サンプルでは、call アクティビティしか扱っていませんが、その他にもデータ変換など様々なアクティビティがあります。 メモ2:ビジネス・プロセス・エディタ以外で ObjectScript だけで作成するビジネス・プロセスは、Ens.BusinessProcess クラスを継承します。ビジネス・プロセスエディタで作成した場合は Ens.BusinessProcessBPL クラスを継承します。 ビジネス・プロセスはシステム連携処理の調整役です。ビジネス・プロセス・エディタは以下の種類のメッセージ用変数(request/response/callrequest/callreponse/context)を用意しています。ビジネス・プロセス・エディタで作成したビジネス・プロセス は、コンポーネントの呼び出しに同期処理があっても、他のメッセージを遅延させない仕組みで動作できます。 次は、いよいよ最後のコンポーネント:ビジネス・サービスの開発方法をご紹介します。
記事
Mihoko Iijima · 2020年10月27日

【はじめてのInterSystems IRIS】Interoperability(相互運用性):コンポーネントの作成(ビジネス・サービス)

この記事はこちらの投稿の続きの内容です。 前回の記事では、システム統合に必要なコンポーネントの中から、プロダクション内の処理の調整役となるビジネス・プロセスの作成について解説しました。 今回の記事では、プロダクションの情報入力窓口である、ビジネス・サービスの作成について解説します。 プロダクション メッセージ コンポーネント ビジネス・サービス ビジネス・プロセス(前回の記事) ビジネス・オペレーション いよいよ「Interoperability(相互運用性)を使ってみよう!」の最後のコンポーネントです。 ビジネス・サービスは、IRIS 外部からの送信される情報の入力窓口で、外部 I/F に対してアダプタを使用する/しないを選択できます。 サンプルでは、3 種類のビジネス・サービスを用意しています(括弧内のリンクはサンプルコードへのリンク)。 ファイルインバウンドアダプタを利用したファイル用ビジネス・サービス(Start.FileBS) SOAP インバウンドアダプタを利用する Web サービス用ビジネス・サービス(Start.WS.WebServiceBS) アダプタを使用せず、ストアドプロシージャや REST で呼び出されるビジネス・サービス(Start.NonAdapterBS) 情報入力に使用する接続方法が異なるだけ、ビジネス・サービス数が増えますが、ビジネス・サービス内で行う処理は 外部から入力された情報を利用して、送信する要求メッセージを作成し、ビジネス・コンポーネント を呼び出すだけ とてもシンプルです。 それでは、ファイルインバウンドアダプタを使用するコンポーネントから作成方法概要を説明します。 ビジネス・サービスはスクリプトを記述するので、VSCode かスタジオで作成します(VSCodeの使い方についてはこちらの記事もご参照ください。)。 1、ファイルインバウンドアダプタを利用したファイル用ビジネス・サービス(Start.FileBS) VSCode で作成する場合は、Ens.BusinessService を継承するクラスを作成します。アダプタについては、使用する場合は、以下のように ADAPTER パラメータにアダプタクラス名をしています(例はファイルインバウンドアダプタのクラスを指定しています)。アダプタを使用しない場合は、設定は不要です。 Class Start.FileBS Extends Ens.BusinessService { Parameter ADAPTER = "EnsLib.File.InboundAdapter"; ファイルインバウンドアダプタでは、監視対象ディレクトリの指定をプロダクションのビジネス・サービス用設定の「ファイル・パス」で指定できます。 「ファイル・パス」に置かれたファイルが「ファイル・スペック」に指定した情報と合致する場合、ファイルをストリームオブジェクトとしてオープンし、ビジネス・サービスの ProcessInput() を呼び出すときの第1引数に指定します。 ProcessInput() が起動すると自動的に OnProcessInput() が呼び出されます。この時、OnProcessInput() には、ProcessInput() で渡された引数がそのまま渡ります。 OnProcessInput() では、第1引数に渡されるファイルストリームオブジェクトから情報を取得し、次のコンポーネントへ渡すメッセージを作成し、次のコンポーネントを呼び出す処理を記述したら基本ロジックは終了です。 【メモ】スタジオの場合は、新規作成メニューのビジネス・サービスウィザードを起動し、アダプタを選択して完了ボタンを押下します。 OnProcessInput() のメソッド定義は以下の通りです。 Method OnProcessInput(pInput As %Stream.Object, Output pOutput As %RegisteredObject) As %Status pInput には、テキストファイルの場合 %Steam.FileCharacter クラス、バイナリファイルの場合 %Stream.FileBinary クラスのインスタンスが渡されます。 サンプルでは、テキスト形式のファイルが入力される予定で、1依頼1行として、複数行の依頼も受け付けるように記述しています。 End Of File を検知すると1を設定する AtEnd プロパティを利用してループ処理を行います。ループ内では、ファイルの中身を1行ずつ情報を取得できる ReadLine() メソッドを使い、行を読み取ります(ファイルアダプタ詳細は、ドキュメントをご参照ください)。 1行ずつ情報を取得しながらメッセージを作成し、他コンポーネントを呼び出す ..SendRequestAsync() メソッドを実行します。 メソッド実行時、第1引数に呼び出したいコンポーネント名を文字列で指定し、第2引数には作成した要求メッセージを指定します。なお、..SendRequestAsync()は非同期呼び出し のため、応答を待ちません。 メモ:同期呼び出し用に SendRequestSync() もあります。 サンプルコードは以下の通りです。 ご参考:上記例文中の $piece()関数の使い方の解説 $piece(“文字列”,”区切りマーク”,”ポジション番号”) 区切りマーク付き文字列の設定/取得が行える関数で、サンプルでは、カンマ区切りデータの1番目と2番目の値を取得するため、以下の構文で記述されています。 set request.Product=$piece(record,",",1) set request.Area=$piece(record,",",2) では、上記説明に登場した Start.FileBS の動作を確認します。 サンプルプロダクションでは「ファイル・パス」に /irisdev/src 「ファイル・スペック」に check.txt を指定しています。同じディレクトリをご用意いただくか、別ディレクトリに変更いただき、check.txtファイルに以下の形式(購入商品名,都市名)でサンプルデータを登録してください。 ※ サンプルのコンテナを利用されている場合は、git clone で作成したディレクトリ以下の src ディレクトリ以下にある [Test用-check.txt] をリネームしてご利用ください。 2、SOAP インバウンドアダプタを利用する Web サービス用ビジネス・サービス(Start.WS.WebServiceBS) つづいて、Web サービス用ビジネス・サービスの作成概要をご説明します。 Web サービス用ビジネス・サービスクラスは、Web サービス提供側= Web サービスサーバとして動作します。 サンプルでは、Web サービスクライアントから情報を送信してもらうため、今回のサンプルプロダクションに合わせて Web サービスメソッドに2つの引数を用意しています。Web メソッドでは、引数に入力された情報を利用してメッセージクラスを作成し、他コンポーネントを呼び出しています。 Web サービスクラスを定義するとテスト用画面が用意されますが、デフォルトでは表示しない設定になっています。 IRIS へログインし(またはターミナルを起動し)、プロダクションがあるネームスペースに移動して以下実行してください。 ご参考:https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GSOAP_service_catalog_page 以下、サンプルコードの docker-compose up -d でコンテナを開始した環境での設定例です(%SYS ネームスペースで実行します)。 set $namespace="%SYS" set ^SYS("Security","CSP","AllowClass","/csp/user/","%SOAP.WebServiceInfo")=1 set ^SYS("Security","CSP","AllowClass","/csp/user/","%SOAP.WebServiceInvoke")=1 【注意】実行文には大文字小文字の区別がありますので、注意して記述してください。また、プロダクションを使用するネームスペースによって指定文字が変わります。例文はサンプルをUSERネームスペースへインポートした前提で記述しています。もし、サンプルコードをABCネームスペースにインポートしている場合は、第4番目の添え字は "/csp/abc/" を指定します。 設定が完了したら、以下の URL にアクセスします。 http://localhost:52773/csp/user/Start.WS.WebServiceBS.cls WSDL を Web サービスクライアントへ提示する場合は、以下のURLの末尾に WSDL=1 を指定してください。 http://localhost:52773/csp/user/Start.WS.WebServiceBS.cls?WSDL 3,アダプタを使用せず、ストアドプロシージャや REST で呼び出されるビジネス・サービス(Start.NonAdapterBS) 次は、アダプタを使用しないビジネス・サービス(Start.NonAdapterBS)をご紹介します。 アダプタを使用するビジネス・サービスでは、アダプタが情報を検知すると、ビジネス・サービスの ProcessInput() メソッドを呼び出します。 アダプタを使用しない場合も、ProcessInput() メソッドを呼び出せばいいのですが、このメソッドは外部公開していないため、アダプタを使用しないビジネス・サービスを実装する場合、ProcessInput()を実行するための方法を検討する必要があります。 サンプルでは、以下2種類の方法を利用しています。 ストアドプロシージャ(Start.Utilsクラス) REST 用ディスパッチクラス(Start.REST)→ こちらの記事で実行したサービスです。 では、ストアドプロシージャの例をご紹介します。 プロダクションにアダプタを使用しないビジネス・サービス(Start.NonAdapterBS)を追加した後で(サンプルでは追加済に状態)以下ストアドプロシージャを実行します。 call Start.Utils_CallProduction('うなぎ','浜松市') 実行結果のトレースは以下の通りです。 続いて、REST 用ディスパッチクラス作成例をご紹介します。 XData Url Map に定義されている XML は、REST 呼び出しのときの URL に対して、どのメソッドが呼び出されるかを定義しています。サンプルは、GET 要求で /weather/第1引数(購入商品名)/第2引数(都市名)の URL が渡されると、WeatherCheck() メソッドを呼び出す定義を記述しています。 <Route Url="/weather/:product/:arecode" Method="GET" Call="WeatherCheck"/> 後は、 上記 URL を指定するためのベース URL を管理ポータルのウェブアプリケーションパス設定画面で定義したら完成です。 設定詳細については、こちらの記事をご参照ください。 準備ができたら、REST で情報を送信できるビジネスサービスを利用して、情報を流してみます。 例)http://localhost:52773/start/weather/ちくわ/豊橋市 アダプタを使用しない場合、直接外部から ProcessInput() が呼び出せないため、REST やストアドプロシージャを通して実行されるロジックの中でビジネス・サービス用オブジェクトを生成し(Ens.Director クラスの CreateBusinessService() メソッドを使用) ProcessInput() を呼び出しました。 アダプタを使用する場合は、アダプタが入力を検知し専用オブジェクトに情報を格納しビジネス・サービスに渡してくれますが、アダプタを使わない場合、その部分だけが異なるだけで後の処理はほとんど一緒です。 ビジネス・サービスは、IRIS 外部から入力された情報を利用して要求メッセージを作成し、ビジネス・コンポーネントを呼び出すだけのシンプル設計です。 サンプルプロダクションを通して以下の内容が確認できました。 プロダクションを動作させるために役割が異なるコンポーネントがある(ビジネス・サービス、ビジネス・プロセス、ビジネス・オペレーション) コンポーネント間で情報を伝達するためには、メッセージを使用する メッセージは削除しない限りデータベースに保存されているので、いつでもトレースできる 接続周りの処理を簡単にしてくれるアダプタがある IRIS の Interoperability(相互運用性)の使い方についての基本操作は以上の通りです。 この他、CSVファイルなどの形式の決まったファイルの入出力に便利なレコードマップ(ご参考:FAQトピック)や、データ変換ツールなどもあります。また、このシリーズと同様にInteroperability を利用して InterSystems IRISでシンプルに開発するIoTアプリケーションの記事もあります。ぜひご参照ください。 この他、IRIS for Health では FHIR や HL7(SS-MIX2も含む)の送受信についてもサポートしています。 また別の記事でご説明できたらと思います。ご興味ある内容ありましたら、ぜひコメント欄にご記入ください! 最後に、Interoperability(相互運用性)の使い方についてはトレーニングコースもご用意しています。講師と一緒にじっくり試してみたい方は、ぜひトレーニングコースへのご参加もご検討ください!
お知らせ
Mihoko Iijima · 2022年6月24日

テクノロジーボーナス詳細:InterSystems Full Stack コンテスト 2022:気候変動問題に挑戦!

開発者の皆さん、こんにちは! Full Stackコンテスト 2022 のテクノロジーボーナスについてご紹介します!​​​​​ 気候変動問題に関係したもの - 5 isc.rest パッケージ - 2 isc.ipm.js パッケージ - 2 Embedded Python - 3 Adaptive Analytics (AtScale) キューブの使用 - 2 Docker コンテナの使用 - 2 ZPM パッケージのデプロイ - 2 オンラインデモの作成 - 2 ユニットテストの使用 - 2 コミュニティへの最初の記事の投稿 - 2 コミュニティへの2つ目の記事投稿 - 1 Code Quality をパスする - 1 YouTube にビデオを投稿する - 3 気候変動問題に関係したもの - 5 points あなたのソリューションが地球温暖化や気候変動問題への対策に役立つ内容である場合、ボーナスポイントを獲得できます。詳しくは27日(月)に開催される Climate Change Full Stack コンテストのキックオフで発表します。ぜひご参加ください。 isc.rest パッケージ - 2 points あなたの full-stack アプリケーションに isc-rest パッケージを使用するとボーナスポイントを獲得できます。使用方法については、isc-perf-ui application をご参照ください。 isc.ipm.js パッケージ - 2 points あなたの full-stack アプリケーションに isc-ipm-js を使用するとボーナスポイントを獲得できます。使用方法については、isc-perf-ui application をご参照ください。 Embedded Python - 3 points あなたのアプリケーションに Embedded Python を使用すると、追加のポイントを獲得できます。Embedded Python を使用される場合は、InterSystems IRIS 2021.2 以降をご利用ください。 Docker コンテナの使用 - 2 points あなたのアプリケーションに Docker コンテナ版 InterSystems IRIS を使用すると、ボーナスポイントを獲得できます。シンプルなテンプレートから利用を開始することができます。ぜひご利用ください。 ZPM パッケージのデプロイ - 2 points 以下のようにデプロイできる ZPM(InterSystems Package Manager)であなたのFull Stackアプリケーションを公開するとボーナスポイントを獲得できます。 zpm "install your-multi-model-solution" 上記コマンドをZPMクライアントがインストールされたIRISで実行します。 ZPM について/ZPM Documentatio オンラインデモ公開 - 2 points オンラインデモとしてアプリケーションをクラウドにプロビジョニングすると、ボーナスポイントを獲得できます。開発環境テンプレートやその他のデプロイメントオプションを使用することができます。例サンプルアプリケーションの使用方法についてはビデオをご参照くださ ユニットテスト- 2 points あなたのアプリケーションにInterSystems IRISのユニットテストを導入するとボーナスポイントを獲得できます。 ObjectScriptのユニットテスト使用方法については、ドキュメントやコミュニティの記事をご参照ください。 コミュニティに記事を投稿する - 2 points コミュニティに応募したアプリケーションの概要を説明する記事を投稿するとポイントを獲得できます。 コミュニティに2つ目の記事を投稿する - 1 point 2つ目の記事を投稿する、または投稿したアプリケーション概要の翻訳記事を投稿することで、さらボーナスポイントを獲得できます。(3記事以降はポイントが加算されません。) Code quality をパスしてBug 0件 を表示させる - 1 point コードの静的制御のためのcode quality Github actionを組み込み、ObjectScriptの Bug 0件 と表示させるとボーナスポイントを獲得できます。 Video on YouTube - 3 points 開発した作品の動画を作成し、YouTube に掲載した場合、3ポイント獲得できます。 ※ ボーナスポイントについては、変更される可能性もあります。予めご了承ください。
お知らせ
Seisuke Nakahashi · 2024年2月15日

InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2024.1 の開発者プレビュー #3が公開されました

2024.1 の開発者プレビュープログラムの一環として、3番目の開発者プレビューを公開いたします。リリースされる製品は InterSystems IRIS®, InterSystems IRIS® for HealthTM, HealthShare® Health Connect になります。 本リリースの注目点 2024.1では、多くの機能修正や性能強化に加え、ObjectScript でのベクターの使用, ベクター検索 (実験的機能), マルチボリューム・データベース, 高速オンラインバックアップ の利用 (実験的機能), 複数のスーパーサーバーポート の導入 といった新機能が追加されています。また本リリースには、フレキシブル環境での Python 実行 や Smart on FHIR 2.0.0 サポートなど、多くの機能進化が含まれています。 👉 注: これら新機能の一部は、今回の開発者プレビュー版にはまだ含まれていません。 2024.1 の別の注目点は、Health Connect では プライベート・ウェブサーバ (PWS) がインストーラから削除されることです。InterSystems IRIS インストーラからは、すでに2023.2 以降プライベート・ウェブサーバは削除されています。こちらの ドキュメント をご参照ください。 今後のプレビューリリースは、2週間ごとの発表を予定しており、新機能が完成次第、プレビュー版に追加されていきます。みなさまとよりよい製品にできるよう、ぜひ開発者コミュニティにみなさまのフィードバックをお寄せください。お待ちしております。 ドキュメントは以下のリンクからご覧いただけます。本バージョンが正式公開 (General Availability - GA) されるまで、数週間かけてドキュメントは更新される予定です。 InterSystems IRIS InterSystems IRIS for Health HealthShare Health Connect 早期アクセスプログラム (EAP) 現在多くの EAP が実施されています。こちらの ホームページ をご確認いただき、ぜひご興味のあるプログラムにご登録ください。 キットについて 本リリースでは、すべてのサポート対象プラットフォーム向けに、従来のインストーラ形式と Docker コンテナ形式の両方でご提供します。サポート対象プラットフォーム一覧は、こちらのドキュメント をご覧ください。 インストーラとプレビュー用ライセンスキーは、WRC のプレビューダウンロードページ もしくは 評価サービスページ (2024.1を入手するには、"Show Preview Software" フラグをチェックしてください) から入手いただけます。 今回の開発者プレビューのビルド番号は次の通りです。 コミュニティ版キット・コンテナ: 2024.1.0.238.0 エンタープライズ版キット・コンテナ: 2024.1.0.240.0 コンテナイメージは、InterSystems コンテナレジストリ から入手いただけます。コンテナは latest-preview とタグ付けされています。
お知らせ
Mihoko Iijima · 2022年6月5日

【アーカイブ配信のお知らせ】Embedded Python で広がる InterSystems IRIS の世界(2022年3月9日開催)

開発者のみなさん、こんにちは! 2022年3月9日開催「InterSystems Japan Virtual Summit 2022」のセッション「Embedded Python で広がる InterSystems IRIS の世界」のアーカイブを YouTube に公開いたしました。 (プレイリストはこちら) 今や Python は最も人気のあるプログラミング言語の一つです。シンプルで機能的なコードが書けることや、なんでも揃う豊富なライブラリを利用できることなどが人気の理由です。 Embedded Python は、IRIS に Python のランタイムを組み込み、ルーチンやメソッドを Python で書けるようにする画期的な機能です。 IRIS 開発者の方にとって、広大な Python の世界が身近になります。InterSystems IRIS の新しいカタチを是非ご覧ください。 【目次】 00:52 Python とは何か? 04:20 Embedded Python とは何か? 06:29 使用パターン 08:15 活用シナリオ 12:20 デモ1:Jupyter Notebook を使って IRIS からデータを取得して分析 22:00 デモ2:IRIS プログラムから Python を利用する
お知らせ
Toshihiko Minamoto · 2022年7月20日

InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2022.2 開発者向けプレビュー3が公開されました

これは、2022.2の開発者プレビュープログラムのリリース第3弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください 列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。 CDリリースには、サポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。 インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスには「Show Preview Software」をチェックしてください)から入手できます。 InterSystems IRIS やIRIS for Healthの製品版コンテナイメージ、およびそれに対応するすべてのコンポーネントは、以下のコマンドでInterSystems Container Registry から入手できます。 docker pull containers.intersystems.com/intersystems/iris:2022.2.0.293.0 docker pull containers.intersystems.com/intersystems/irishealth:2022.2.0.293.0 docker pull containers.intersystems.com/intersystems/iris-arm64:2022.2.0.293.0 docker pull containers.intersystems.com/intersystems/irishealth-arm64:2022.2.0.293.0 コミュニティエディションのコンテナイメージも以下のコマンドで InterSystems Container Registry から入手できます。 docker pull containers.intersystems.com/intersystems/iris-community:2022.2.0.293.0 docker pull containers.intersystems.com/intersystems/irishealth-community:2022.2.0.293.0 docker pull containers.intersystems.com/intersystems/iris-community-arm64:2022.2.0.293.0 docker pull containers.intersystems.com/intersystems/irishealth-community-arm64:2022.2.0.293.0 利用可能なイメージの詳細については、ICRのドキュメントを参照してください。 また、すべてのコンテナイメージのtarballバージョンは、WRCのプレビューダウンロードサイトから入手できます。 ※ WRCへのアクセスにはWRCアカウントが必要です。 開発者向けプレビューリリースのビルド番号は2022.2.0.293.0 です。 次の更新は2週間後です!
お知らせ
Seisuke Nakahashi · 2023年5月10日

InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2023.2の開発者プレビュー #1が公開されました

2023.2 の開発者プレビュープログラムの一環として、最初の開発者プレビューを公開いたします。今回リリースされたのは、InterSystems IRIS と InterSystems IRIS for Health です。 本リリースの注目点 2023.2では、多くの機能修正と改善に加えて、時間認識モデリングや 強化された外部テーブル、読み込み専用の FEDERATED テーブルといった新機能が含まれる予定です。その一部は、今回の開発者プレビュー版にはまだ含まれていません。 2023.2の別の注目点は、プライベート・ウェブサーバ (PWS) がインストーラから削除されることです。このことは昨年に発表され、インターシステムズ製品のインストーラから削除予定ですが、今回のプレビュー版ではまだPWSは存在します。詳細はこちらのドキュメントをご覧ください。 --> PWSが含まれないインストーラにご興味のある方は、こちらのフォームからEAPに登録してください。その際、オプションで「No Private Web Server」をお選びください。このEAPに関する情報はこちらをご参照ください。 今後のプレビューリリースは、2週間ごとの発表を予定しており、新機能が完成次第、プレビュー版に追加されていきます。みなさまとよりよい製品にできるよう、ぜひ開発者コミュニティにみなさまのフィードバックをお寄せください。お待ちしております。 ドキュメントは以下のリンクからご覧いただけます。本バージョンが正式公開 (General Availability - GA) されるまで、数週間かけてドキュメントは更新される予定です。 InterSystems IRIS InterSystems IRIS for Health キットについて これまでと同じく、継続的デリバリ (CD) リリースは、すべてのサポート対象プラットフォーム向けに、従来のインストーラ形式と Docker コンテナ形式の両方でご提供します。サポート対象プラットフォーム一覧は、こちらのドキュメントをご覧ください。 インストーラとプレビュー用ライセンスキーは、WRC のプレビューダウンロードページ もしくは 評価サービスページ (2023.2を入手するには、"Show Preview Software" フラグをチェックしてください) から入手いただけます。 InterSystems IRIS / IRIS for Health の Enterprise Edition ならびに Community Edition、また関連コンポーネント、それら全てのコンテナイメージは、新しくなった InterSystems コンテナレジストリページから入手いただけます。docker コマンドに関する詳細な情報は、「InterSystemsコンテナレジストリ Webユーザインターフェースのお知らせ」の記事をご覧ください。 今回の開発者プレビューは、InterSystems IRIS のみリリースされ、ビルド番号は 2023.2.0.198.0 です。 --> InterSystems IRIS for Health は数日以内にリリース予定です。 入手可能なイメージの一覧については, ICR に関するドキュメントをご覧ください。また、すべてのコンテナイメージの tarball 版は、WRC のプレビューダウンロードページから入手いただけます。
お知らせ
Seisuke Nakahashi · 2024年1月18日

InterSystems IRIS, IRIS for Health, HealthShare Health Connect 2024.1 の開発者プレビュー #1が公開されました

2024.1 の開発者プレビュープログラムの一環として、最初の開発者プレビューを公開いたします。リリースされる製品は InterSystems IRIS®, InterSystems IRIS® for HealthTM, HealthShare® Health Connect になります。 本リリースの注目点 2024.1では、多くの機能修正や性能強化に加え、ObjectScript でのベクターの使用, ベクター検索 (実験的機能), マルチボリューム・データベース, 高速オンラインバックアップ の利用 (実験的機能), 複数のスーパーサーバーポート の導入 といった新機能が追加されています。また本リリースには、フレキシブル環境での Python 実行 や Smart on FHIR 2.0.0 サポートなど、多くの機能進化が含まれています。 👉 注: これら新機能の一部は、今回の開発者プレビュー版にはまだ含まれていません。 2024.1 の別の注目点は、Health Connect では プライベート・ウェブサーバ (PWS) がインストーラから削除されることです。InterSystems IRIS インストーラからは、すでに2023.2 以降プライベート・ウェブサーバは削除されています。こちらの ドキュメント をご参照ください。 今後のプレビューリリースは、2週間ごとの発表を予定しており、新機能が完成次第、プレビュー版に追加されていきます。みなさまとよりよい製品にできるよう、ぜひ開発者コミュニティにみなさまのフィードバックをお寄せください。お待ちしております。 ドキュメントは以下のリンクからご覧いただけます。本バージョンが正式公開 (General Availability - GA) されるまで、数週間かけてドキュメントは更新される予定です。 InterSystems IRIS InterSystems IRIS for Health HealthShare Health Connect 早期アクセスプログラム (EAP) 現在多くの EAP が実施されています。こちらの ホームページ をご確認いただき、ぜひご興味のあるプログラムにご登録ください。 キットについて 本リリースでは、すべてのサポート対象プラットフォーム向けに、従来のインストーラ形式と Docker コンテナ形式の両方でご提供します。サポート対象プラットフォーム一覧は、こちらのドキュメント をご覧ください。 インストーラとプレビュー用ライセンスキーは、WRC のプレビューダウンロードページ もしくは 評価サービスページ (2024.1を入手するには、"Show Preview Software" フラグをチェックしてください) から入手いただけます。 今回の開発者プレビューのビルド番号は 2024.1.0L.207.0 です。 コンテナイメージは、InterSystems コンテナレジストリ から入手いただけます。コンテナは latest-preview とタグ付けされています。