ラベル 同期モデル の投稿を表示しています。 すべての投稿を表示
ラベル 同期モデル の投稿を表示しています。 すべての投稿を表示

2016年1月20日水曜日

ファイルメーカー(FileMaker)を同期で使おう Part5

こんにちは同期シリーズ第5弾です。

今回は、入力用ファイルと中間ファイルのデータの受け渡しです。

以前に、入力用ファイルには中間ファイルのテーブルを含めてのデータの受け渡しはできないということは書いたと思います。

ファイルメーカー(FileMaker)を同期で使おう Part4では、テーブルを含めて、それを利用してデータの受け渡しをしましたが、同じ方法だと、FileMaker Serverから接続を解除するのが難しいのです。

入力用のファイルと中間ファイルのやり取りにはスクリプト引数とスクリプトの結果という引数と返り値を利用してみたいと思います。




この入力用ファイル(client)にも同じテーブルを作成します。フィールドもこのようになっています。

このテーブルに、スクリプトを使ってデータを持ってきます。

中間ファイルのスクリプト



まず中間ファイルにこのようなスクリプトを作成します。

内容としては、
共有ファイルから営業確認タイムスタンプに入力がないデータを検索して、中間ファイルのテーブルにデータをコピーします。

データがないときは処理を終了します。

11行目~は取得したデータを変数に一度格納します。

13行目は、

$data & 受注マスター_sample::受注番号 & "#" &
受注マスター_sample::受注日 & "#" &
受注マスター_sample::商品名 & "#" &
受注マスター_sample::数量 & "¶"

という感じになっています。

1レコードを1行として、改行区切りで格納します。

また、各フィールドは「#」を使って区切っています。もし、商品名などで#を使うケースがあれば、絶対に使わないような文字を区切りとして使います。これは1文字でなくても構いません。

入力用ファイルのスクリプト



こちらが入力用ファイルのスクリプトです。

先ほどの中間ファイルのスクリプトを実行し、スクリプトの結果としてデータを受け取ります。

それをこのファイルにコピーしています。

内容としては、レコードを改行区切りで取得したデータを1レコードごとに変数に格納し、
さらにフィールド区切りとしていた#を改行に変換して、
フィールド設定でデータを書き込んでいます。

Excelファイルあたりでエクスポート、インポートの方が楽かもしれませんが、
こういうやり方もあるというのを紹介できれば幸いです。

好みでお使いいただければと思います。


2015年12月15日火曜日

ファイルメーカー(FileMaker)を同期で使おう Part4

ファイルメーカーを同期で使おうの第4弾です。

 今回は、中間ファイルから共有ファイルにデータを取り込むというテーマです。

レイアウトの作成

まず、中間ファイルで、共有ファイルのテーブルをコンテキストにしたものを作成します。


このようなレイアウト設定です。sampleというのが共有ファイルの名前です。


ブラウズモードにすると、このようにデータが1件あります。

「数量」というフィールドまでが、共有ファイルのフィールドで、「同期タイムスタンプ」というフィールドが、この中間ファイルにあるテーブルのフィールドです。

この「同期タイムスタンプ」のフィールドにデータを入力すると、前回行ったリレーションの設定により、中間ファイルのテーブルにレコードを作成し、ルックアップの設定で、データを取り込むことになります。


このように「同期タイムスタンプ」にデータを入力します。


このレイアウトは、中間ファイルのテーブルです。
ルックアップの設定によって、このようにデータが入力されました。
また、レコード自体はリレーションの設定で、自動的に作成されます。

これで、共有ファイルから中間ファイルへのデータのコピーはできます。

また、中間ファイルから共有ファイルへのデータの書き込みも可能です。

上の「受注マスター_sample」のレイアウトにて、データを書き込めば、共有ファイルに書き込むことになります。

この例では、営業担当者が受注を確認すると、フィールド設定で「営業確認タイムスタンプ」に確認したときのタイムスタンプを入力します。

これを共有ファイルのフィールドにコピーするという流れになってきます。

「受注マスター_sample」のレイアウトにて、「営業確認タイムスタンプ」に中間ファイルから書き込むということになります。

これが、この例での中間ファイルと共有ファイルのデータのやり取りの流れです。

FileMaker Serverの同時接続ライセンスを気にする必要がないけれど、
外出時で、ネットワーク環境のよくないところで共有ファイルのデータを見たいというときには、
これまでのやり方で、基本的にはいけるでしょうか。

ちなみに、データを共有ファイルから「もらう」だけであれば、中間ファイルの「受注マスター」というテーブルはなくてもいけます。

問題は共有ファイルに「戻す」という同期の時に中間ファイルのデータと共有ファイルのデータを比較する必要がある場合は中間ファイルの「受注マスター」が必要になってくるでしょう。

