見出し画像

FileMaker Pro 19.1.3 新機能「fmp URL の新しいオプション引数」を試す

はじめに

第22回(10月31日)のミンキーで取り上げた FileMaker Pro 19.1.3  の新機能「fmp URL の新しいオプション引数」について備忘録としてまとめ。

何が変わったのか

fmpプロトコル(fmp19 含む)からスクリプトを実行する際、現在実行中のスクリプトに対する処理をオプションの引数で指定できます。

FileMaker Pro 19.1.2 で「FileMaker.PerformScriptWithOption」に追加されたオプションが fmp プロトコルでも利用できるようになりました。

詳細は以下の各アップデータのリリースノートを参照下さい。

FileMaker Pro 19.1.3 リリースノート

FileMaker Pro 19.1.2 リリースノート


オプションの種類

オプションは 0 〜 5 までの6種類です。各オプションでの動作は以下のように記載されています。

指定方法は以下の様に fmp プロトコルの引数として指定します。
(fmp19 でも同様です)

fmp://サーバーアドレス/ファイル名?script=スクリプト名&option=x

各オプションについてのリリースノートの抜粋です。

0 – 続行: 現在実行中の FileMaker スクリプトが完了した後、キューに追加された FileMaker スクリプトが順番に実行されます。FileMaker スクリプトの実行がキャンセルされた場合、キューは消去されます。(これは オプション が指定されていない場合の動作です。バージョン 19.1.2 以降の FileMaker.PerformScript() のデフォルトの動作です。)

1 – 停止: 現在実行中の FileMaker スクリプトが停止し、キュー追加または呼び出しスタックにある他の保留中のスクリプトがすべてキャンセルされます。その後 スクリプト が実行されます。

2 – 終了: 現在一時停止中の FileMaker スクリプトが終了します。現在の FileMaker スクリプトが別の FileMaker スクリプトに呼び出されていた場合、呼び出しスタックの中のスクリプトがなくなるまで呼び出している FileMaker スクリプトに制御が戻されます。その後 スクリプト が実行されます。

3 – 再開: 一時停止中の FileMaker スクリプトが再開します。再開したスクリプトが完了した後、スクリプト が実行されます。

4 – 一時停止: 一時停止中の FileMaker スクリプトは停止したままになります。一時停止したスクリプトが再開し完了した後、スクリプト が実行されます。

5 – 割り込み: 現在実行中の FileMaker スクリプトに割り込み処理が実行され スクリプト が実行されます。スクリプト が完了すると、割り込まれたスクリプトが次のスクリプトステップから再開します。一時停止したスクリプトは スクリプト の実行中は停止したままになります。(これはバージョン 19.0 の FileMaker.PerformScript() の動作です。)


やってみよう

各オプションの動作をスクリプトを実行して見ていきます。以下の様なスクリプトを作成しました。

「親スクリプト」では「子スクリプト」をサブスクリプトとして呼び出します。子スクリプトの終了後にカスタムダイアログを表示します。

スクリーンショット 2020-10-31 21.20.13

「子スクリプト」ではスクリプトを一時停止します。再開後にカスタムダイアログを表示します。

スクリーンショット 2020-10-31 21.18.48

「外部呼び出し」はカスタムダイアログを表示します。

スクリーンショット 2020-10-31 21.19.12

ダイアログは以下の順番で表示されます。

1.子スクリプトのダイアログ
2.親スクリプトのダイアログ

「親スクリプト」から呼び出した「子スクリプト」が一時停止した状態で fmp プロトコルから「外部呼び出し」を実行します。

各オプションによる一時停止した「子スクリプト」の挙動、「外部呼び出し」の実行順序をテストします。

$$スクリプトに各スクリプトの開始と終了を記述します。$$スクリプトをレイアウト上に配置して、実行順を可視化します。

スクリーンショット 2020-10-31 21.32.20


各オプションの動作

親スクリプトから子スクリプトが呼び出されて一時停止するので、各オプションで以下の手順までは共通です。

スクリーンショット 2020-10-31 21.37.49


オプション 0 (続行)のとき

1.子スクリプトのダイアログが表示される
2.親スクリプトのダイアログが表示される
3.外部呼び出しのダイアログが表示される

子スクリプトは一時停止したままです。レイアウトバーの「続行」をクリックすると子スクリプトが再開します。子スクリプトは最後まで実行されます。続いて親スクリプトが最後まで実行されます。親スクリプトの終了後に外部呼び出しが実行されます。

スクリーンショット 2020-10-31 21.37.59


オプション 1 (停止)のとき

1.子スクリプトのダイアログは表示されない
2.親スクリプトのダイアログは表示されない
3.外部呼び出しのダイアログが表示される

一時停止中の子スクリプトは中止されます。親スクリプトも中止されます。親スクリプトの中止後に外部呼び出しが実行されます。
→停止より中止・中断のほうが分かりやすいかも。英語では halt です。

スクリーンショット 2020-10-31 21.43.34


オプション 2 (終了)のとき

1.子スクリプトのダイアログは表示されない
2.親スクリプトのダイアログが表示される
3.外部呼び出しのダイアログが表示される

一時停止中の子スクリプトは中止されます。親スクリプトは最後まで実行されます。親スクリプトの終了後に外部呼び出しが実行されます。

スクリーンショット 2020-10-31 21.55.15


オプション 3 (再開)のとき

1.子スクリプトのダイアログが表示されます
2.親スクリプトのダイアログが表示されます
3.外部呼び出しのダイアログが表示されます

一時停止中の子スクリプトは再開され、最後まで実行されます。親スクリプトも最後まで実行されます。親スクリプトの終了後に外部呼び出しが実行されます。

スクリーンショット 2020-10-31 22.37.05


オプション 4 (一時停止)のとき

1.子スクリプトのダイアログが表示されます
2.親スクリプトのダイアログが表示されます
3.外部呼び出しのダイアログが表示されます

子スクリプトは一時停止したままです。レイアウトバーの「続行」をクリックすると子スクリプトが再開します。子スクリプトは最後まで実行されます。続いて親スクリプトが最後まで実行されます。親スクリプトの終了後に外部呼び出しが実行されます。

スクリーンショット 2020-10-31 23.33.57


オプション 5 (割り込み)のとき

1.外部呼び出しのダイアログが表示されます
2.子スクリプトのダイアログが表示されます
3.親スクリプトのダイアログが表示されます

外部呼び出しが最後まで実行されます。外部呼び出しの終了後も子スクリプトは一時停止したままです。レイアウトバーの「続行」をクリックすると子スクリプトが再開します。子スクリプトは最後まで実行されます。続いて親スクリプトが最後まで実行されます。

スクリーンショット 2020-10-31 23.36.53

「割り込み」は実行中のスクリプトの途中で、呼び出したスクリプトが実行されることに注意が必要です。呼び出したスクリプトで意図せぬレイアウト切り替えなどが実行されると、不具合につながってしまいます。

オプションによって実行中のスクリプトの動作が異なることが分かります。目的に応じて使い分けることで、外部呼び出し後の動作を細かくコントロールできるようになりました。

ぜひ、動作の違いを理解してカスタム App の開発に役立てましょう。



この記事が気に入ったらサポートをしてみませんか?