ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Adaptive Access Manager開発者ガイド
11gリリース2(11.1.2)
B71697-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

19 Java Message Serviceキューイングの統合

複数のアプリケーションとデータソースが関係するアクセス監視要件を持つ組織では、プロアクティブなセキュリティとコンプライアンス規制を実施できるようになりました。提供されているJava Message Serviceキュー(JMSQ)を使用すると、ほぼリアルタイムのリスク分析を実装して、不正行為や誤用が疑われるケースを積極的に識別できます。

この章では、OAAMとJMSキューを統合してアクセス監視とリスク分析を行う手順について説明します。

19.1 概要

Java Message Service(JMS)を使用すると、アプリケーションでメッセージの送受信を行ったり、エンタープライズ・メッセージをサポートすることができます。メッセージング・システムでは、独立した複数のアプリケーションがメッセージでやり取りすることを可能にします。これらのアプリケーションは、メッセージングを使用してデータの受渡しと、それぞれの機能の調整を行うことができます。JMSキューは、アプリケーションが非同期に情報を交換できるメッセージ・キューです。メッセージング・システムは、メッセージが到着する際にそのメッセージをアプリケーションに配信できます。アプリケーションは、メッセージの受信を要求する必要がありません。メッセージの送信者と受信者が同時にメッセージ・キューにアクセスすることはありません。メッセージはコネクションレス状態で交換されます。

非同期実行用にJMSキューを使用してOracle Adaptive Access Managerをデプロイすることで、臨床システムやデータベースに格納されている重要で機密性の高いデータへの未認可アクセスを監視および検出することができます。

19.2 アクセスの監視

Healthcareプロバイダは、複数の異なるアプリケーションをそれぞれの環境で使用します。コンプライアンス上の理由から、電子カルテ(EMR)アプリケーションへのアクセスをリアルタイムで積極的に監視する必要があります。EMRアプリケーションは、同期Java/.NETインプロセスまたはSOAP Webサービスの統合を許可する、アプリケーション・アダプタを提供しない商用オフ・ザ・シェルフ(COTS)製品です。そのため、非同期統合のみがオプションとして提供されます。

システム・インテグレータはカスタム・ソリューションを実装して、アクセス・トランザクションの発生時にそれをプルするEMRアプリケーションのログ・ファイルを読み取り、そのログ・ファイルをOAAM JMSキューで期待されている書式に変換し、書式化されたメッセージをキューに入れます。

統合が完了すると、EMRアプリケーション・データを利用するOAAMエンティティとトランザクションが定義されます。

最後に、コンプライアンスを重視したリアルタイム分析ポリシーが構成されます。

手順が完了すると、隣人のスヌーピング、VIPアクセス、死亡患者のアクセスなどのコンプライアンス・インシデントをリアルタイム分析によって検出できます。

同じJMSキューを使用して、追加アプリケーションを同様に統合することもできます。たとえば、処方アプリケーションをリアルタイムで監視して、悪用や不正処方を検出できます。

19.3 基本的な概念

この項では、JMSの用語と定義について説明します。Java Message Serviceの詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JMSの構成と管理』を参照してください。

Java Message Service(JMS)

エンタープライズ・メッセージング・システムにより、アプリケーションはメッセージ(データのパケット)の交換を介して相互に通信できます。メッセージは、異なるアプリケーション間での通信調整に必要なデータが含まれているリクエスト、レポートまたはイベントです。メッセージングでは、非同期で信頼できる配信が行われます。

JMSキュー

JMSキューは、アプリケーション間の相互作用の宛先です。これは、メッセージを伝達します。メッセージは特定のキューに書き込まれたり、特定のキューから受信されます。管理者は、JMSキューをメッセージング・プロバイダのリソースとして構成します。アプリケーションでは、JMSキューがJNDI名によって取得されます。

JMSキューは、JMSサーバー、JMSモジュール、コネクション・ファクトリなどのリソースに関連付けられています。JMSサーバーは、JMSモジュールにあるリソースの管理コンテナとして機能します。その役割の1つとして、メッセージおよびサブスクライバの永続性と状態のメンテナンスを行います。JMSサーバーには、JMSモジュールの作成が要求されます。JMSモジュールは、キューやトピックなどのJMSリソースが含まれている定義です。JMSモジュールには、JMSキューの作成が要求されます。コネクション・ファクトリは、JMSクライアントがJMS宛先への接続を作成できるようにするリソースです。