この例では、実際なくてもいけます。

次回は「入力用ファイル」と中間ファイルとのやり取りについてです。

2015年12月8日火曜日

ファイルメーカー(FileMaker)を同期で使おう Part3

こんにちは同期シリーズ第3弾です。

今回から実際の作り方を見ていきます。

少しだけ、復習+α

同期モデルを選択する場合、いろいろな課題があり選択していくと思います。

1) インターネットに接続でいない場所(電波が悪い等も)でデータを見たい

2) 同時接続ライセンスを節約したい

などがあります。1)にはモバイル通信(3Gや4G)の場合も含まれます。モバイル通信だと、ソリューションの規模やサーバーのスペックなどにもよりますが、あまり本格的に閲覧したり、データ入力をするには厳しい場合もあり、同期モデルで作った方がいい場合もあります。

FileMaker GoからFileMaker Serverの共有ファイル開くポイント

FileMaker Goにあるファイル(iPad、iPhone上のローカルファイル)からFileMaker Serverの共有ファイルをリレーションするとFileMaker Serverの共有ファイルを開いた状態(接続ライセンスを消費)になる。


ということです。リレーションをしないで取り込むには、エクセルファイルか何かにエクスポートして、インポートするという手もありますが、個人的な見解としてあまりインポートをさせたくないという考えがあります。たまに、トラブルがあり、インポートが止まらなくなったりなどがあり、そういったことが少なく、確実性が高いを個人的に思っている方法を紹介します。

構成


まず図のようなイメージで

・入力用のファイル(client.fmp12)
・中間ファイル(container.fmp12)
・FileMaker Server上の共有ファイル(sample.fmp12)

という3つのファイルがあり、2つのファイルが同じデバイス上にあるとします。

このソリューションの前提

1) 営業社員が自身の担当顧客から注文が本社に入り、アシスタントがsampleに入力
2) 未確認の注文情報をダウンロード
3) clientファイル上で確認して、確認ボタンをタップ
4) 確認情報をsampleに戻す(入力・同期)する

という流れのソリューションであると思っていただければと思います。

1)FileMaker Server上の共有ファイルsampleの構成


FileMaker Serverの共有ファイルsampleの構成はこのようになっています。実際には、もっと項目が多くなると思いますが、分かりやすいように絞ってあります。



2) 中間ファイル(container.fmp12)の構成


中間ファイル(container.fmp12)にも同じ項目のテーブルを作成します。



一番下にあるフィールドは同期したタイムスタンプを保存しておきますが、共有ファイル上のファイルとのリレーションで、このファイルにレコードを作成するために主に使用します。

リレーションシップの編集

このファイルは共有ファイルとリレーションをして、そのリレーションを使ってこのファイルにレコードを作成したりします。


リレーションシップの管理で、このボタンをクリックします。


「FileMakerデータソースの追加」で共有ファイルを選択します。


このようにリレーションを作成します。「このリレーションシップによるレコードの作成を許可する」を忘れないようにします。

そして、先ほどのフィールドの設定にあったようにルックアップの設定をします。

次回は、中間ファイルに共有ファイルからデータを取得する流れについてみていく予定です。

2015年12月2日水曜日

ファイルメーカー(FileMaker)を同期で使おう Part2

こんにちは!

前回の続きです。

前回は、同期モデルのメリットや簡単な概念を紹介しました。

今回は、完全同期モデルでという名前で紹介した、3つのファイルでデータをやり取りするモデルを作成するにあたって、知っておきたいことを少し掘り下げます。

なぜ3つ必要か


前回紹介した画像です。すこし分かりやすく同じデバイス上にあるファイルを区切りました。

FileMaker Server上のファイルにあるテーブルオカレンスを中間ファイルのリレーションマップに配置して中間ファイルのテーブルオカレンスとリレーションを組み、データをやり取りすることになります。

この時点で、FileMaker Serverのファイルのデータを表示しようとしまいと、中間ファイルを開いている間は、FileMaker Serverに接続し続けます(iPhone、iPad等では同時接続としてカウントされます)。

ちなみに、中間ファイル上でスクリプトステップの「ファイルを閉じる」を実行して、FileMaker Serverのファイルを閉じようとしても閉じられません。

ただし、FileMaker Server上のファイルにてアカウントが設定されていて、アカウント情報を入力して必ず開くようになっている場合は中間ファイルを開くときに、FileMaker Server上のファイルのアカウント情報を入力するように求められますが、キャンセルしてしまえば、接続されずに中間ファイルを開くことはできます。

しかし、FileMaker Server上のファイルのデータを取得するのにはアカウントの入力が必要になり、一度ログインすると、中間ファイルを閉じるまでは基本的に接続し続けます。

