モバイルアプリでの同期処理、または画面自動更新の阻止

いつもお世話になっております。

同じ構成で一部の値が違うアプリが複数ある状態で、
実績を別のアプリに転送するJavaScriptを作成しております。

モバイルアプリから登録を行うにあたって、下記のコードを書きました。

(function() {
  "use strict";

  var 実績集計アプリID = 131;
  var 自分のアプリID = 135;

  kintone.events.on(['mobile.app.record.detail.show'], function(event) {
    var record = event['record'];
    // ドロップダウンでフラグ管理
    var 完了確認 = record['完了確認']['value'];
    var 実績転送 = record['実績転送']['value'];

    // 完了確認フィールドが「完了」になっていて、実績転送フィールドが空の時
    if (完了確認 === "完了" && 実績転送 === "") {
      alert('実績未登録');
      // 東京の売上データを実績集計アプリに登録
      var 転送内容 = {
        "app": 実績集計アプリID,
        "record": {
          "拠点": {
            "value": '東京'
          },
          "買取金額": {
            "value": record['買取金額']['value']
          },
          "出張日": {
            "value": record['出張日']['value']
          }
        }
      };
      return kintone.api('/k/v1/record', 'POST', 転送内容).then(function(resp1) {
        alert('実績登録が完了しました。');
        // 登録ができたら実績転送フィールドを「済」にする
        var 終了処理 = {
          "app": 自分のアプリID,
          "id": record['$id']['value'],
          "record": {
            "実績転送": {
              "value": "済"
            }
          }
        };
        return kintone.api('/k/v1/record', 'PUT', 終了処理).then(function(resp2) {
          alert('終了処理を行いました。');
        }, function(error) {
          alert('終了処理でエラーが発生しました。');
        });
      }, function(error) {
        alert('実績転送にエラーが発生しました。データ内容を確認してください。');
      });
    }
  });

})();

※実際作成しているアプリと若干項目名を変えている部分があります。

上記を実行したところ、処理が同期されておらず、
同じデータが2つ登録されることがありました。

せめて画面が更新されなければいいのですが、
どうやら自動で更新されているようで……

下記のどちらかが行えれば解決できると考えています。

①モバイルアプリで同期処理を行えるようにする
②オートリロードが行われないようにする

モバイルアプリでこのような処理は可能でしょうか。
または、別の解決策や運用方法がありましたら
お知恵を拝借できますと大変助かります。

(モバイルアプリにも「レコード保存時イベント」があれば一番いいのですが……)

よろしくお願いいたします。

 

藤原さん

複数アプリへのレコード一括処理APIを使われたらいかがでしょうか?

・実績集計アプリIDレコード取得(リビジョン取得)
・複数アプリへのレコード一括処理(実績集計アプリと自分のアプリ)でリビジョン指定

もし、二重に登録処理した場合は、リビジョンチェックエラーになります。

rex0220様

ご返信ありがとうございます。

> 複数アプリへのレコード一括処理APIを使われたらいかがでしょうか?

実績集計アプリへのレコード登録、自分のアプリの更新を同時実行で希望の動作になりました。
これまで使ったことのないAPIだったので、勉強になりました。ありがとうございます。

ちなみに、登録処理とフラグ処理を同時に行えることによって
リビジョン関係の処理は不要のように思うのですが、
使用しないと重複登録の可能性はまだあるのでしょうか。

藤原さん

複数のスマホで同時にレコードを見た場合に、同時に更新処理が実行されますので、リビジョンチェックは入れたほうがいいと思います。
実績集計アプリを他に更新する処理や操作が無いのであれば、自分のアプリのリビジョンチェックだけでもいいかもしれません。

 

rex0220様

ご返信ありがとうございます。

> 複数のスマホで同時にレコードを見た場合

1つのレコードに対して作業者は1人の想定でしたので、考えが及びませんでした。
アドバイスいただいた通り、自分のアプリに対してリビジョンチェックを入れました。

とても助かりました。ありがとうございます。