JNDI

JNDIは、Javaネーミングおよびディレクトリ・サービスです。JNDIの名前を使用してJMSキューにアクセスできます。

JMSキュー宛先

アプリケーションはメッセージをキューに送信します。プロバイダは、OAAMがメッセージを受信するまで、メッセージごとにコピーを1つ格納しています。

JMSリスナー

JMSリスナーは、XML形式のメッセージに関してJMSキューをリスニングするように構成されています。この項の最後に説明するXMLスキーマで、メッセージの書式の詳細を示します。

JMSメッセージ

JMSメッセージのコンテンツは、Oracle Adaptive Access ManagerのWeb Services APIコールと類似しています。この項の最後に説明するXMLスキーマで、メッセージの書式の詳細を示します。

OAAM JMSメッセージの構造

<?xml version="1.0"?>

<OaamJmsMessage>

<MessageList>

<VCryptTracker.updateLog> </VCryptTracker.updateLog>

<VCryptTracker.updateEntity> </VCryptTracker.updateEntity>

<VCryptTracker.updateEntity> </VCryptTracker.updateEntity>

<VCryptTracker.createTransaction> </VCryptTracker.createTransaction > <VCryptRulesEngine.processRules> </VCryptRulesEngine.processRules>

</MessageList>

</OaamJmsMessage>

19.4 前提条件

Healthcareの非同期デプロイメント例は、Oracle Adaptive Access Manager 11g上にインストールされます。OAAMがインストールされていて構成済であることを確認した後で、Healthcareデプロイメント例をインストールしてください。OAAMレポートのインストールを続行する前に、Oracle Business Intelligence Publisherをインストールおよび構成する必要があります。

19.5 Healthcare非同期デプロイメント例のインストール

Healthcare非同期デプロイメント例をインストールするには、次の手順を実行します。

  1. OAAMがインストールされているマシン上で、osg_installという作業フォルダを作成します。このフォルダは、インストール・フォルダ以外であればどこにでも作成できます。

  2. osg_integration_kitフォルダをosg_installフォルダ内に作成します。

  3. <IAM_Home>/oaam/oaam_extensions/genericディレクトリに格納されているosg_integration_kit.zipを特定します。

  4. osg_integration_kit.zipのコンテンツをosg_install/osg_integration_kitディレクトリに解凍します。

19.6 OAAM拡張ライブラリの更新

Healthcare非同期デプロイメント機能は、Oracle Adaptive Access Managerの拡張として実装されています。次の手順に従って、デフォルトの拡張ライブラリを置換します。

  1. OAAM管理とOAAMサーバーの管理対象サーバーをシャットダウンします。

  2. Oracle Adaptive Access ManagerがデプロイされているWebLogicサーバーを起動して、Oracle WebLogic管理コンソールにログインします。

  3. 「ロックして編集」をクリックします。

  4. 「oracle.oaam.extensions」を選択し、「削除」をクリックします。

  5. 「ドメイン環境」「デプロイメント」に移動して、コンソールをロックします。

  6. 「インストール」ボタンをクリックします。

  7. osg_oaam_extensions.warファイルの場所を参照し、WARファイルの横のオプションをクリックして選択します。その後、「次へ」をクリックします。

  8. 「このデプロイメントをライブラリとしてインストールする」が選択されていることを確認して、「次へ」をクリックします。

  9. デプロイメントのターゲット、OAAM管理およびOAAMサーバーを選択します。

  10. 「次へ」を再度クリックしてこの次のページでデフォルトを受け入れ、「終了」をクリックします。

  11. 「保存」ボタンをクリックしてから、「変更のアクティブ化」をクリックします。

  12. OAAM管理とOAAM管理対象サーバーを起動します。

  13. OAAMサーバーに移動して、結果をテストします。

    http://<host>:<port>/oaam_server

