クライアント・メッセージ・ストア・プロパティには、ユーザが属性を定義できます。属性を定義するには、プロパティ名の後にドットを付け、その後に属性名を追加します。この機能の主な目的は、ユーザのネットワーク情報を転送ルールで使用できるようにすることです。
Ultra Light をクライアント・メッセージ・ストアとして使用する際のプロパティ属性は、限定的にサポートされています。Ultra Light メッセージ・ストアでは、事前定義の ias_Network プロパティのみをサポートしています。
次に、カスタムのクライアント・メッセージ・ストア・プロパティ属性を設定する簡単な例を示します。この例の Object プロパティは、Shape と Color の 2 つの属性を持ちます。Sharp 属性の値は Round、Color 属性の値は Blue です。
// C++ example. mgr->setStringStoreProperty( "Object.Shape", "Round" ); mgr->setStringStoreProperty( "Object.Color", "Blue" ); |
// C# example. mgr.SetStoreStringProperty( "Object.Shape", "Round" ); mgr.SetStringStoreProperty( "Object.Color", "Blue" ); |
// Java example mgr.setStringStoreProperty( "Object.Shape", "Round" ); mgr.setStringStoreProperty( "Object.Color", "Blue" ); |
-- SQL example BEGIN CALL ml_qa_setstoreproperty( 'Object.Shape', 'Round' ); CALL ml_qa_setstoreproperty( 'Object.Color', 'Blue' ); COMMIT; END |
すべてのクライアント・メッセージ・ストア・プロパティには、最初は値を持たない Type 属性があります。Type 属性の値は、別のプロパティの名前でなければなりません。プロパティの Type 属性を設定すると、そのプロパティは Type 属性の値に割り当てられているプロパティの属性を継承します。次の例の Object プロパティは、Circle プロパティの属性を継承しています。したがって、Object.Shape の値は Round、Object.Color の値は Blue になります。
// C++ example QAManager qa_manager; qa_manager->setStoreStringProperty( "Circle.Shape", "Round" ); qa_manager->setStoreStringProperty( "Circle.Color", "Blue" ); qa_manager->setStoreStringProperty( "Object.Type", "Circle" ); |
// C# example QAManager qa_manager; qa_manager.SetStringStoreProperty( "Circle.Shape", "Round" ); qa_manager.SetStringStoreProperty( "Circle.Color", "Blue" ); qa_manager.SetStringStoreProperty( "Object.Type", "Circle" ); |
// Java example QAManager qa_manager; qa_manager.setStringStoreProperty( "Circle.Shape", "Round" ); qa_manager.setStringStoreProperty( "Circle.Color", "Blue" ); qa_manager.setStringStoreProperty( "Object.Type", "Circle" ); |
-- SQL example BEGIN CALL ml_qa_setstoreproperty( 'Circle.Shape', 'Round' ); CALL ml_qa_setstoreproperty( 'Circle.Color', 'Blue' ); CALL ml_qa_setstoreproperty( 'Object.Type', 'Circle'); COMMIT; END |
次の C# の例は、メッセージ・ストア・プロパティを使用して、ユーザのネットワーク情報を転送ルールに指定する方法を示しています。
LAN、無線 LAN、無線 WAN の 3 つの接続オプションが用意されている Windows ラップトップがあるとします。LAN 経由でネットワークにアクセスするには、My LAN Card という名前のネットワーク・カードを使用します。無線 LAN 経由でネットワークにアクセスするには、My Wireless LAN Card という名前のネットワーク・カードを使用します。無線 WAN 経由でネットワークにアクセスするには、My Wireless WAN Card という名前のネットワーク・カードを使用します。
ここでは、LAN または無線 LAN を使用して接続している場合は、サーバにすべてのメッセージを送信し、無線 WAN を使用して接続している場合は、優先度の高いメッセージだけを送信するアプリケーションを開発します。優先度の高いメッセージとは、優先度が 7 以上のメッセージであると定義します。
まず、使用しているネットワーク・アダプタの名前を検索します。ネットワーク・アダプタの名前は、カードを装着し、ドライバをインストールした時点で決まります。特定のネットワーク・カードの名前を見つけるには、そのアダプタを介してネットワークに接続し、-vn オプションを指定して qaagent を実行します。QAnywhere Agent によって、次のようにネットワーク・アダプタ名が表示されます。
"Listener thread received message '[netstat] network-adapter-name !...' |
次に、LAN、WLAN、WWAN の 3 種類のネットワーク・タイプに対応するクライアント・メッセージ・ストア・プロパティを定義し、各プロパティに Cost 属性を割り当てます。Cost 属性は 1 ~ 3 の値をとり、そのネットワークを使用したときに発生するコストを表します。1 が最も低いコストを表します。
QAManager qa_manager; qa_manager.SetStoreProperty( "LAN.Cost", "1" ); qa_manager.SetStoreProperty( "WLAN.Cost", "2" ); qa_manager.SetStoreProperty( "WWAN.Cost", "3" ); |
次に、使用するネットワーク・カードごとに 1 つずつ、全部で 3 つのクライアント・メッセージ・ストア・プロパティを定義します。このプロパティ名はネットワーク・カード名と一致させます。ネットワークの種類を Type 属性に割り当てることで、各プロパティに適切なネットワーク種別を割り当てます。したがって、各プロパティは、それぞれのネットワークの種類の属性を継承します。
QAManager qa_manager; qa_manager.SetStoreProperty( "My LAN Card.Type", "LAN" ); qa_manager.SetStoreProperty( "My Wireless LAN Card.Type", "WLAN" ); qa_manager.SetStoreProperty( "My Wireless WAN Card.Type", "WWAN" ); |
ネットワーク接続が確立されると、QAnywhere は、ias_Network プロパティの Adapter 属性に、My LAN Card、My Wireless LAN Card、または My Wireless WAN Card のいずれかを、使用しているネットワークに応じて自動的に設定します。同様に、ias_Network プロパティの Type 属性に、My LAN Card、My Wireless LAN Card、または My Wireless WAN Card のいずれかを自動的に設定して、使用しているネットワークの属性を ias_Network プロパティが継承するようにします。
最後に、次の転送ルールを作成します。
automatic=ias_Network.Cost < 3 or ias_Priority >= 7 |
転送ルールの詳細については、QAnywhere 転送ルールと削除ルールを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |