Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Caché 2017.1

この章では、Caché 2017.1 の以下の項目について説明します。

Caché 2017.1 の新機能と強化機能

このセクションでは、以下の項目について説明します。

Caché 保存済みデータ暗号化のための FIPS 140-2 対応暗号化

今回のリリースでは、Red Hat Enterprise Linux 64 ビットで稼働する Caché は、Caché 保存済みデータ暗号化に FIPS 140-2 対応のライブラリを使用するように構成できます。詳細は、“Caché データベース暗号化の FIPS 140–2 準拠” を参照してください。

OAuth 2.0 および OpenID Connect に対するサポートの機能強化

OAuth 2.0 および OpenID Connect に対する Caché のサポートには、以下の機能が含まれるようになりました。

  • 検出のサポート (OpenID Connect Discovery 1.0)。詳細は、https://openid.net/specs/openid-connect-discovery-1_0.htmlOpens in a new tab を参照してください。クライアントの構成時に、管理ポータルで新しい検出オプションを選択できます。このオプションは、認証サーバに関するすべての情報を手動で入力する代わりに使用できます。%SYS.OAuth2.RegistrationOpens in a new tab クラスでは、Discover() メソッドが使用できるようになりました。

  • ダイナミック・クライアント登録 (OpenID Connect Dynamic Client Registration) のサポート。詳細は、http://openid.net/specs/openid-connect-registration-1_0-19.htmlOpens in a new tab を参照してください。クライアントの構成時に、管理ポータルで新しい登録オプションを選択できます。このオプションは、認証サーバのクライアントに関する情報をすべて手動で入力する代わりに使用できます。%SYS.OAuth2.RegistrationOpens in a new tab クラスでは、RegisterClient() メソッドが使用できるようになりました。

  • JSON Web Key (JWK) および JSON Web Key Set (JWKS) のサポート (JSON Web トークン (JWT) の署名の暗号化、復号化、署名および検証)。詳細は、https://tools.ietf.org/html/rfc7517Opens in a new tab を参照してください。

    JWKS はパブリック/プライベートのキー・ペアの表現手段を提供するため、これらの目的のために証明書/プライベート・キーのペアを使用する必要がなくなりました。証明書/プライベート・キーのペアを使用するオプションは、下位互換性を維持するために、これまでどおりに含まれています。

  • キー・ローテーション (JWKS を使用している場合)。管理ポータルの OAuth 2.0 の構成ページでは、キーをローテーションするオプションを選択できます。これに該当するオプションでは、新しいキー・ペアを JWKS に追加して、JWKS を保存します。

  • 特定のユーザのトークンを取り消すための、管理ポータルのオプション。このオプションは、利便性のために提供されているもので、既存のクライアント API を補足するためのものです。

2016.2 でサポートされているすべての機能は、2017.1 との相互運用性があります。 例えば、異なる Caché バージョンのクライアントと認証サーバの混在が可能です。ただし、新機能は、バージョン 2016.2 のパートナーでは動作しなくなります。

リリース 2017.1 には、OAuth 2.0 および OpenID Connect の構成クラスに変更があります。Caché は、保存済みの構成を自動的に更新します。

DeepSee の改善

今回のリリースでは、DeepSee に対する以下の改善が行われました。

  • ダッシュボード用の新しいコントロール・ウィジェット。

  • DeepSee コンポーネントのエクスポートの改善。

  • 新しい DayOfWeek 時間関数。

  • 新しい CreateTable プラグイン。

  • 既定のフィルタ値の設定の改善。

  • 高度なフィルタ値の設定の改善。

  • expressionBuilder を使用するようになったドリルダウン式。

  • 動的ソートをサポートするようになった SQL ベースのリスト表示。

ミラーリングの改善

今回のリリースでは、ミラーリングに対する以下の改善が行われました。

  • プライマリから受信する更新をミラー・ジャーナル・ファイルのローカル・コピーに書き込むためのバックアップおよび非同期メンバのパフォーマンスが大幅に向上しました。ジャーナル転送のスループットが 10 倍向上し、それによってミラーリングされたシステムのスケーラビリティが拡張されました。バックアップ・フェイルオーバー・メンバを利用するシステムも、これらの向上の結果としてアプリケーションのパフォーマンスおよびプライマリの応答性が向上する場合があります。

  • 災害復旧非同期メンバの昇格が拡張されました。災害シナリオで災害復旧メンバを昇格するとき、昇格されるメンバは、プライマリになる前に、到達可能な他のすべてのミラー・メンバを調査し、そのメンバが災害の直前に取得した新しいジャーナル・データを取得するようになりました。この動作によって、災害復旧の切り替え時に使用可能なすべてのデータが確実に含まれるようになり、災害の影響を受けなかった非同期メンバを新しいプライマリに確実に結合できます。また、操作手順がサポートされ、昇格するメンバがプライマリになるのを許可する前にそのメンバに対する手動の検証を実行できます。

  • ccontrol list および ccontrol qlist にミラー・メンバのタイプとステータスが含まれるようになりました。

機能トラッカ

2017.1 では、インターシステムズの安全で信頼性の高い方法を導入することで、お客様との関係の誠実性を維持しながら、使用されている Caché の機能に関する情報を定期的に収集します。機能トラッカは、タスクごとに制御されます。既定では、タスクは一時停止されていて、機能トラッカは無効化されていますが、タスクは簡単に再開できます。 お客様が使用の機能に基づいて、改善対象 Caché 機能の優先付けに機能トラッカを利用します。

機能トラッカでは、インスタンスの属性 (製品タイプ、バージョン、ライセンス、プラットフォームなど) に関する情報と、テクノロジ (ECP、ミラーリング、DB 暗号化、SQLなど) の使用に関する情報を収集します。ライセンスの使用状況、データベースの属性、アプリケーション、エラー、認証、クライアント・データ、クライアント固有の構成に関する情報は収集しません。 機能トラッカは、収集したデータ (XML ファイル) を週ごとに SSL を使用して InterSystems Caché インスタンスに送信します。 最新の収集データを表示して、この情報が信頼できるものであることを確認できます。 何らかの理由で送信できない場合、機能トラッカはインスタンスに影響を与えることなく表示なしに失敗します。

機能トラッカの詳細は、"Caché システム管理ガイド" の "機能トラッカによる使用量統計の収集" を参照してください。

Note:

フィールド・テスト時には、機能トラッカのタスクはアクティブ状態で、機能トラッカは有効化されています。

iKnow REST API およびその他の機能強化

今回のリリースには、iKnow ドメイン情報に RESTful クライアントから直接アクセスする REST API が導入されています。多数の共通クエリ API のメソッドが、簡単で一貫性のあるインタフェースによってサポートされています。このインタフェースでは、アプリケーションの要件に応じて個別の要求を構成することで、詳細なクエリ結果を取得することも、基本データのみを取得することもできます。iKnow REST API には、Swagger 仕様を使用したリファレンス・ドキュメントが用意されています。この仕様は、OpenAPI 仕様の基盤です。

Note:

iKnow REST API ドキュメントの表示には、Swagger UI を使用する方法があります。そのためには、Web ブラウザで http://petstore.swagger.io/Opens in a new tab に移動するか、Swagger UI ツールキットをダウンロードします。Swagger UI フォームに、以下のいずれかの URL を入力して、[エクスプローラ] ボタンをクリックします。最小限のセキュリティを備えた Caché 開発インスタンスの場合は、以下のように入力します。

http://localhost:port-number/api/iknow/v1/user/swagger

パスワード・セキュリティを備えた Caché インスタンスの場合は、以下のように入力します。

http://localhost:port-number/api/iknow/v1/user/swagger?CacheUserName=user-name&CachePassword=password

さらに、今回のリリースでは、ドメインのコンテンツを調査するためのナレッジ・ポータルのデモ・インタフェースの全面改修と、ドメイン定義を管理するための iKnow アーキテクト・インタフェースへのいくつか機能強化が実施されています。

Eclipse ベースの IDE である Atelier の新機能

Caché 用の Eclipse ベースの IDE である Atelier は、Caché と異なるリリース・サイクルでリリースされます。その結果、新しい機能は、それぞれの新しい Atelier リリースで提供される Atelier のドキュメントに記載されています。Atelier IDE は、強力で普及している Eclipse 開発環境と InterSystems Caché データベースを統合します。Atelier により、最新のファイル・ベースの IDE を使用して、クライアント・システムで Caché アプリケーションを開発できます。Atelier は、アプリケーションの実行とデバッグが可能な Caché サーバにアプリケーションをアップロードする処理を行います。

