おそらく、ユーザが配送を完了した、見積のリクエストが作成された、製造に関する業務が削除されたなどの場合に、管理者にメールを送信したいということでしょう。このような処理をするには、「MirrorSync customization」スクリプトを変更します。スクリプト中に「DidUpdate」、「DidInsert」、「WillDelete」のセクションがあります。「Hub」のセクションでこれらを変更してください。Spokeで変更することは、まずありません。スクリプトの中の関連するセクションで、現在のレイアウトをチェックし、動作を実行させたいレイアウトになっていれば先へ進んでこのセクションで動作を実行します。開始したのと同じレイアウト、同じレコード上でスクリプトが終了するまでは、他のレイアウトへの移動、検索/挿入/更新/削除の実行、メールの送信、その他のあらゆる動作を実行できます。
「DidInsert」や「DidUpdate」スクリプトの結果としてレコードが変更されたことをMirrorSyncが検知すると、クライアントの検索を再度実行し、「FindChanges」セクションに指定されているスクリプト化されたレコードの制限を検討します。たとえば、「業務の同期」レイアウト上のレコードのステータスが「完了」に変更されたときにユーザのiPadから業務を削除したいとしたら、以下のように設定します。
「FindChanges」セクションを変更して、「Get ( レイアウト名 ) = "業務の同期"」であるときにステータスが「完了」になったレコードを除外するようにします(FileMakerでこのような検索をするには、検索モードにして、ステータスのフィールドに「完了」と入力し、現在のレコード/リクエストを除外してから、対象レコードの絞り込みをします)。
「DidInsert」セクションを変更して、「Get ( レイアウト名 ) = "業務の同期"」であるときに修正情報のタイムスタンプを空欄にします。
「DidUpdate」セクションも同じようにします。
これで、オフラインのユーザが「業務の同期」テーブルのレコードを更新したり挿入したりすると、スクリプトによって修正情報のタイムスタンプが空欄になります。これが変更のトリガーとなって、MirrorSyncは検索を再実行し、検索結果から完了した業務を除外します。するとiPadから自動で削除されます。
なぜ修正情報のタイムスタンプを空欄にするのかと疑問に思うかもしれません。その答えは、あなたがレコードに変更を加える場合に、何を変更したかは重要ではないということです。修正情報のタイムスタンプを空欄にするのは、悪影響を及ぼさない変更です。空欄は、FileMakerによって即座に新しいタイムスタンプに置き換えられるからです。レコード上の任意のフィールドを現在の値にセットしたり、日付のフィールドに業務が完了したというデータを入力するなど、何か意味のある変更をしたりすることもできます
原文:How can I run a script on the server when a record is synchronized? http://docs.360works.com/index.php/MirrorSync_advanced_topics#How_can_I_run_a_script_on_the_server_when_a_record_is_synchronized.3F
コメント
0件のコメント
サインインしてコメントを残してください。