19.7 JMSキューの設定

OAAMは、1つ以上のJMSキューでXMLメッセージをリスニングします。電子カルテ(EMR)は、OAAMサーバーで使用されるトランザクション詳細を送信するためにメッセージ・キューを必要とします。XMLスキーマとリスナー構成の詳細は、第19.9項「JMS統合」を参照してください。

OAAMは、t3://localhost:7001において、JNDI名jms/oaamDefaultQueueのJMSキューをリスニングします。第19.9「JMS統合」に示す詳細に従ってこの構成をレビューし、デプロイメントの必要に応じて更新します。

リスナー構成で指定されたJMSキューが存在し、アクティブであることを確認します。存在しないものがあれば、適切なWebLogicサーバーにそれを作成してください。WebLogic ServerでのJMSキュー設定の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JMSの構成と管理』を参照してください。

19.8 エンティティおよびトランザクションのデータベース・ビューの作成

OAAMでは、エンティティとトランザクション・データがデータベースに格納されます。OAAMには、SQLスクリプト・ファイルを生成するためのコマンドライン・ツールが用意されています。このスクリプト・ファイルには、OAAMのエンティティおよびトランザクション用にビューを作成するためのSQL文が含まれます。

詳細は、第23.2.5項「エンティティおよびトランザクションのデータベース・ビューの生成」を参照してください。

19.9 JMS統合

JMSリスナーを実装することにより、XML形式のメッセージに関してJMSキュー(またはトピック)をリスニングするようにOracle Adaptive Access Managerを構成できます。この項の最後に説明するXMLスキーマで、メッセージの書式の詳細を示します。JMSメッセージのコンテンツは、Oracle Adaptive Access ManagerのWeb Services APIコールと類似しています。

19.9.1 WebサービスAPI

このWebサービスAPIのサブセットで、JMSを通して使用できるものは次のとおりです。

19.9.1.1 VCryptTracker.updateLog

これは、Oracle Adaptive Access Managerでのユーザー・セッション(ログイン)の作成または更新に使用するVCryptTracker.updateLogメッセージのサンプルXMLです。このメッセージでサポートされているデータ要素が、このサンプルXMLにすべて含まれているとはかぎりません。サポートされるデータ要素の完全なリストは、第19.11項「XMLスキーマ」を参照してください。

requestIdデータ要素に値が指定されていない場合は、一意の値が生成され使用されます。

このメッセージは、Oracle Adaptive Access Manager API VCryptTracker.updateLog()に対するJMS等価です。データ要素(パラメータ)の詳細は、『Oracle Fusion Middleware Oracle Adaptive Access Manager Java APIリファレンス』を参照してください。

<?xml version="1.0"?>
<OaamJmsMessage>
<VCryptTracker.updateLog>
<UpdateAuthResultRequest>
<requestId>20110721_00_9004_terminal_1</requestId>
<requestTime>07/21/2011 00:21:01</requestTime>
<userId>9004</userId>
<loginId>jjames</loginId>
<isSecure>false</isSecure>
<groupId>HealthcareUsers</groupId>
<result>0</result>
<clientType>10</clientType>
<clientVersion>1.0</clientVersion>
<remoteIPAddr>135.67.50.21</remoteIPAddr>
<remoteHost>server.domain.com</remoteHost>
</UpdateAuthResultRequest>
</VCryptTracker.updateLog>

19.9.1.2 VCryptTracker.updateEntity

これは、Oracle Adaptive Access Managerでのユーザー定義エンティティの作成または更新に使用するVCryptTracker.updateEntityメッセージのサンプルXMLです。

このメッセージでサポートされているデータ要素が、このサンプルXMLにすべて含まれているとはかぎりません。サポートされるデータ要素の完全なリストは、第19.11項「XMLスキーマ」を参照してください。

このメッセージは、Oracle Adaptive Access Manager API VCryptTracker.updateEntity()に対するJMS等価です。データ要素(パラメータ)の詳細は、『Oracle Fusion Middleware Oracle Adaptive Access Manager Java APIリファレンス』を参照してください。

