複数のアプリケーションとデータソースが関係するアクセス監視要件を持つ組織では、プロアクティブなセキュリティとコンプライアンス規制を実施できるようになりました。提供されているJava Message Serviceキュー(JMSQ)を使用すると、ほぼリアルタイムのリスク分析を実装して、不正行為や誤用が疑われるケースを積極的に識別できます。
この章では、OAAMとJMSキューを統合してアクセス監視とリスク分析を行う手順について説明します。
Java Message Service(JMS)を使用すると、アプリケーションでメッセージの送受信を行ったり、エンタープライズ・メッセージをサポートすることができます。メッセージング・システムでは、独立した複数のアプリケーションがメッセージでやり取りすることを可能にします。これらのアプリケーションは、メッセージングを使用してデータの受渡しと、それぞれの機能の調整を行うことができます。JMSキューは、アプリケーションが非同期に情報を交換できるメッセージ・キューです。メッセージング・システムは、メッセージが到着する際にそのメッセージをアプリケーションに配信できます。アプリケーションは、メッセージの受信を要求する必要がありません。メッセージの送信者と受信者が同時にメッセージ・キューにアクセスすることはありません。メッセージはコネクションレス状態で交換されます。
非同期実行用にJMSキューを使用してOracle Adaptive Access Managerをデプロイすることで、臨床システムやデータベースに格納されている重要で機密性の高いデータへの未認可アクセスを監視および検出することができます。
Healthcareプロバイダは、複数の異なるアプリケーションをそれぞれの環境で使用します。コンプライアンス上の理由から、電子カルテ(EMR)アプリケーションへのアクセスをリアルタイムで積極的に監視する必要があります。EMRアプリケーションは、同期Java/.NETインプロセスまたはSOAP Webサービスの統合を許可する、アプリケーション・アダプタを提供しない商用オフ・ザ・シェルフ(COTS)製品です。そのため、非同期統合のみがオプションとして提供されます。
システム・インテグレータはカスタム・ソリューションを実装して、アクセス・トランザクションの発生時にそれをプルするEMRアプリケーションのログ・ファイルを読み取り、そのログ・ファイルをOAAM JMSキューで期待されている書式に変換し、書式化されたメッセージをキューに入れます。
統合が完了すると、EMRアプリケーション・データを利用するOAAMエンティティとトランザクションが定義されます。
最後に、コンプライアンスを重視したリアルタイム分析ポリシーが構成されます。
手順が完了すると、隣人のスヌーピング、VIPアクセス、死亡患者のアクセスなどのコンプライアンス・インシデントをリアルタイム分析によって検出できます。
同じJMSキューを使用して、追加アプリケーションを同様に統合することもできます。たとえば、処方アプリケーションをリアルタイムで監視して、悪用や不正処方を検出できます。
この項では、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>
Healthcareの非同期デプロイメント例は、Oracle Adaptive Access Manager 11g上にインストールされます。OAAMがインストールされていて構成済であることを確認した後で、Healthcareデプロイメント例をインストールしてください。OAAMレポートのインストールを続行する前に、Oracle Business Intelligence Publisherをインストールおよび構成する必要があります。
Healthcare非同期デプロイメント例をインストールするには、次の手順を実行します。
OAAMがインストールされているマシン上で、osg_install
という作業フォルダを作成します。このフォルダは、インストール・フォルダ以外であればどこにでも作成できます。
osg_integration_kit
フォルダをosg_install
フォルダ内に作成します。
<IAM_Home>/oaam/oaam_extensions/generic
ディレクトリに格納されているosg_integration_kit.zip
を特定します。
osg_integration_kit.zip
のコンテンツをosg_install/osg_integration_kit
ディレクトリに解凍します。
Healthcare非同期デプロイメント機能は、Oracle Adaptive Access Managerの拡張として実装されています。次の手順に従って、デフォルトの拡張ライブラリを置換します。
OAAM管理とOAAMサーバーの管理対象サーバーをシャットダウンします。
Oracle Adaptive Access ManagerがデプロイされているWebLogicサーバーを起動して、Oracle WebLogic管理コンソールにログインします。
「ロックして編集」をクリックします。
「oracle.oaam.extensions」
を選択し、「削除」をクリックします。
「ドメイン環境」→「デプロイメント」に移動して、コンソールをロックします。
「インストール」ボタンをクリックします。
osg_oaam_extensions.war
ファイルの場所を参照し、WARファイルの横のオプションをクリックして選択します。その後、「次へ」をクリックします。
「このデプロイメントをライブラリとしてインストールする」が選択されていることを確認して、「次へ」をクリックします。
デプロイメントのターゲット、OAAM管理およびOAAMサーバーを選択します。
「次へ」を再度クリックしてこの次のページでデフォルトを受け入れ、「終了」をクリックします。
「保存」ボタンをクリックしてから、「変更のアクティブ化」をクリックします。
OAAM管理とOAAM管理対象サーバーを起動します。
OAAMサーバーに移動して、結果をテストします。
http://<host>:<port>/oaam_server
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の構成と管理』を参照してください。
OAAMでは、エンティティとトランザクション・データがデータベースに格納されます。OAAMには、SQLスクリプト・ファイルを生成するためのコマンドライン・ツールが用意されています。このスクリプト・ファイルには、OAAMのエンティティおよびトランザクション用にビューを作成するためのSQL文が含まれます。
詳細は、第23.2.5項「エンティティおよびトランザクションのデータベース・ビューの生成」を参照してください。
JMSリスナーを実装することにより、XML形式のメッセージに関してJMSキュー(またはトピック)をリスニングするようにOracle Adaptive Access Managerを構成できます。この項の最後に説明するXMLスキーマで、メッセージの書式の詳細を示します。JMSメッセージのコンテンツは、Oracle Adaptive Access ManagerのWeb Services APIコールと類似しています。
このWebサービスAPIのサブセットで、JMSを通して使用できるものは次のとおりです。
これは、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>
これは、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>
これは、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>
これは、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>
これは、1つのJMSメッセージで1つ以上のメッセージの送信に使用するMessageList
メッセージのサンプルXMLです。このメッセージでサポートされているデータ要素が、このサンプルXMLにすべて含まれているとはかぎりません。サポートされるデータ要素の完全なリストは、第19.11項「XMLスキーマ」を参照してください。
このメッセージは、1つのバッチで複数のOracle Adaptive Access Manager APIコールをコールする場合のJMS等価です。
MessageList
メッセージは、メッセージをバッチ処理するだけでなく、データ要素requestId
およびtransactionLogId
に有用なデフォルト値を提供します。
transactionLogId
がprocessRules
メッセージで明示的に指定されていない場合、前のcreateTranasction
メッセージから返された値がある場合は、その値が使用されます。
requestId
がcreateTransaction
、processRules
または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>
次の図に、リスク監視に関するOAAMとのJMS統合の概要を示します。
アプリケーション(JMS送信者)がメッセージをJMSキューに送信します。アプリケーションは、JNDIネームスペースによってキュー宛先を識別します。
キューイング・システムはJMS送信者からメッセージを受信して、そのメッセージを宛先にルーティングします。
OAAMは、構成済リスナーを使用してメッセージをリスニングします。
メッセージは、メッセージ・プロセッサにより処理されます。
情報は、トランザクション・データまたはログイン・データとしてデータベースにロードされます。
オフラインのログインおよびトランザクション・データに対してルールが実行さfれます。
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 |
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メッセージに指定されていない場合は、このプロパティの値が使用されます。 デフォルト値: |
jms.message.processor.default.usergroup |
「groupId」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。 デフォルト値: |
jms.message.processor.default.ip |
「remoteIPAddr」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。 デフォルト値: |
jms.message.processor.default.clientver |
「clientVersion」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。デフォルト値: |
jms.message.processor.default.authtype |
「clientType」フィールドがVCryptTracker.updateLogメッセージに指定されていない場合は、このプロパティの値が使用されます。 デフォルト値: |
jms.message.processor.default.sessionid |
「 「 |
jms.message.processor.default.browser.fingerprint |
「 |
jms.message.processor.default.flash.fingerprint |
「 |
次の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);
次の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>
Pythonルール条件を使用して、OAAMオブジェクトを使用するPython式を評価できます。
これにより、カスタムJavaコードを作成しなくても、高度なルール作りが可能になります。
式では、ブール値が返されます。
式には、セッション、ユーザー、デバイス、場所、トランザクション、その他のパブリックAPIなどのOAAMオブジェクトへのアクセスが設定されています。
このデバイスは初めてのユーザーによって使用されますか。
oaamResult = oaamDevice.isUserFirstTime(oaamUser.userId);
現在のデバイスには、この1時間で5人を超えるユーザーが割り当てられましたか。
users = oaamDevice.getAllUsersForDevice(3600);
oaamResult = (len(users) > 5);
現在のトランザクションのAccessType属性に値「Prescription」が設定されていますか。
oaamResult = (oaamTrx.AccessType == "Prescription");