将来の開発は、新規の Eclipse ベースの IDE を主な対象としています。スタジオはインストールのオプションとして残されるため、開発者は引き続きスタジオを使用してコードを開発できます。しかし、スタジオは保守プロダクトと見なされ、今後は Atelier へ移行していくため、スタジオには新機能は追加されなくなります。必要なリソースと問題の重大度の兼ね合いによっては、スタジオの小さなバグは対処されない場合があります。

Atelier は、Caché や Ensemble に加えて別途ダウンロードして利用できます。お客様は、スタンドアロンのリッチ・クライアント・プラットフォーム (RCP) アプリケーションをインストールするか、既存の Eclipse インストールに追加できるプラグインをインストールするか選択できます。RCP アプリケーションのユーザは、Eclipse プラグインを追加できます。Atelier では、Eclipse の自動更新メカニズムを使用して、最新の変更を入手できます。Atelier のダウンロードおよび Atelier のドキュメントの詳細は、Atelier のホーム・ページ http://www.intersystems.com/atelierOpens in a new tab を参照してください。

その他の注意事項

その他にも、多数のマイナーな改善や修正が施されています。特に既存のインストール環境をアップグレードする場合は、“Caché 2017.1 アップグレードのチェックリスト” で詳細な変更内容を確認してください。

改善の対象範囲は、以下のとおりです。

  • OpenSSL ライブラリ: 今回のリリースでは、OpenSSL ライブラリが v1.0.2h にアップグレードされています。

  • タイ (仏教紀元) 日付形式のサポートが拡張および改善されました。詳細は、関数 $ZDATEH() および $ZDATETIMEH() についてのリファレンス・ガイドを参照してください。

  • 軽量な統計により、SQL クエリのパフォーマンスに関する情報を提供します。

  • 検証済み SQL 読み込みにより、READ UNCOMMITTED の実行によりコミットされていない変更にアクセスできるだけでなく、クエリ条件が引き続き満たされているかどうかの再チェックもできます。

  • ワーク・キュー・マネージャの改善。

  • XSLT ゲートウェイの改善。

  • 速度と堅牢さが向上した事前解析を含めて、JDBC ドライバの改善。

  • .NET ゲートウェイ、Caché eXtreme および ADO.NET における .NET 4.5 のサポート。

Caché 2017.1 アップグレードのチェックリスト

目的

このセクションでは、Caché 2017.1 の機能のうち、今回のバージョンで変更されたために、既存のシステムの管理、運用、または開発の作業に影響を及ぼすものを取り上げます。

前回リリースよりも前のリリースからアプリケーションをアップグレードする場合は、その中間に存在するリリースのアップグレード・チェックリストにも目を通すことを強くお勧めします。このドキュメントでは、2016.2 と 2017.1 の違いのみを取り上げています。

Important:

Caché 2008.2 以前のバージョンからアップグレードしている場合、Caché 2017.1 に直接アップグレードできません。まず中間のバージョンにアップグレードする必要があります。詳細は、"Caché インストール・ガイド" の "サポート対象アップグレード・パス" を参照してください。

このドキュメントの冒頭に記載したアップグレードの説明は、このバージョンに適用されます。

管理者

このセクションでは、以前のバージョンの Caché の管理作業を熟知しているユーザを対象に、バージョン 2017.1 の管理に関する新機能と変更点を説明します。ここでは、各項目について簡単に説明します。ほとんどの場合は、ドキュメントの別の箇所に詳しい説明があります。

操作上の変更

ここでは、システムによる処理方法に影響を与える変更について説明します。

非 Unicode システムのフレーム・スタックの既定のメモリ使用量の増加

このリリースでは、非 Unicode インスタンスのフレーム・スタック・サイズが増加しています。この変更により、Unicode インスタンスで動作する SQL クエリが非 Unicode システムでフレーム・スタック・エラーを発生させる可能性が減ります。通常は、この増加によってシステム・メモリ使用量が大きな影響を受けることはありませんが、メモリに制限のあるシステムでは問題が発生する可能性があります。問題が発生する場合は、システム起動時に SetFrameStackSize メソッドを呼び出すことによって、フレーム・スタック・サイズの割り当てを以前の値に戻すことができます。

64 ビット・システムでは、以下を入力します。

 Do $SYSTEM.Util.SetFrameStackSize(1024*112)

32 ビット・システムでは、以下を入力します。

Do $SYSTEM.Util.SetFrameStackSize(1024*72)
フェイルオーバー・メンバをミラー・セットに再追加する場合はジャーナル・ログを削除する必要がある

以前のリリースでは、ミラー・セットからフェイルオーバー・メンバが削除されると、そのフェイルオーバー・メンバの journal.log が削除されていました。このリリースでは、このファイルは削除されません。したがって、フェイルオーバー・メンバを同じミラー・セットに再追加する前に、パージ・ユーティリティを実行する必要があります。この状況は、プロダクション・システムで発生することはほとんどありませんが、テスト・システムでは発生する可能性があります。

ミラーリング停止動作の変更

ミラーリングには、[このメンバのミラーリングを停止] 機能があり、プライマリ以外のメンバをプライマリから一時的に切断したり、デジャーナリングを停止したりします。

以前のバージョンでは、Caché インスタンスが再起動する場合に、ミラーリングも暗黙的に再開 (再接続) します。このバージョンではこの動作が変更され、ユーザが ^MIRROR または管理ポータルのどちらかを使用して、手動でミラーリングを開始 (再接続) する必要があります。

コンソール・ログ・メッセージの変更

このリリースでは、コンソール・ログに、データベースのマウント時およびアンマウント時のメッセージが含まれます。また、一部のメッセージでは表現が変更されています。

Ensemble が HL7.2 スキーマをコンパイルする方法の変更

Ensemble 2016.2 では、HL7.2 スキーマをインポートしてコンパイルする方法が変更されました。以前のバージョンでは、ビジネス・ホストで HL7.2 スキーマをアクティブに使用中にこのスキーマをインポートすると、古いスキーマの削除と新しいスキーマのコンパイルの間の時間にホストでエラーが発生することがありました。2016.2 の変更によってこのエラーは回避されますが、残念ながら 2016.2 の変更で別の問題が発生し、Ensemble 2017.1 で変更が元に戻されました。Ensemble 2017.1 以降のバージョンの Ensemble では、既存の HL7.2 スキーマがまず削除され、それから新しいスキーマがコンパイルされます。

このリリースでは、HL7.2 のコンパイル動作は、Ensemble 2016.1 以前の動作に戻っています。つまり、HL7.2 スキーマを新しいバージョンに置き換える前に、HL7.2 スキーマを使用するすべてのホスト項目を停止する必要があります。スキーマをコンパイルまたは管理ポータルの HL7 スキーマ・エディタを使用して、スキーマを置き換えることができます。

Java JAR ファイルの場所の変更

今回のリリースでは、JAR ファイルの場所および構成が変更されました。これらの変更の詳細は、"Java とゲートウェイの変更" を参照してください。

アップグレードしても /csp/user アプリケーション設定は変更されない

以前のリリースでは、Caché アップグレードのインストールによって、カスタムの /csp/user アプリケーション設定が上書きされるため、設定を再適用する必要がありました。今回のリリースでは、アップグレードしてもこれらのカスタム設定は変更されません。アップグレード後にこれらの設定を再適用する処理を自動化していた場合、この部分の処理を削除できます。

プラットフォーム固有の項目

このセクションでは、特定のプラットフォームに関係する項目について説明します。

UNIX®
  • SUSE システムと Ubuntu システムのライセンス・タイプの変更

    以前のリリースでは、64 ビットの Red Hat、SUSE、および Ubuntu の各システムで使用できるライセンス・タイプは 1 つだけでした。Red Hat システムを使用している場合は、このライセンスを引き続き使用できます。しかし、SUSE システムまたは Ubuntu システムを使用している場合は、このリリースにアップグレードする前に、代替ライセンスの取得についてインターシステムズのサポート窓口までお問い合わせください。

  • インストール・プロンプトの変更

    UNIX をインストールする際、カスタム・インストールでマネージャ・ユーティリティ・ソース・コードのロードを求めるプロンプトは表示されなくなります。このコードは常にロードされます。このインストールを実行するスクリプトを使用している場合は、表示されなくなったプロンプトへの応答を行わないように、スクリプトを変更する必要がある場合があります。

  • 配布キット内の Java ファイルの場所の変更

    この変更の影響を受けるのは、配布キット内のファイルの場所のみです。インストールされる製品には影響ありません。現在、Java クライアント・インストール情報は、dev/java の下のフラット・ファイル構造ではなく、java_client.tar.gz 圧縮アーカイブとして提供されています。配布キット内のこれらのファイルに直接アクセスするスクリプトを使用している場合は、スクリプトを変更する必要があります。

  • Solaris UFS ユーザは ZFS を使用してパフォーマンスを向上させられる

    最適なパフォーマンスを得るために、ジャーナルに使用する Oracle Solaris プラットフォームのジャーナル・ファイルに、UFS ファイル・システムを使用しないでください。ジャーナリングには、ZFS を使用することを強くお勧めします。

  • UNIX インストールでのエラー検知の向上

    Caché 2017.1.2 以降のリリースでは、UNIX インストールのエラー検知が向上しています。環境が前の動作に依存する場合、つまり、エラーが続行するインストールの場合、インストールを続行する前に "ISC_PACKAGE_SHELL_COMMAND=sh" を設定することによって、この動作に戻すことができます。これによってエラー・チェックが無効になります。