<?xml version="1.0"?>
<OaamJmsMessage>
<VCryptTracker.updateEntity>
<updateEntity>
<entityDefKey>Patient</entityDefKey>
<contexts>
<context>
<name>Patient_ID</name>
<value>21600481</value>
</context>
<context>
<name>MR_Number</name>
<value>21600481</value>
</context>
<context>
<name>Short_Name</name>
<value>Jane</value>
</context>
<context>
<name>Last_Name</name>
<value>Celebrity</value>
</context>
<context>
<name>First_Name</name>
<value>Jane</value>
</context>
<context>
<name>Phone_Number</name>
<value>(120) 705 4061</value>
</context>
<context>
<name>Email_Address</name>
<value>Jane.Celebrity@hotmail.com</value>
</context>
<context>
<name>Date_Of_Birth</name>
<value>1979-05-12 00:00:00 -0800</value>
</context>
<context>
<name>Confidential_Indicator</name>
<value>true</value>
</context>
<context>
<name>homeAddr.Line1</name>
<value>6819 Park Blvd</value>
</context>
<context>
<name>homeAddr.City</name>
<value>Los Angeles</value>
</context>
<context>
<name>homeAddr.State</name>
<value>California</value>
</context>
<context>
<name>homeAddr.Zip</name>
<value>90001</value>
</context>
</contexts>
</updateEntity>
</VCryptTracker.updateEntity>
</OaamJmsMessage>

19.9.1.3 VCryptTracker.createTransaction

これは、Oracle Adaptive Access Managerでのトランザクションの作成に使用するVCryptTracker.createTransactionメッセージのサンプルXMLです。このメッセージでサポートされているデータ要素が、このサンプルXMLにすべて含まれているとはかぎりません。サポートされるデータ要素の完全なリストは、第19.11項「XMLスキーマ」を参照してください。

このメッセージは、Oracle Adaptive Access Manager API VCryptTracker.createTransaction()に対するJMS等価です。データ要素(パラメータ)の詳細は、『Oracle Fusion Middleware Oracle Adaptive Access Manager Java APIリファレンス』を参照してください。

<?xml version="1.0"?>
<OaamJmsMessage>
<VCryptTracker.createTransaction>
<createTransaction>
<requestId>20110721_00_9004_terminal_1</requestId>
<requestTime>07/21/2011 00:21:01</requestTime>
<transactionDefKey>pat_rec_acc</transactionDefKey>
<status>0</status>
<contexts>
<context>
<name>Person_ID</name>
<value>9004</value>
</context>
<context>
<name>Patient_ID</name>
<value>21600481</value>
</context>
<context>
<name>Action</name>
<value>View_Records</value>
</context>
<context>
<name>Application_ID</name>
<value>Healthcare_App</value>
</context>
<context>
<name>Terminal_ID</name>
<value>terminal_1</value>
</context>
<context>
<name>Item_Key</name>
<value>image-x-20110720-156</value>
</context>
<context>
<name>Is_Restricted_Item</name>
<value>false</value>
</context>
</contexts>
</createTransaction>
</VCryptTracker.createTransaction>
</OaamJmsMessage>

19.9.1.4 VCryptRulesEngine.processRules

これは、Oracle Adaptive Access Managerのルールの実行に使用するVCryptRulesEngine.processRulesメッセージのサンプルXMLです。このメッセージでサポートされているデータ要素が、このサンプルXMLにすべて含まれているとはかぎりません。サポートされるデータ要素の完全なリストは、第19.11項「XMLスキーマ」を参照してください。

このメッセージは、Oracle Adaptive Access Manager API VCryptRulesEngine.processRules()に対するJMS等価です。データ要素(パラメータ)の詳細は、『Oracle Fusion Middleware Oracle Adaptive Access Manager Java APIリファレンス』を参照してください。

<?xml version="1.0"?>
<OaamJmsMessage>
<VCryptRulesEngine.processRules>
<ProcessRulesRequest>
<requestId>20110721_00_9004_terminal_1</requestId>
<requestTime>07/21/2011 00:21:01</requestTime>
<profileTypeList>
<profileType>800</profileType>
</profileTypeList>
<contexts></contexts>
</ProcessRulesRequest>
</VCryptRulesEngine.processRules>
</OaamJmsMessage>

