Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » Mobile Link クイックスタート » Mobile Link チュートリアル » チュートリアル:XML との同期

 

レッスン 4:同期スクリプトの追加

このレッスンは、受講者がこれまでのすべてのレッスンを終了していることを前提としています。 レッスン 1:XML データソースの設定を参照してください。

このレッスンでは、SQL ローハンドリングとダイレクトローハンドリング用のスクリプトを統合データベースに追加します。

SQL ローハンドリングを使用すると、リモートデータを、Mobile Link 統合データベース内のテーブルと同期できます。SQL ベースのスクリプトでは、次の情報を定義します。

  • Mobile Link クライアントからアップロードするデータを統合データベースに適用する方法。

  • 統合データベースからダウンロードするデータ。

このレッスンでは、次の SQL ベースのアップロードイベントとダウンロードイベント用の同期スクリプトを作成します。

  • upload_insert   このイベントは、クライアントデータベースに挿入された新しい注文を統合データベースに適用する方法を定義します。

  • download_cursor   このイベントは、リモートクライアントにダウンロードする注文を定義します。

  • download_delete_cursor   このイベントは、アップロード専用の同期スクリプトを使用する場合に必要です。このチュートリアルでは、このイベントを無視するように Mobile Link サーバーを設定します。

ダイレクトローハンドリングを使用して特別な処理を SQL ベースの同期システムに追加します。このレッスンでは、handle_UploadData、download_cursor、download_delete_cursor の各イベントに対応するメソッド名を登録します。 独自の Java クラスをレッスン 5:Mobile Link のダイレクトローハンドリングのための Java クラスの作成で作成します。

 ♦ 統合データベースへの SQL ローハンドリングとダイレクトローハンドリング用のスクリプトの追加
  1. 統合データベースに接続していない場合は、Interactive SQL で接続します。

    次のコマンドを実行します。

    dbisql -c "DSN=mlxml_db"
  2. ml_add_table_script ストアドプロシージャーを使用して、upload_insert、download_cursor、download_delete_cursor の各イベント用の SQL ベースのテーブルスクリプトを追加します。

    Interactive SQL で次の SQL 文を実行します。upload_insert のスクリプトでは、アップロードされた order_id、product_id、quantity、order_status を Mobile Link 統合データベースに挿入します。download_cursor のスクリプトでは、タイムスタンプベースのフィルターを使用して、更新されたローをリモートクライアントにダウンロードします。



    CALL ml_add_table_script( 'default', 'RemoteOrders', 
        'upload_insert',
        'INSERT INTO RemoteOrders( order_id, product_id, quantity, order_status)
        VALUES( {ml r.order_id}, {ml r.product_id}, {ml r.quantity}, {ml r.order_status} )' );
       
    CALL ml_add_table_script( 'default', 'RemoteOrders',
        'download_cursor',
        'SELECT order_id, product_id, quantity, order_status
        FROM RemoteOrders WHERE last_modified >= {ml s.last_table_download}');
    
    CALL ml_add_table_script( 'default', 'RemoteOrders',
        'download_delete_cursor', '--{ml_ignore}');
    
    COMMIT;
  3. handle_UploadData イベント用に Java メソッドを登録します。

    Interactive SQL で次の SQL 文を実行します。

    CALL ml_add_java_connection_script( 'default', 
        'handle_UploadData', 'MobiLinkOrders.GetUpload' );

    Interactive SQL によって、handle_UploadData イベント用の GetUpload メソッドが登録されます。次のレッスンでは、挿入されたデータを Mobile Link クライアントデータベース内の OrderComments テーブルから取得する GetUpload メソッドを作成します。

  4. download_cursor と download_delete_cursor の各イベントを登録します。

    Interactive SQL で次の SQL 文を実行します。

    CALL ml_add_table_script( 'default', 'OrderComments',
        'download_cursor', '--{ml_ignore}');
    
    CALL ml_add_table_script( 'default', 'OrderComments',
        'download_delete_cursor', '--{ml_ignore}');

    同期は双方向であり、アップロード専用ではないため、スクリプトを使用するときには、OrderComments テーブル用に download_cursor と download_delete_cursor の各イベントを登録してください。 必要なスクリプトを参照してください。

  5. これまでの変更内容をコミットします。

    Interactive SQL で次の SQL 文を実行します。

    COMMIT;
  6. Interactive SQL を閉じます。

  7. レッスン 5:Mobile Link のダイレクトローハンドリングのための Java クラスの作成に進みます。

 参照