開発者

このセクションでは、以前のバージョンの Caché 上で実行されているアプリケーションの設計者、開発者、および保守担当者に関係する情報を示します。

ここでは、各項目について簡単に説明します。ほとんどの場合は、ドキュメントの別の箇所に詳しい説明があります。

クラスの変更

クラスの削除

以前のバージョンに存在していた以下のクラスは、今回のリリースで削除されています。

  • %Library.ListOfPersistentChildObjects

  • %iKnow.Objects.SQLUtils

  • %iKnow.Objects.StoredProcBase

  • %iKnow.ont.temp.SearchResult

  • Ens.Network

削除されたメソッド

以前のバージョンに存在していた以下のメソッドは、今回のリリースで削除されています。

  • %CSP.UI.Portal.Applications.Web

    • enableLDAP

  • %CSP.UI.Portal.OAuth2.Client.Configuration

    • showJWT

  • %OAuth2.Server.JWT

    • CreateJWT

  • %SYS.OAuth2.Validation

    • JWTToObject

  • %SYSTEM.iKnow

    • mapToUMLS

  • %Stream.FileBinary

    • GetReadOpenParameter

  • %Stream.FileCharacter

    • GetReadOpenParameter

  • %UnitTest.TestSqlScript

    • runSqlStatement

  • %ZEN.Template.AddInWizard.SOAPWizard

    • changePersistent

  • %iFind.Utils

    • RebuildFullIndicesInNamespace

  • %iKnow.UI.KnowledgePortal

    • BuildSummary

    • DrawCC

    • DrawCRC

    • DrawDrillCC

    • DrawDrillCRC

    • DrawPath

    • DrawSource

    • DrawSourceDrill

    • DrillToSources

    • GetInfoPaneText

    • InitPages

    • MakeLink

    • OnChangeLanguageMode

    • RefreshRadialContent

    • buildSummaryClient

    • displaySourceClient

    • drillToSourcesClient

    • onUpdateFilterClient

    • onUpdateTermClient

    • refreshRadial

    • selectNodeClient

    • toggleRelated

    • toggleTop

    • useTermClientRow

  • Security.SSLConfigs

    • GetCRLFile

  • OAuth2.Server.AccessToken

    • IsOpenID

  • OAuth2.Server.Client

    • Delete

削除されたプロパティ

以前のバージョンに存在していた以下のプロパティは、今回のリリースで削除されています。

  • %CSP.UI.Portal.Dialog.SQLStatementDetails

    • FrozenSettingHasChanged

  • %CSP.UI.Portal.JDBCGatewayServer

    • JAVAHOMEValue

  • %CSP.UI.Portal.ObjectGateway

    • JAVAHOMEValue

  • %CSP.UI.Portal.XSLTGatewayServer

    • JAVAHOMEValue

    • XSLTGatewayJDKVersion

  • %CSP.UI.Portal.ZenReportPrintServer

    • hintForAdobe

  • %Net.Remote.ObjectGateway

    • JDKVersion

  • %iKnow.Queries.SourceWSAPI.GetSummary

    • domainid

    • sourceid

  • %iKnow.UI.KnowledgePortal

    • drillMaster

    • drillRelation

    • drillSlave

削除されたパラメータ

以前のバージョンに存在していた以下のパラメータは、今回のリリースで削除されています。

  • %Net.Remote.Java.XSLTGateway

    • JDKVersion

  • %UnitTest.TestScript

    • CORRELATIONLIST

    • DATACLASS

    • DATAFILE

    • DATATAG

    • SHOWPLAN

  • OAuth2.Server.REST

    • CONTENTTYPE

削除されたインデックス

以前のバージョンに存在していた以下のインデックスは、今回のリリースで削除されています。

  • OAuth2.Server.Client

    • NameIndex

変更されたメソッド