19.9.1.5 MessageList

これは、1つのJMSメッセージで1つ以上のメッセージの送信に使用するMessageListメッセージのサンプルXMLです。このメッセージでサポートされているデータ要素が、このサンプルXMLにすべて含まれているとはかぎりません。サポートされるデータ要素の完全なリストは、第19.11項「XMLスキーマ」を参照してください。

このメッセージは、1つのバッチで複数のOracle Adaptive Access Manager APIコールをコールする場合のJMS等価です。

MessageListメッセージは、メッセージをバッチ処理するだけでなく、データ要素requestIdおよびtransactionLogIdに有用なデフォルト値を提供します。

  • transactionLogIdprocessRulesメッセージで明示的に指定されていない場合、前のcreateTranasctionメッセージから返された値がある場合は、その値が使用されます。

  • requestIdcreateTransactionprocessRulesまたはupdateEntityメッセージで明示的に指定されていない場合は、(このMessageList内の)前のメッセージから返されたrequestIdデータ要素の値が使用されます。

<?xml version="1.0"?>
<OaamJmsMessage>
<MessageList>
<VCryptTracker.updateLog>
</VCryptTracker.updateLog>
<VCryptTracker.updateEntity>
</VCryptTracker.updateEntity>
<VCryptTracker.updateEntity>
</VCryptTracker.updateEntity>
<VCryptTracker.createTransaction>
</VCryptTracker.createTransaction >
<VCryptRulesEngine.processRules>
</VCryptRulesEngine.processRules>
</MessageList>
</OaamJmsMessage>

19.9.2 JMS統合の概要

次の図に、リスク監視に関するOAAMとのJMS統合の概要を示します。

図19-1 OAAMとのJMS統合

OAAMとのJMS統合が示されています。
  1. アプリケーション(JMS送信者)がメッセージをJMSキューに送信します。アプリケーションは、JNDIネームスペースによってキュー宛先を識別します。

  2. キューイング・システムはJMS送信者からメッセージを受信して、そのメッセージを宛先にルーティングします。

  3. OAAMは、構成済リスナーを使用してメッセージをリスニングします。

  4. メッセージは、メッセージ・プロセッサにより処理されます。

  5. 情報は、トランザクション・データまたはログイン・データとしてデータベースにロードされます。

  6. オフラインのログインおよびトランザクション・データに対してルールが実行さfれます。

19.9.3 JMSリスナーの登録

Oracle Adaptive Access Managerのプロパティとユーザー定義列挙を使用して、JMSリスナーのプロパティを構成します。ユーザー定義列挙の詳細は、第7.2項「列挙の編集によるOAAMのカスタマイズ」を参照してください。

表19-1に、JMSリスナー構成プロパティのリストを示します。監視するキュー(またはトピック)ごとに、ユーザー定義列挙oracle.oaam.jms.listeners.enumに列挙要素を追加して、1つのリスナーを構成する必要があります。リスナー・リストまたはプロパティを変更する場合は、リスナーが実行しているOracle Adaptive Access Managerサーバーを再起動する必要があります。

表19-1 JMS統合により使用されるプロパティ

プロパティ名 説明

oracle.oaam.jms.listeners.default.initial.cont ext.factory

初期コンテキスト・ファクトリを実装するJavaクラスの名前。この値は、Java Namingコンテキストの初期化に使用されます。

デフォルト値: weblogic.jndi.WLInitialContextFactory

oracle.oaam.jms.listeners.default.connection.factory

キュー/トピックの接続の作成に使用されるJMSコネクション・ファクトリのJNDI名。

デフォルト値: weblogic.jms.ConnectionFactory

oracle.oaam.jms.listeners.enum.lsnr_1

lsnr_1という名前の新規リスナーを定義します。リストされているプロパティを使用して、このリスナーに様々な属性を指定できます。

有効な値: この列挙で他のどの要素にも割り当てられていない整数

oracle.oaam.jms.listeners.enum. lsnr_1.type

リスナーがJMSキューまたはJMSトピックに接続するかどうかを指定します。

