日々レコード数が増えていく商品マスターのインポートがどうしても安定しない
「WEBからダウンロードさせる」
「1ファイル最大500レコードのBULK INSERT」
この2つの制約の為、妙に複雑になってしまったマスターインポート機能。
イントラ内に建てたWEBサーバからBULK INSERTファイルを「FOR EACH」で連続処理させるとWEBサーバ側もスマートフォン側も負荷がかかり過ぎるのか、ときどき途中の1,2ファイルがインポート出来ていないんです。
これまでの対応策は、以下のようなもの
1:「FOR」を前半部(15ファイルまで)・後半部(16ファイル以降)に分ける
2:前半終了後、「Timer」が9秒待ちを作り後半部を実行
でも、WEBサーバのアクセスログを見るとファイル15と16の間の息継ぎは、出来たり、出来なかったり・・・ 🙁
とっても不安定な動きをするんですが、それでもエラーが半減したのでそのまま採用。
そして2015年12月、ハンディーターミナルアプリも完成。
そこそこ安定したので、そろそろこの有料App Inventorサービスを解約するつもりでした。
そこで、その前にマスターインポートのさらなる安定を目指し「Notifier」に着目。
と言っても、開発当初に試し挫折したことの再チャレンジなんですけど・・・
ちなみにApp Inventorには数種類の「Notifier」が用意されています。
ファイル15で「Notifier」メッセージを出すブロックがこれ。
表示させたメッセージがこれ
ファイル16以降は、ボタンを押せば「Notifier:afterChoosing」経由で後半インポートが開始させるはずが・・・・・
なぜか、それを待たずに動き出してしまう:-o
前回はここで諦めました。
今回は、「cancelable付き」を利用してみることに。
それなりにAppIventor開発の経験を積んだ今考えると、「僕はなぜこれを試さなかったんだろう?」と後悔しています。
「実行」または「キャンセル」を選ばせるNofiierなんだから、「cancelable無しNofiier」のように勝手に後半を実行するハズが無い!
で改良したのがこれ
後半のインポート部がこれ
メッセージがこれ
動かしてみると・・・・
キャー、ばっちりです:lol:
ボタンを押すまでWEBアクセスが止まってます!
これで、大きな問題がまた1つクリアできました。
プログラムって面白い。
有料サービスの解約、あと数か月待ってみようと思います 😀