今回のバージョンの Caché では、以下のメソッドのシグニチャが変更されました。

  • %CSP.UI.Portal.Dialog.MirrorPromote

    • 古いメソッド: PromoteToFailover (virtualinterface, partner, standalone) As %Integer

    • 新しいメソッド: PromoteToFailover (virtualinterface, partner, standalone, NoFailover) As %Integer

  • %CSP.UI.Portal.JDBCGatewayServer

    • 古いメソッド: CheckForChanges (pOnlyPort:%Boolean=0, pPort:%String="", pLogFile:%String="", pJavaHome:%String="") As %Boolean

    • 新しいメソッド: CheckForChanges (pOnlyPort:%Boolean=0, pPort:%String="", pLogFile:%String="", pJavaHome:%String="", pUsePassphrase:%String) As %Boolean

    • 古いメソッド: StartJDBCGateway (pHost:%String, pPort:%String) As %String

    • 新しいメソッド: StartJDBCGateway (pHost:%String, pPort:%String, pUsePassphrase:%String) As %String

  • %CSP.UI.Portal.Mirror.Dialog.SSL

    • 古いメソッド: SaveData (CAFile, CRLFile, CertificateFile, PrivateKeyFile, PrivateKeyType, PrivateKeyPassword, Protocols1, Protocols2, Protocols4, Protocols8, Protocols16, CipherList, pwModified, PWOptions) As %ZEN.proxyObject

    • 新しいメソッド: SaveData (CAFile, CRLFile, CertificateFile, PrivateKeyFile, PrivateKeyType, PrivateKeyPassword, Protocols2, Protocols4, Protocols8, Protocols16, CipherList, pwModified, PWOptions) As %ZEN.proxyObject

  • %CSP.UI.Portal.OAuth2.Client.Configuration

    • 古いメソッド : LoadData (PID:%String) As %Status

    • 新しいメソッド : LoadData (PID:%String, sys:OAuth2.Client="") As %String

  • %CSP.UI.Portal.OAuth2.Client.ConfigurationList

    • 古いメソッド : doEdit (ApplicationName) As (none)

    • 新しいメソッド : doEdit (ApplicationName, IssuerEndpointID, IssuerEndpoint) As (none)

    • 古いメソッド : doNew () As (none)

    • 新しいメソッド : doNew (IssuerEndpointID, IssuerEndpoint) As (none)

  • %CSP.UI.Portal.OAuth2.Client.ServerConfiguration

    • 古いメソッド : LoadData (PID:%String) As %Status

    • 新しいメソッド : LoadData (PID:%String, *sys) As %Status

    • 古いメソッド : doSave () As (none)

    • 新しいメソッド : doSave (isDiscovery) As (none)

  • %CSP.UI.Portal.OAuth2.Server.Client

    • 古いメソッド : SaveData (Name, ClientId, ClientSecret, ClientType, DefaultScope, Description, RedirectURL, SupportedGrantTypes, LaunchURL, ClientName, LogoUri, ClientUri, PolicyUri, TosUri, ClientCredentials) As %ZEN.proxyObject

    • 新しいメソッド : SaveData (pValueProxy:%ZEN.proxyObject) As %ZEN.proxyObject

  • %CSP.UI.Portal.ObjectGateway

    • 古いメソッド: SaveData (PID, Type, Name, Server, Port, LogFile, HeartbeatInterval, HeartbeatFailureTimeout, HeartbeatFailureAction, HeartbeatFailureRetry, InitializationTimeout, ConnectionTimeout, J1, J2, J3, J4) As %ZEN.proxyObject

    • 新しいメソッド: SaveData (PID, Type, Name, Server, Port, UsePassphrase, LogFile, HeartbeatInterval, HeartbeatFailureTimeout, HeartbeatFailureAction, HeartbeatFailureRetry, InitializationTimeout, ConnectionTimeout, J1, J2, J3, J4) As %ZEN.proxyObject

  • %CSP.UI.Portal.SSL

    • 古いメソッド: SaveData (PID, isTest, Name, Description, Enabled, Type, VerifyPeer, CAFile, CRLFile, CertificateFile, PrivateKeyFile, PrivateKeyType, PrivateKeyPassword, Protocols1, Protocols2, Protocols4, Protocols8, Protocols16, CipherList, TestHost, TestPort, pwModified, PWOptions) As %ZEN.proxyObject

    • 新しいメソッド: SaveData (PID, isTest, Name, Description, Enabled, Type, VerifyPeer, CAFile, CRLFile, CertificateFile, PrivateKeyFile, PrivateKeyType, PrivateKeyPassword, Protocols2, Protocols4, Protocols8, Protocols16, CipherList, TestHost, TestPort, pwModified, PWOptions) As %ZEN.proxyObject

  • %CSP.UI.Portal.XSLTGatewayServer

    • 古いメソッド: CheckForChanges (pOnlyPortOrHost:%Boolean=0, pHost:%String, pPort:%String, pJDKVersion:%String, pLogFile:%String, pJavaHome:%String, pJVMArgs:%String) As %Boolean

    • 新しいメソッド: CheckForChanges (pOnlyPort:%Boolean=0, pPort:%String, pLogFile:%String, pJavaHome:%String, pJVMArgs:%String, pUsePassphrase:%String) As %Boolean

    • 古いメソッド: StartXSLTGateway (pHost:%String, pPort:%String, pJDKVersion:%String, pLogFile:%String, pJavaHome:%String, pJVMArgs:%String) As %String

    • 新しいメソッド: StartXSLTGateway (pHost:%String, pPort:%String, pLogFile:%String, pJavaHome:%String, pJVMArgs:%String, pUsePassphrase:%String) As %String

  • %DeepSee.CubeManager.RegistryMapGroup

    • 古いメソッド: BuildGroup (pGroupIndex="", pAsync:%Boolean=1, pVerbose:%Boolean=1, pIndexOnly:%Boolean=0, pMaxFacts:%Integer=0, pTracking:%Boolean=0, pUpdateAll=0) As %Status

    • 新しいメソッド: BuildGroup (pGroupIndex="", pAsync:%Boolean=1, pVerbose:%Boolean=1, pIndexOnly:%Boolean=0, pMaxFacts:%Integer=0, pTracking:%Boolean=0, pUpdateAll=0, &pBuildStats) As %Status

    • 古いメソッド: SynchronizeGroup (pGroupIndex="", pVerbose:%Boolean=1, *pFactsUpdated:%Integer, pUpdateAll=0) As %Status

    • 新しいメソッド: SynchronizeGroup (pGroupIndex="", pVerbose:%Boolean=1, *pFactsUpdated:%Integer, pUpdateAll=0, &pSynchronizeStats) As %Status

  • %DeepSee.CubeManager.Utils

    • 古いメソッド: BuildAllRegisteredGroups () As %Status

    • 新しいメソッド: BuildAllRegisteredGroups (pMap:%DeepSee.CubeManager.RegistryMap="", &pBuildStats) As %Status

    • 古いメソッド: BuildCube (pCubeName:%String="", pAsync:%Boolean=1, pVerbose:%Boolean=1, pIndexOnly:%Boolean=0, pMaxFacts:%Integer=0, pTracking:%Boolean=0, pRepair:%Boolean=0) As %Status

    • 新しいメソッド: BuildCube (pCubeName:%String="", pAsync:%Boolean=1, pVerbose:%Boolean=1, pIndexOnly:%Boolean=0, pMaxFacts:%Integer=0, pTracking:%Boolean=0, pRepair:%Boolean=0, pMapCube:%DeepSee.CubeManager.RegistryMapCube="", &pBuildStats) As %Status

    • 古いメソッド: BuildOneRegisteredGroup (pGroupName="") As %Status

    • 新しいメソッド: BuildOneRegisteredGroup (pGroupName="", pMap:%DeepSee.CubeManager.RegistryMap="", &pBuildStats) As %Status

    • 古いメソッド: GetDependentCubes (pCubeName="", pMap:%DeepSee.CubeManager.RegistryMap="", *pDependentCubes) As %Status

    • 新しいメソッド: GetDependentCubes (pCubeName="", pMap:%DeepSee.CubeManager.RegistryMap="", *pDependentCubes, &pGroups, &pCubes, &pBuildOrders) As %Status

    • 古いメソッド: IsValidGroup (&pGroup:%DeepSee.CubeManager.RegistryMapGroup, &pStatus:%Status) As %Boolean

    • 新しいメソッド: IsValidGroup (&pGroup:%DeepSee.CubeManager.RegistryMapGroup, &pStatus:%Status, &pGroups, &pCubes, &pBuildOrders) As %Boolean

    • 古いメソッド: RepairBuild (pCubeName:%String, tMap:%DeepSee.CubeManager.RegistryMap="", pAsync:%Boolean=1, pVerbose:%Boolean=1, pIndexOnly:%Boolean=0, pMaxFacts:%Integer=0, pTracking:%Boolean=0) As %Status

    • 新しいメソッド: RepairBuild (pCubeName:%String, pMap:%DeepSee.CubeManager.RegistryMap="", pAsync:%Boolean=1, pVerbose:%Boolean=1, pIndexOnly:%Boolean=0, pMaxFacts:%Integer=0, pTracking:%Boolean=0) As %Status

    • 古いメソッド: SynchronizeCube (pCubeName:%String="", pVerbose:%Boolean=1, *pFactsUpdated:%Integer, pReadCommitted:%Boolean=1, pCheckReferences:%Boolean=1, pAsync:%Boolean=0) As %Status

    • 新しいメソッド: SynchronizeCube (pCubeName:%String="", pVerbose:%Boolean=1, *pFactsUpdated:%Integer, pReadCommitted:%Boolean=1, pCheckReferences:%Boolean=1, pAsync:%Boolean=0, pMapCube:%DeepSee.CubeManager.RegistryMapCube="", &pSynchronizeStats) As %Status

  • %DeepSee.UserLibrary.Utils

    • 古いメソッド: %Export (pFullName:%String, pFile:%String="", pVerbose:%Boolean=1) As %Status

    • 新しいメソッド: %Export (pFullName:%String, pFile:%String="", pVerbose:%Boolean=1, *pXMLName:%String) As %Status

    • 古いメソッド: %ImportContainer (pClass:%String="", pReplace:%Boolean=0, pVerbose:%Boolean=1) As %Status

    • 新しいメソッド: %ImportContainer (pFileName:%String="", pReplace:%Boolean=1) As %Status

  • %Installer.Component

    • 古いメソッド: ConfigureComponent (pDB="", pNamespace="", pVerbose=0) As %Status

    • 新しいメソッド: ConfigureComponent (pDB="", pNamespace="", pVerbose=0, &pVars) As %Status

    • 古いメソッド: UnconfigureComponent (pDB="", pNamespace="", pVerbose=0) As %Status

    • 新しいメソッド: UnconfigureComponent (pDB="", pNamespace="", pVerbose=0, pPurgeFiles=0, &pVars) As %Status

  • %Library.Storage

    • 古いメソッド: %ValidateIndices (idxList:%List="", autoCorrect:%Boolean=0, lockOption:%Boolean=1, multiProcess:%Boolean=1) As %Status

    • 新しいメソッド: %ValidateIndices (idxList:%List="", autoCorrect:%Boolean=0, lockOption:%Integer=1, multiProcess:%Boolean=1) As %Status

  • %Net.Charset

    • 古いメソッド: TranslateTableExists (charset:%String) As %Boolean

    • 新しいメソッド: TranslateTableExists (charset:%String, *table) As %Boolean

  • %Net.Remote.Java.XSLTGateway

    • 古いメソッド: GetObjectGateway (*status:%Status, port:%String, host:%String, jdk:%String, javahome:%String, logfile:%String, jvmargs:%String) As %Net.Remote.ObjectGateway

    • 新しいメソッド: GetObjectGateway (*status:%Status, port:%String, host:%String, jdk:%String, javahome:%String, logfile:%String, jvmargs:%String, usepassphrase:%Boolean) As %Net.Remote.ObjectGateway

    • 古いメソッド: StartGateway (*status:%Status, port:%String, host:%String, jdk:%String, javahome:%String, logfile:%String, jvmargs:%String) As %Net.Remote.Gateway

    • 新しいメソッド: StartGateway (*status:%Status, port:%String, host:%String, jdk:%String, javahome:%String, logfile:%String, jvmargs:%String, usepassphrase:%String) As %Net.Remote.Gateway

    • 古いメソッド: StopGateway (gateway:%Net.Remote.Gateway) As (none)

    • 新しいメソッド: StopGateway (gateway:%Net.Remote.Gateway) As %Status

  • %OAuth2.JWT

    • 古いメソッド : JWTToObject (JWT:%String, &Local:%String, &Remote:%String, *JOSE:%String, *Body:%RegisteredObject) As %Status

    • 新しいメソッド : JWTToObject (JWT:%String, LocalPrivate:%String, RemotePublic:%String, *JOSE:%String, *Body:%DynamicObject) As %Status

    • 古いメソッド : ObjectToJWT (&JOSE:%String, Body:%DynamicAbstractObject, &Local:%String, &Remote:%String, *JWT:%String) As %Status

    • 新しいメソッド : ObjectToJWT (&JOSE:%String, Body:%DynamicObject, LocalPrivate:%String, RemotePublic:%String, *JWT:%String) As %Status

  • %OAuth2.Server.Authenticate

    • 古いメソッド : DrawLoginHead (LOGINHEADTITLE) As (none)

    • 新しいメソッド : DrawLoginHead (LOGINHEADTITLE, MSGUSERNAME, MSGPASSWORD, MSGUSERNAMEPASSWORD) As (none)

  • %ResultSet.Custom

    • 古いメソッド: %OnNew (&returnError:%SYSTEM.Error, pRuntimeMode:%Integer=$zu(115,5)) As %Library.Status

    • 新しいメソッド: %OnNew (&returnError:%SYSTEM.Error, pRuntimeMode:%Integer={$zu(115,5)}) As %Library.Status

  • %SQL.Statement

    • 古いメソッド: %GetImplementationDetails (*pClassName:%Library.String(MAXLEN=300), *pStatementText:%Library.String(MAXLEN=""), *pArguments:%Library.List) As %Integer

    • 新しいメソッド: %GetImplementationDetails (*pClassName:%Library.String(MAXLEN=300), *pStatementText:%Library.String(MAXLEN=""), *pArguments:%Library.List, *pStatementType:%Integer) As %Integer

  • %SYSTEM.SQL

    • 古いメソッド: SetSQLStats (flag:%Library.Integer=0) As %Library.Integer

    • 新しいメソッド: SetSQLStats (flag:%Library.Integer=1) As %Library.Integer

  • %UnitTest.Manager

    • 古いメソッド: Cleanup () As %Status

    • 新しいメソッド: Cleanup (&State:%String) As %Status

    • 古いメソッド: GetSubDirectories (root, topdir:%String, level:%Integer, suite:%String, &subdirs:%String) As %Status

    • 新しいメソッド: GetSubDirectories (root, topdir:%String, level:%Integer, suite:%String, &subdirs:%String, qspec:%String) As %Status

  • %XML.Node

    • 古いメソッド: InsertElement (localName:%String, namespace:%String="", &child:%Integer, text:%String, qname:%String="") As %String

    • 新しいメソッド: InsertElement (localName:%String, namespace:%String="", &child:%String, text:%String, qname:%String="") As %String

    • 古いメソッド: InsertNode (sourceNode:%XML.Node, &child:%Integer, *sc:%Status) As %String

    • 新しいメソッド: InsertNode (sourceNode:%XML.Node, &child:%String, *sc:%Status) As %String

    • 古いメソッド: InsertTree (sourceNode:%XML.Node, &child:%Integer, *sc:%Status) As %String

    • 新しいメソッド: InsertTree (sourceNode:%XML.Node, &child:%String, *sc:%Status) As %String

  • %iKnow.Queries.SourceAPI

    • 古いメソッド: GetSummary (&result, domainid:%Integer, sourceid:%Integer, length:%Integer=5, summaryConfig:%String="") As %Status

    • 新しいメソッド: GetSummary (&result, domainId:%Integer, srcId:%Integer, length:%Integer=5, summaryConfig:%String="") As %Status

  • %iKnow.Queries.SourceWSAPI

    • 古いメソッド: GetSummary (domainid:%Integer, sourceid:%Integer, length:%Integer=5, summaryConfig:%String="") As %XML.DataSet

    • 新しいメソッド: GetSummary (domainId:%Integer, srcId:%Integer, length:%Integer=5, summaryConfig:%String="") As %XML.DataSet

  • %iKnow.UI.Architect

    • 古いメソッド: addIKnowElement (type) As (none)

    • 新しいメソッド: addIKnowElement (type, parent) As (none)

  • Ens.Util.Statistics

    • 古いメソッド: RecordStats (pConfigType=0, pConfigName:%String="", pUserDimension:%String="", pCleanupAfter:%Boolean=1, pCount:%Integer=1, pDuration:%Numeric) As (none)

    • 新しいメソッド: RecordStats (pConfigType:%Integer=0, pConfigName:%String="", pUserDimension:%String="", pCleanupAfter:%Boolean=1, pCount:%Integer=1, pDuration: %Numeric) As (none)

  • Ens.VDoc.SearchTableGenerator

    • 古いメソッド: getPropId (pSearchTableClass:%String, pPropName:%String, *pPropType, *pStoreNulls) As %Integer

    • 新しいメソッド: getPropId (pSearchTableClass:%String, pPropName:%String, *pPropType, *pStoreNulls, *pUnselective) As %Integer

  • OAuth2.Server.Auth

    • 古いメソッド : GetQueryParameters (client:OAuth2.Client, *requestParameters) As %String

    • 新しいメソッド : GetQueryParameters (client:OAuth2.Server.Client, *requestParameters) As %String

  • SYS.History.SysData

    • 古いメソッド: Summary (Day:%Integer=0) As (none)

    • 新しいメソッド: Summary (Day:%Integer=0) As %Status