こういったことから、データを取得(同期)したらFileMaker Serverの接続を解除したい場合は、3つのファイルが必要となります。

まず、入力用のファイルに中間ファイルのデータを表示しません。

入力用のファイルのリレーショングラフには中間ファイルのテーブルを表示しないということです。

2つのファイル(入力用のファイルとFileMaker Server上のファイル)で、同じように行うこともできます。

ただ3つにすることによって、FileMaker Server上のファイルにできるだけ変更を加えなくて済むというメリットがあります。

方法

基本的なやり方としては、中間ファイルにスクリプトを設定し、入力用ファイルからそのスクリプトを実行して、データのやり取りをします。

データのやり取りには、スクリプト引数をセットしたり、スクリプトの結果を利用して送ったりします。

データのやり取りが多い場合にはエクスポート、インポートでのやり取りが必要になりますが、個人的な感想として、エクスポートはともかくインポートがらみにでトラブルに見舞われることがあるので、あまり好きではないという理由で、今回はこの方法は紹介しません。

なお、同期モデルのやり方にはいろいろあり、その一つであるという前提でお読みいただけると助かります。

次回は実際の手順を紹介していきたいと思います。

2015年11月24日火曜日

ファイルメーカー(FileMaker)を同期で使おう Part1


こんにちは、いつもご覧いただきありがとございます。

FileMaker Server(ファイルメーカーサーバー)13より、無料のクライアントの同時接続ライセンスが導入されました。

これは、iPad、iPhoneのアプリFileMaker Go、WebDirectからFileMaker Serverでホストするファイルにアクセスする場合、FileMaker Serverに同時接続ライセンスを購入しないと接続できないというものです。

FileMaker Server14では、Proのクライアントソフトの値段と同じくらいの価格になり、地味に辛くなってきました。

できるだけ同時接続を節約したいと思う方は多いのではないでしょうか。

これから数回にわたって、そんな悩みの解決になればということで、同時接続を節約する同期モデルという方法について解説をしていきます。

今回ここで紹介するのは、FileMaker Goでの同期モデルの方法です。WebDirectではPHPを使ってアクセスすれば節約できますが、コーディングが必要になってきます。

同期モデルってなに?

FileMakerGoからFileMaker Serverホストされている共有ファイルを開くと、そのファイルを直接ファイルを開くことになり、同時接続ライセンスを1つ消費します。

また、そのファイルを開いている間はFileMaker Serverと繋ぎっぱなしの状態になり、同時接続ライセンスを繋ぎ続けることになります。

この繋ぎっぱなしをなくし、データのやり取り時だけ、サーバに接続するというのが同期モデルと言われるものです。

同期モデルのもう一つの効果

同期モデルには接続ライセンスを節約するということを目的にする場合と、Wi-Fiなどの電波が届かなく、インターネットに接続できない環境下でもデータを入力したい場合などに使われます。

また、接続できたとしてもクライアント側の電波状況が悪い場合で、FileMaker Serverとうまくつながらない状況下でも効果的です。

同期モデルの二つの方法

①まず、データをFileMaker Serverに送ったり、受け取ったりするとき(同期時)だけFileMaker Serverに接続する方法と、

②インターネットに繋がっている状況であれば、常にFileMaker Serverに繋がっている方法の二つがあります。

②は接続ライセンスの節約というよりは、クライアントにいろいろな状況があり、インターネットに繋がりにくい環境下で作業することがある場合です。

①は②に加えて接続ライセンスの節約もできるという方法です。

ここでは、①の方法を扱っていきます。

また、二つの方法がどう違うかを見ていきます。

①完全同期モデル

先ほどの①モデルでは、FileMaker Server上の共有ファイル、同じiPad、iPhone(以下デバイス)上の2つのファイルが必要になります。

入力用のファイルと、中間ファイルは同じデバイスにあります。

役割としては、入力用のファイルは入力(や閲覧)だけをするためにあります。

中間ファイル(コンテナ)は入力用のファイルのデータをFileMaker Serverのファイルを開いて更新したり、または受け取ったりします。

なぜ、このような複雑な方法と取るかというと、入力用のファイルに直接FileMaker Serverのファイルのデータを取得しようとすると、その入力用のファイルを開いている間、FileMaker Serverに接続している状態になるからです。

②簡易同期モデル



このモデルでは、入力用ファイルからFileMaker Serverのファイルに直接接続します。直接、データをサーバのファイルから移動します。

このモデルでも、インターネットに繋がっていなくても、入力用のファイルが開けますので、Wi-FiモデルのiPadなどで事務所でデータを同期(ダウンロード)して、Wi-Fiのつながらない場所に移動しても入力などができます。

次回は、①完全同期モデルでの開発と解説を行っていきます。