有効な値: キューまたはトピック

oracle.oaam.jms.listeners.enum. lsnr_1.url

キュー(またはトピック)の名前を解決するJNDIプロバイダのURL。

oracle.oaam.jms.listeners.enum.lsnr_1.jndiname

キューまたはトピックのJNDI名

oracle.oaam.jms.listeners.enum.lsnr_1.initial.context.factory

初期コンテキスト・ファクトリを実装するJavaクラスの名前。この値は、Java Namingコンテキストの初期化に使用されます。

デフォルト値: プロパティoracle.oaam.jms.listeners.default.initial.context.factoryの値

oracle.oaam.jms.listeners.enum.lsnr_1.connection.factory

キュー/トピックの接続の作成に使用されるJMSコネクション・ファクトリのJNDI名。

デフォルト値: プロパティoracle.oaam.jms.listeners.default.connection.factoryの値

oracle.oaam.jms.listeners.enum.lsnr_1.processor

メッセージ・プロセッサ・インタフェースを実装するJavaクラスの名前。このリスナーにより受信されるメッセージを処理するために、このクラスのインスタンスが作成されます。

デフォルト値: oracle.oaam.jms.JmsDefaultMessageProcessor

oracle.oaam.jms.listeners.enum.lsnr_1.instancecount

指定されたキュー/トピックからのメッセージを作成、処理するリスナーの数。

デフォルト値: 1


19.9.4 メッセージ・プロセッサの構成

Oracle Adaptive Access Managerのプロパティとユーザー定義列挙を使用して、メッセージ・プロセッサのプロパティを構成します。ユーザー定義列挙の詳細は、第7.2項「列挙の編集によるOAAMのカスタマイズ」を参照してください。

OAAMのデフォルトのJMSメッセージ・プロセッサでは、タイプjavax.jms.TextMessageのみが処理されます。このプロセッサでは、その他のタイプのメッセージは無視されます。

その他のタイプのメッセージを処理するために、カスタム・プロセッサを実装できます。これを行うには、oracle.oaam.jms.JmsAbstractMessageProcessorまたはoracle.oaam.jms.JmsDefaultMessageProcessorを拡張して、プロセッサをJmsListenerに関連付けます。

さらに、TextMessageのコンテキストが、この項の末尾に示すXMLスキーマに準拠したXML文字列であるかぎり、デフォルトのJMSメッセージ・プロセッサによる処理が行われます。

表19-1に、メッセージ・プロセッサの構成に使用するプロパティのリストを示します。

表19-2 JMS統合により使用されるプロパティ

プロパティ名 説明

jms.message.processor.default.user

「loginId」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。

デフォルト値: JmsDefaultUser

jms.message.processor.default.usergroup

「groupId」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。

デフォルト値: default

jms.message.processor.default.ip

「remoteIPAddr」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。

デフォルト値: 127.0.0.1

jms.message.processor.default.clientver

「clientVersion」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。デフォルト値: 1.0

jms.message.processor.default.authtype

「clientType」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。

デフォルト値: normal

jms.message.processor.default.sessionid

requestId」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。値が指定されていない場合は、「remoteIPAddr」フィールドを使用して生成された値が使用されます。

requestId」フィールドがcreateTransaction/updateEntity/processRulesメッセージに対して指定されていないときに1つのMessageListで複数のメッセージが送信された場合、前のupdateLogメッセージ(存在する場合)で使用したrequestIdが使用されます。

jms.message.processor.default.browser.fingerprint

fingerPrint」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。

jms.message.processor.default.flash.fingerprint

fingerPrint2」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。


19.10 Javaコード例の使用によるJMSキューへのメッセージ送信

次のJavaコード例は、メッセージをJMSキューに書き込む方法を示しています。

/* XML Message */ 
String xmlString = ; 
 
/* get reference to queue from its JNDI name */ 
javax.jms.Queue queue = ; 
 
/* get a queue connection from connection factory */ 
QueueConnection queueConn = ; 
 
QueueSession queueSess   = conn.createQueueSession(...); 
QueueSender  queueSender = queueSess.createSender(queue); 
 