バックアップとリストアの変更

ファイルが削除されている場合も DBREST で CACHE.DAT がリストアされる

以前のリリースでは、データベースをリストアする場合、EXTALL^DBREST でリストアされるのはデータベースのディレクトリに存在しているファイルだけでした。したがって、バックアップを実行した後にディレクトリから CACHE.DAT ファイルまたは他のデータベースを削除した場合、そのバックアップをリストアしても、削除した CACHE.DAT や他のデータベースはリストアされませんでした。今回のリリースでは、ディレクトリからファイルが削除されている場合でも、バックアップに含まれるデータベースはすべてリストアされます。以前の動作に依存して、ファイルが削除されたデータベースはリストアされないと想定しているスクリプトまたはコードを使用している場合は、それを変更する必要があります。

クラス・コンパイラの変更

コンパイルされていないクラスが配置されている場合にエラーが報告される

今回のリリースでは、コンパイルされていないクラスに対して $SYSTEM.OBJ.MakeClassDeployed を呼び出すと、エラーが報告されます。以前のリリースでは、エラーは報告されませんでしたが、そのクラスはコンパイルできない状態になりました。それ以降にそのクラスを使用またはコンパイルしようとすると、エラーが発生していました。MakeClassDeployed を呼び出してこのクラスにアクセスを試みないコードを使用している場合、以前のリリースでは実行を続行していましたが、現在はエラーが発生します。

クラス・コンパイラの既定のジャーナル動作の変更

今回のリリースでは、クラス・コンパイラを呼び出した場合、コンパイラはプロセスの既定のジャーナリング環境を尊重します。以前のリリースでは、明示的に /journal=0 修飾子を指定した場合を除いて、クラス・コンパイラは常に変更をジャーナルします。今回のリリースでは、既定の動作は、プロセス環境設定に依存します。この設定は、/journal=0 修飾子または /journal=1 修飾子を指定することによってオーバーライドできます。

CSP の変更

%CSP.REST の DispatchRequest と AccessCheck から返される状態の変更

以前のリリースでは、AccessCheck メソッドと DispatchRequest メソッドで発生するエラーは無視できました。現在は、それらのエラーが発生すると、Http500 レスポンスが返されます。

ハイパーイベント状態が 0 の場合の処理

今回のリリースでは、CSP は、ハイパーイベントの完了後に返される状態が 0 の場合、それを無視します。ほとんどの場合、ハイパーイベントの完了前にページが再ロードされることによって、この条件が発生します。ネットワーク・エラーを示すダイアログ・ボックスの表示を CSP はスキップする可能性があります。多くの場合、ネットワーク・エラーは、次のページ・ロード時に再発生します。

DeepSee の変更

ダッシュボード・ウィジェットに名前を付ける必要がある

2017 年 1 月の時点で、DeepSee では、各ダッシュボード・ウィジェットに名前が必要です。

編集特権を持つ開発者がダッシュボードを開くと、ウィジェット名の自動割り当てが行われた事実を通知するアラートが表示され、変更を示すインジケータがツールバーに表示されます。ダッシュボードを、そのすべての名前付きウィジェットと共に保存すると、このメッセージは再表示されなくなります。

ピボット・テーブルに結果が正しい順序で表示される

以前のバージョンでは、計算したメジャーを 1 番目の位置にし設定を 2 番目にしてクロス結合 CROSSJOIN(M,S) を指定しても、DeepSee がそれらの位置を逆にして、CROSSJOIN(S,M) が指定されたかのように結果を表示していました。この場合、値は正しいのですが、表示順序は正しくありませんでした。今回の変更により、値が正しい順序で表示されるようになります。

Note:

今回の変更で軸キャッシュに軸を格納する方法が変更されているので、%MDX または %KKPI を含むクエリをキャッシュから消去する必要があります。以下を実行して、キャッシュを消去できます。

Do $SYSTEM.DeepSee.Reset() 
DeepSee タスク・ライセンス改善効果を得るために必要なアクション

以前のリリースでは、キューブ・レジストリ用に作成された 2 つのタスクが、それぞれ Caché ライセンスを消費していました。今回のリリースで、これらのタスクはライセンスを消費しなくなりました。ただし、この変更を有効にするには、キューブ・レジストリを保存する必要があります。そのためには、[キューブ・レジストリ] ページを開いて、[保存] を選択します。

これまでキューブ・レジストリを保存したことがない場合、DeepSee は、ネームスペースのキューブ・レジストリを保存するように通知するメッセージを DeepSee ログに書き込みます。

ダイナミック・オブジェクトの変更

%ToJSON による不正な数値の処理方法の変更

JSON 標準に準拠するために、今回のリリースでは、%ToJSON による不正な数値の処理方法が変更されています。今回のリリースでは、ダイナミック・オブジェクトに $DOUBLE("INF")、$DOUBLE("-INF")、または $DOUBLE("NAN") の値が含まれる場合、%ToJSON メソッドは <ILLEGAL VALUE> エラーのシグナルを送信します。以前のリリースでは、これらの値により、JSON 出力に INF、—INF、または NAN が含まれていました。%ToJSON() メソッドで値 $DOUBLE(-0) を検出した場合、JSON 出力には —0.0 が含まれます。以前のリリースでは、値 $DOUBLE(-0) は、JSON 数値リテラル 0 に対応していました。

Ensemble の変更

仮想ドキュメント検索テーブルの | (垂直バー) は + (プラス記号) に置換される

今回のリリースでは、Ensemble によって、EnsLib.HL7.SearchTableOpens in a new tab などの仮想ドキュメント検索テーブルに含まれる | (垂直バー) が + (プラス記号) に置き換えられます。垂直バーを含むデータを検索するときは、垂直バーの位置でプラス記号を指定する必要があります。SearchTable クラスは、値として垂直バーを使用できないインデックスを使用して実装されています。以前のリリースでは、Ensemble でこの置換が行われなかったので、垂直バーを含む SearchTable インスタンスが原因で SQL エラーが発生する可能性がありました。

カスタム検索テーブルを使用している場合は、それらをリコンパイルして、今回の修正を反映させる必要があります。

Ensemble SFTP アダプタでの接続タイムアウトの使用

以前のリリースでは、SFTP アダプタにタイムアウトがなく、無制限に待機していました。今回のリリースでは、接続タイムアウト設定を使用します。既定値は 5 秒です。プロダクションでタイムアウト・エラーが発生する場合は、接続タイムアウト設定の値を増やしてください。

Ensemble TCP デュプレックス・アダプタは既定でプライベート TCP ソケットを使用しない

TCP デュプレックス・アダプタは、プライベート TCP アダプタ以外のメカニズムを使用します。今回の変更は、ほとんどのカスタム・コードに影響を与えません。ただし、カスタム・コードでプライベート TCP ソケットを使用している場合は、アダプタの OpenEventDevice() メソッド呼び出しで、パラメータとして 1 を渡してください。これにより、TCP デュプレックス・アダプタがプライベート TCP ソケットを使用するようになります。

Ensemble の変換処理における XML 仮想ドキュメントに存在しないソース・プロパティの処理方法の変更

以前のリリースでは、存在しないソース・プロパティを XML VDoc 変換処理で処理する場合、空の文字列値を持つターゲット・プロパティを作成していました。しかし今回のリリースでは、ターゲット・プロパティを省略して存在しないままにして、ソース・プロパティの状態と一致させます。以前の動作と現在の動作はどちらも、タグが存在しないというエラーを変換処理に返します。IGNOREMISSINGSOURCE が指定されている場合は、どちらの動作も無視されます。

存在しないプロパティを空の文字列のプロパティにソースで置き換える DTL アクションを挿入すると、以前の動作の変換処理を実現できます。そのための 1 つの方法として、以下の形式のコードを使用します。