TextMessage msg = queueSess.createTextMessage(xmlString); 
 
queueSender.send(msg); 

19.11 XMLスキーマ

次のXMLスキーマの例に、メッセージの書式の詳細を示します。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="OaamJmsMessage"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OaamJmsMessage" type="MessageList"/>
<xs:complexType name="MessageList">
<xs:sequence>
<xs:element name="MessageList" type="MessageList"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="VCryptTracker.updateLog"
type="updateLog"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="VCryptTracker.createTransaction"
type="createTransaction"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="VCryptRulesEngine.processRules"
type="processRules"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="VCryptTracker.updateEntity"
type="updateEntity"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="updateLog">
<xs:sequence>
<xs:element name="UpdateAuthResultRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="requestId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="requestTime" type="xs:string"
minOccurs="1" maxOccurs="1"/>
<xs:element name="userId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="loginId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="isSecure" type="xs:boolean"
minOccurs="0" maxOccurs="1"/>
<xs:element name="groupId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="result" type="xs:integer"
minOccurs="0" maxOccurs="1"/>
<xs:element name="secureCookie" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="digitalCookie" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="clientType" type="xs:integer"
minOccurs="0" maxOccurs="1"/>
<xs:element name="clientVersion" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="remoteIPAddr" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="remoteHost" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="fingerPrintType" type="xs:integer"
minOccurs="0" maxOccurs="1"/>
<xs:element name="fingerPrint" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="fingerPrintType2" type="xs:integer"
minOccurs="0" maxOccurs="1"/>
<xs:element name="fingerPrint2" type="xs:string"
minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="createTransaction">
<xs:sequence>
<xs:element name="createTransaction">
<xs:complexType>
<xs:sequence>
<xs:element name="requestId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="requestTime" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="transactionDefKey" type="xs:string"
minOccurs="1" maxOccurs="1"/>
<xs:element name="status" type="xs:integer"
minOccurs="0" maxOccurs="1"/>
<xs:element name="contexts"
minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="context"
minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"
minOccurs="1" maxOccurs="1"/>
<xs:element name="value" type="xs:string"
minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="updateEntity">
<xs:sequence>
<xs:element name="updateEntity">
<xs:complexType>
<xs:sequence>
<xs:element name="requestId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="entityDefKey" type="xs:string"
minOccurs="1" maxOccurs="1"/>
<xs:element name="status" type="xs:integer"
minOccurs="0" maxOccurs="1"/>
<xs:element name="isReplace" type="xs:boolean"
minOccurs="0" maxOccurs="1"/>
<xs:element name="createTime" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="updateTime" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="unlinkEntities"
minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="entityRelation"
type="xs:string"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="contexts"
minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="context"
minOccurs="0 maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"
minOccurs="1" maxOccurs="1"/>
<xs:element name="value" type="xs:string"
minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="processRules">
<xs:sequence>
<xs:element name="ProcessRulesRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="requestId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="requestTime" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="transactionLogId" type="xs:integer"
minOccurs="0" maxOccurs="1"/>
<xs:element name="extTransactionId" type="xs:string"
minOccurs="0" maxOccurs="1"/>
<xs:element name="profileTypeList"
minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="profileType" type="xs:integer"
minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

19.12 Pythonルール条件

Pythonルール条件を使用して、OAAMオブジェクトを使用するPython式を評価できます。

これにより、カスタムJavaコードを作成しなくても、高度なルール作りが可能になります。

式では、ブール値が返されます。

式には、セッション、ユーザー、デバイス、場所、トランザクション、その他のパブリックAPIなどのOAAMオブジェクトへのアクセスが設定されています。

19.13 Python式の例

このデバイスは初めてのユーザーによって使用されますか。

oaamResult = oaamDevice.isUserFirstTime(oaamUser.userId);

現在のデバイスには、この1時間で5人を超えるユーザーが割り当てられましたか。

users = oaamDevice.getAllUsersForDevice(3600);

oaamResult = (len(users) > 5);

現在のトランザクションのAccessType属性に値「Prescription」が設定されていますか。

oaamResult = (oaamTrx.AccessType == "Prescription");