$S(source.{propertypath}'="":source.{propertypath},1:"")

繰り返し数が 1 回の子を持つ XSD を Ensemble で解析する方法の変更

以前のリリースでは、繰り返し回数が 1 回の子要素がルート要素に存在する XSD を Ensemble で解析すると、その構造が省略され、最初の子としてのみアクセスできました。今回のリリースでは、構造は省略されません。例えば、以下が含まれる XSD があるとします。

<schema ...>
  <element name="root">
     <complexType>
       <sequence>
         <element name="outer" minOccurs="1" maxOccurs="unbounded">
           <complexType>
             <sequence>
               <element name="inner" minOccurs="1" maxOccurs="unbounded" type="string"/>
             </sequence>
           </complexType>
         </element>
       </sequence>
     </complexType>
  </element>
</schema>

今回のリリースでは、内側の要素を参照するには、outer().inner() と指定します。以前のリリースでは、inner() として参照していました。要素をこの方法で参照するコードを使用している場合は、そのコードを更新する必要があります。

グローバル・マッピングの変更

BEGIN 後のサブスクリプトのエラーの報告

グローバル・マッピング定義では、BEGIN キーワードの後にサブスクリプトを記述してはいけません。以前のリリースでは、そのようなサブスクリプトは無視されていました。今回のリリースでは、BEGIN の後にサブスクリプトがある場合、検証に失敗し、マッピングでエラーが発生する可能性があります。例えば、GLOBAL("TST",BEGIN):("TST",10000) は有効ですが、GLOBAL(BEGIN,"xyz"):(END) は無効であり、検証に失敗します。

Java とゲートウェイの変更

Jar ファイル名の変更と重複場所の削除

今回のリリースでは、jar ファイルの配布に Apache Maven リポジトリを使用する変更の一環として、jar ファイルの名前を変更しています。今回および将来のリリースでは、ファイル名にバージョン番号が含まれ、今後もその予定です。Maven (または Ant などの別のビルド・ツール) を使用して、アプリケーションのファイル名とパスを管理することをお勧めします。以下のファイルに、新しい名前が付けられています。

  • cache-db-2.0.0.jar—以前のリリースでは cachedb.jar でした。

  • cache-jdbc-2.0.0.jar—以前のリリースでは cachejdbc.jar でした。

  • cache-gateway-2.0.0.jar—以前のリリースでは cachegateway.jar でした。

  • cache-extreme-2.0.0.jar—以前のリリースでは cacheextreme.jar でした。

これらの jar ファイルは、以前のリリースではインストールの 2 つの場所で提供されていましたが、今回のリリースでは 1 つの場所にのみインストールされます。

  • install-dir/dev/lib/java/JDK18 — jar ファイルは引き続きこのディレクトリにインストールされます。

  • install-dir/lib — 今回のリリースでは、このディレクトリには jar ファイルは置かれていません。

Ensemble Java ゲートウェイは既定で JDK 1.8 になる

Ensemble Java ゲートウェイは、以前のリリースでは既定で JDK 1.7 でしたが、今回のリリースでは既定で JDK 1.8 になります。JDK 1.7 を引き続き使用する必要がある場合は、Java ゲートウェイ設定でそのバージョンを指定してください。

Java、DotNet Object、および XLST 2.0 の各ゲートウェイは検証済みの接続をサポートする

今回のリリースでは、Java、DotNet Object、および XLST 2.0 の各ゲートウェイを起動して、パスフレーズ入力を要求することができます。ゲートウェイと同じ Ensemble インスタンスから接続して %Connect API を使用する場合、%Connect は自動的にゲートウェイのパスフレーズを使用します。ゲートウェイにアクセスして %Connect を使用しないカスタム・コードを使用している場合は、パスフレーズを指定するか %Connect を使用するようにコードを変更する必要があります。ゲートウェイがパスフレーズを要求しない場合は、何も変更しなくてもコードは正常に動作します。

ゲートウェイ起動時にパスフレーズ・パラメータを指定する詳細は、クラス・リファレンスを参照してください。例えば、EnsLib.JavaGateway.Service.StartGateway()Opens in a new tab または %Net.Remote.Java.XSLTGateway.StartGateway()Opens in a new tab を参照してください。

コマンド・ラインを使用してゲートウェイを起動している場合、以下の操作を実行してパスフレーズをゲートウェイに渡す必要があります。

  1. パスフレーズ・リストを取得します。例えば、ポートが 53912 の場合、以下のコードを使用してパスフレーズ・リストを取得できます。

    Set tPassList=##class(%Net.Remote.Utility).GeneratePassphrase(53912)
    
  2. 以下のコードを使用してリストから HEX パスフレーズを取得します。

    $LISTGET(tPassList,2)
    
  3. コマンド・ラインを実行してゲートウェイを起動します。

  4. 以下のコードを使用してパスフレーズを登録します。

     Do ##class(%Net.Remote.Utility).RecordPassphrase(53912,tPassList) 
    
Ensemble プロダクションで使用される Java、XSLT2、および Java ベースのオブジェクト・ゲートウェイのアドレス設定の変更

以前のリリースでは、Java、XSLT2、および Java ベースのオブジェクト・ゲートウェイでは、以下の 3 つの方法のうちどの方法でもアドレスを指定できました。

  • 127.0.0.1

  • localhost

  • local-machine-name

今回のリリースでは、local-machine-name を指定することによって、local-machine-name127.0.0.1 以外のアドレスに解決されると、ゲートウェイを起動できません。この場合、127.0.0.1 または localhost アドレスを使用するようにゲートウェイのビジネス・サービス設定を変更する必要があります。

別のシステムで使用するように Java、XSLT2、または Java ベースのオブジェクト・ゲートウェイを起動する

Java ゲートウェイを使用する Java、XSLT2、または Java ベースのオブジェクト・ゲートウェイを別のシステムから使用する場合、既定の起動メカニズムを使用できなくなり、ゲートウェイを明示的に起動する必要があるようになりました。 例えば、以下のコマンド・ラインを使用して、Java ゲートウェイを起動できます。(このコマンド・ラインは非常に長いため複数の行に分割されていますが、1 行に入力する必要があります。)

java.exe -Xrs -classpath 
.;H:\intersystems\EnsLibMaint\dev\java\lib\xml\saxon9.jar;H:\intersystems\EnsLibMaint\dev\java\lib\JDK18\cache-gateway-2.0.0.jar;H:\intersystems\EnsLibMaint\dev\java\lib\JDK18\cache-jdbc-2.0.0.jar
com.intersys.gateway.JavaGateway "61785"  "" "" "192.168.224.100" 2>&1
JAR ディレクトリが JVM バージョンから自動的に設定される

以前のバージョンでは、JDKVersion はプロパティによって設定され、その他のプロパティが JAR ファイルの場所を指定していました。今回のバージョンでは、$PATH 値に基づいてシステム既定の Java を調べて Java バージョンを検出し、そのバージョン番号を使用して正しい Caché JAR ファイルのディレクトリを探します。その結果、一部の設定を削除し、関連する設定を移動しました。JAR ファイルの場所を含むスクリプトまたはこれらのプロパティに直接アクセスするコードがある場合、更新する必要があります。

言語バインディング .NET の変更

引用符が一致しない場合の例外の生成

以前のリリースの ADO.NET バインディングでは、文字列を一重引用符で始めて二重引用符で終わることができました。今回のリリースでは、これはエラーと見なされて、失敗します。例えば、以下の文

"update PL31359T set VC = VC || 'qwerty\" where VC is null"

は失敗します。

移行

計算フィールドまたはワード・プロセッシング・リスト・コレクションを含むファイルでは FM2Class ユーティリティを再実行する必要がある

今回のリリースでは、特定の構造に対して FM2Class を生成していた構造が変更されています。FM2Class ユーティリティでクラスを生成して、リスト・コレクションとしてマップされたワード・プロセッシングまたは計算フィールドのデータを選択していた場合、FM2Class マッパを再実行して正しいコードを生成する必要があります。ワード・プロセッシング・フィールドを子テーブルとしてマップしているだけの場合は構造は変化しないので、クラスを再生成する必要はありません。

オブジェクトの変更

シリアル化が失敗した場合でも OnRollBack メソッドが呼び出される

%OnRollBack() メソッドが実装されていて、トランザクション中にシリアル化されたオブジェクトに対してトランザクション・ロールバックを実行する場合、シリアル化が失敗していたとしても、%OnRollBack() メソッドが呼び出されるようになりました。以前のリリースでは、シリアル化が成功していたオブジェクトに対してのみ %OnRollBack() メソッドが呼び出されていました。%OnRollBack() の実装でシリアル化が成功したオブジェクトを想定している場合は、シリアル化が失敗した場合を処理するように実装を変更する必要があります。さらに、トランザクション中に VERSIONPROPERTY が更新されていた場合、ロールバックで VERSIONPROPERTY がトランザクション前の値に復元されます。

%BuildIndices メソッドによるビットマップ・エクステント・インデックスの再構築

今回のリリースでは、以前のリリースでビットマップ・エクステント・インデックスの再構築が行われないいくつかの状況で、%BuildIndices がビットマップ・エクステント・インデックスを再構築するようになりました。これによりインデックス・データが最新であることが保証されますが、ビットマップ・エクステント・インデックスが必要ない場合に余分なリソースを使用する可能性があります。

コンパイラによる SQL 未定義条件付きマップの検出

今回のリリースでは、コンパイラは条件付きマップおよび NULL 条件を含むクラスを検出して、説明を含むエラー・メッセージを生成します。Caché 2015.1、2015.2、2016.1、および 2016.2 では、このコンパイルは失敗しましたが、役に立つエラー・メッセージはありませんでした。Caché 2014.1 以前のリリースでは、クラスのコンパイルはエラーなしで終了しますが、無効な .int コードが作成されていました。

ObjectScript の変更

参照渡しの引数をリストに追加することがプロキシで可能になる

中間ルーチンが args... 構文を使用して引数を受け取り、args... を使用してそれらの引数を別のルーチンに渡す場合、args 配列に追加された新規のエントリは参照渡しで渡されるようになりました。以前のリリースでは、追加されたエントリは常に値渡しで渡されていたので、サブノードは無視され、下位レベル・ルーチンが呼び出し元の引数に影響を与えることはありませんでした。追加した引数に対する変更の影響を中間ルーチンが受ける場合、コードを変更する必要があります。

ロールバック後のビット文字列長の変更

以前のバージョンでは、$bit の設定がロールバックされると、可能な場合には以前のビット文字列長をリストアしようとしていました。この動作によって、グローバル・ノードが削除されることがありました。今回のバージョンでは、Caché は以前の長さをリストアしようとしません。その理由は、この動作に一貫性がないためです。 ビット文字列のグローバル・ノードへのアクセスに $bit および関連する関数を使用するアプリケーションは、この動作に依存しません。 例外は、$bitcount 関数を使用してゼロのビットをカウントする場合です。 アプリケーションがビット文字列のゼロのビットをカウントすることは通常お勧めしませんが、そのようなアプリケーションでは動作が変わる場合があります。詳細は、"Caché ObjectScript の使用法" の "ビット文字列" を参照してください。

セキュリティ

システム全体に基づく LDAP セキュリティの制御

LDAP キャッシュ資格情報がシステム全体に基づいてオンまたはオフに設定されるようになりました。以前のリリースでは、サービスごとまたはアプリケーション・レベルでこれらを適用できました。

SQL の変更

表示モードでコンパイルされた INSERT と UPDATE に対する修正

まれに、INSERT と UPDATE を表示モードでコンパイルできます。以前のリリースでは、Caché は、表示モードでコンパイルされた INSERT と UPDATE の値を正しく変換しませんでした。今回はこの点が修正されました。INSERT または UPDATE の埋め込み SQL で #SQLCompile Select=DISPLAY モードを使用していて、入力値が Logical モードの場合、モードを論理モードにするか、または入力として表示値を渡すように、アプリケーション・コードを更新する必要があります。

マルチプロパティの IDKEY インデックスに対して自動生成されるキー値の JDBC 返り値の変更

システム割り当ての IDKEY 値が存在する場合、JDBC は自動的にキー値を生成できます。例えば、childsub カウンタ・フィールドを含む子テーブルに JDBC で挿入する場合、キー値を自動生成できます。以前のリリースでは、JDBC は、自動生成された ChildID (childsub カウンタ・フィールド値) を返していました。これは、直前に挿入した行を識別するために十分ではありませんでした。今回のリリースでは、JDBC は、ParentID、"||"、および ChildID の順に構成される文字列を返します。これは、新しく挿入した行を識別するために十分です。ただし、ChildID のみで構成される返り値を処理するコードを使用している場合、新しい返り値を使用するようにコードを変更する必要があります。

投影されないインデックスが存在する子テーブルは読み取り専用になる

今回のリリースでは、投影されないインデックスが子テーブルに存在する場合、そのテーブルは読み取り専用であり、挿入、更新、または削除を実行できません。以前のリリースでは、それらのアクションを実行することは可能でしたが、インデックスが破損する可能性がありました。インデックスが作成されているプロパティが、MVSASSOCIATION から投影されたテーブルに含まれる場合、このテーブルは読み取り専用としてマークされます。

新しい SQL.JDBC パーサ

SQL.JDBC パーサは、パフォーマンスが大幅に向上したパーサで置き換えられました。新しいパーサは、以前のリリースのパーサと同じ結果を返すはずですが、特殊な SQL 文に対して異なる結果を生成する可能性はあります。

SQL JDBC UpdatableResultSet の削除報告の一貫性向上

以前のリリースでは、更新可能な ResultSet 動作をメタデータでレコード削除時に報告する方法に関して、Caché は JDBC 仕様に従っていませんでした。今回のリリースでは、Caché はこれらの削除をより一貫した方法で処理し、仕様に記述されている動作に従います。

SQL JDBC の SysList と SysListProxy は非推奨

SysList クラスと SysListProxy クラスは非推奨になりました。これらのクラスは今回のリリースに含まれていますが、それらを CacheList、CacheListBuilder、および CacheListReader の各クラスに置き換えることをお勧めします。

フィールドが更新されても値が変更されていない場合は計算フィールドを再計算しない

以前のリリースでは、更新された SqlComputeOnChange フィールドの値が前の値と同じであっても、フィールドの計算がトリガされていました。今回のリリースでは、フィールドのいずれかの値が変更された場合のみ計算を実行します。

以前のバージョンの Caché で作成された凍結プランの修正アクション

Caché 2016.2 でプランを作成し、そのプランに INSERT ...SELECT 文が含まれている場合、そのプラン・データのエラーを修正するアクションを実行する必要があります。

Caché 2016.2 から Caché 2017.1 以降のバージョンにアップグレードする場合、これらのプランでは以下の動作になります。

  • 文のプランが未凍結の場合、そのプランは凍結/アップグレードに設定されません。未凍結のままになります。INSERT ...SELECT 文 (またはクエリ・キャッシュ削除) を含むコンテナ・コード (ルーチン、クラス) をリコンパイルする必要があります。

  • 文のプランが凍結されている場合、そのプランは以下のメッセージでエラー状態になります。

    Frozen plan metadata for INSERT/SELECT statement frozen prior to version 2017.1 potentially incorrect. (バージョン 2017.1 以前に凍結された INSERT/SELECT 文の凍結プランのメタデータは正しくない可能性があります。)Must unfreeze, recompile (or Purge and re-prepare) and then re-freeze if wanted frozen. (凍結するには、解凍し、リコンパイル (または削除して再度作成) してから再度凍結する必要があります。)

qButtons でクエリ結果をエクスポートするためのオプションの削除

Caché 2017.1.3 以降では、qButtons でクエリ結果をエクスポートするための ResultDataXML オプションは利用できません。コードでこのオプションを使用している場合は、オプションへの参照を削除する必要があります。

システム変更

$BitLogic Xor 演算子の修正により結果が変化する可能性がある

以前のリリースでは、$BitLogic Xor 演算子の最上位バイトにある未定義ビットによって、正しくない結果が生成される可能性がありました。この問題は修正されています。

大規模なルーチンのパフォーマンス向上によるメモリ使用量の増加

今回のリリースでは、多くのパブリック変数を使用する大規模なルーチンを Caché で処理するパフォーマンスが向上しています。この変更により、Caché のメモリ使用量が増加します。めったにないことですが、メモリに制約があるシステムを使用している場合に、このメモリ要件の増加により他のパフォーマンスの問題が発生する可能性があります。

Windows システムの名前付き TCP パイプの処理の変更

以前のリリースでは、サーバが名前付きパイプを開いて、クライアントがそのパイプを開く前に、サーバがパイプに書き込もうとすると、その書き込み操作によりエラーが発生していました。今回のリリースでは、書き込み操作は、クライアントがパイプを開くまで待機します。

Solaris X64 で許可される JSON の入れ子の削減

この変更は Caché 2017.1.3 以降に導入されています。Solaris x64 プラットフォームで深い入れ子になった JSON オブジェクトを %FromJSON( ) メソッドで読み込むと、JSON 解析ルーチンが含まれる再帰呼び出しがシステム・スタック・スペース不足になり、メモリ・アクセス違反によってシステム・クラッシュが発生していました。 これらのプロセスのクラッシュを解消するため、Solaris x64 プラットフォームでの %FromJSON の入れ子の制限を 1024 レベルから 400 レベルに削減しました。入れ子レベルが 400 を超える深い入れ子の JSON オブジェクトは、Solaris x64 プラットフォームでは制限を超えるためにエラーが発生しますが、システム・クラッシュは発生しません。このエラーは、入れ子の制限をテストする際に発生していました。ほとんどの場合、JSON オブジェクトが 400 を超える入れ子レベルになっていることはありません。しかし、このような深い入れ子レベルになっていることがまれにあります。このようなまれなケースの場合、以前のバージョンで動作していたコードでこの入れ子レベル制限エラーが発生し、コードが失敗する可能性があります。

スタジオの変更

書式付き貼り付けを実行するキーの組み合わせの変更

以前のリリースでは、左または右の Alt キーを使用して、書式付き貼り付け Ctrl-Alt-V キーを実行できました。チェコ語キーボードの別のキーの組み合わせとの競合を避けるために、今回のリリースでは、左の Alt キーのみ使用できます。

ユニット・テストの変更

テスト実行では複数のスイート間でルーチンは保持されない

以前のリリースでは、ユニット・テスト・マネージャは、テスト実行のスイート間でルーチンを削除していませんでした。今回のリリースでは、マネージャは、ロードした .MAC、.INT、.INC、.OBJ、および .BAS の各ルーチンを削除します。.MVB ルーチンと .MVI ルーチンは削除しません。ルーチンが保持されることに依存するコードを使用している場合は、コードを変更する必要があります。

ユニット・テスト・マネージャによる UDL ファイルのサポート

今回のリリースでは、ユニット・テスト・マネージャは、Studio の XML ファイルだけでなく、Atelier によってエクスポートされた UDL ファイルもサポートします。UDL ファイルには、.cls、.mac、.int、および .inc の各ファイル・タイプが存在します。既定では、ユニット・テスト・マネージャは、テスト・ディレクトリで UDL ファイルと XML ファイルの両方を探してロードします。新しい修飾子の /loadxml=0 と /loadudl=0 を使用して、どちらのタイプのロードも防ぐことができます。

Web サービスの変更

WS-Policy バインディングでの HTTPS プロトコルの使用のサポート

今回のリリースでは、SOAP Web サービスで、WS-Policy の対称バインディングと非対称バインディングをサポートします。これらのバインディングには、SSLConfiguration が必要です。SSLConfiguration なしで対称バインディングと非対称バインディングを指定した場合、エラーが発生します。以前のリリースでは、SSLConfiguration がない場合、HTTPS プロトコルは HTTP プロトコルにダウングレードされ、エラーは発生しませんでした。

XML の変更

SendRequestToGateway メソッドのシグニチャの変更

今回のリリースでは、%Net.Remote.Java.XSLTGateway.SendRequestToGateway() シグニチャが変更されています。このメソッドを使用するには、Net.Remote.Java.XSLTGatewayRequest のインスタンスが必要です。これは、追加された引数だけでなく、以前の引数もすべて、1 つのオブジェクトにカプセル化します。使用しているカスタム・コードで SendRequestToGateway() を呼び出している場合は、コードを変更する必要があります。

XML 処理でバッファ・オーバーランによるエラーが発生する

今回のリリースでは、%XML.SAX と %XML.XLST の各パーサは、バッファ・オーバーフローが発生しないように動作し、発生する場合は例外をスローします。以前のリリースでは、このオーバーフローは検出されず、深刻な問題を引き起こす可能性がありました。ただし、状況によっては、バッファ・オーバーフローが問題を引き起こすことがなく、操作が正しく実行されたように見えます。そのような状況では、以前のバージョンでは正常に動作するように見えた操作で例外が発生し、失敗するようになります。ストリームの読み取りで長さエラー例外が発生する場合、これはストリームの Read メソッドにエラーがあることを示しているので、修正する必要があります。

XML 処理のメモリの変更

Caché の今回のリリースには、XML の XPATH 処理方法の変更が含まれています。ほとんどの場合、これらの変更によって必要なメモリが減少しますが、増加する場合もあります。メモリに制約があるシステムでは、今回の変更により、パフォーマンスの問題が発生する可能性があります。

Zen の変更

<pre> 要素の white-space 設定の削除

以前のリリースでは、<pre> 要素で常に white-space が normal に設定されていました。これは、以前の問題解決の副次的作用であり、一部の Zen ページで問題を引き起こしていました。今回のリリースでは、この white-space 設定は <pre> 要素に適用されなくなりました。この white-space: normal; 設定に依存する CSS 定義を使用している場合、明示的に white-space を normal に設定するように CSS を変更する必要があります。

FeedbackOpens in a new tab