Magic xpa 3.1 対応
モバイル用アプリ
「スマートセールス for 顧客大臣」
開発者ガイド
Ver.:1.00
作成:平成 29 年 8 月 日
目
目
目
目
次
次
次
次
1.本システムの提供ファイル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 2 2.モデルリポジトリ(初心者向け) ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3 3.データリポジトリ(初心者向け) ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 6 4.プログラムリポジトリ(初心者向け) ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 7 5.リッチクライアント開発の特徴 (クラサバ開発経験者で、RIA 開発未経験者向け) 5-1 フォームはすべてMagicで作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 8 5-2 色・フォントファイルはそのまま、キー割付も有効 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 8 5-3 クライアント側に実行版のインストール作業は不要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 9 5-4 印刷は PDFや ReportsMagic ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 9 5-5 バッチタスクはそのまま ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 9 5-6 RM 互換(レコードメイン互換)タスクは不可 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 9 5-7 ファントムタスクは不可 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 9 5-8 リッチクライアントに関して、コール出来ない組み合わせがある ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 10 5-9 遅延トランザクションモードを使用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 10 5-10 使用出来ない関数がある ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 10 5-11 使用出来ない機能がある ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 11 5-12 オンラインタスクのようなレコードロックの概念はない ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 11 5-13 パフォーマンスに関する注意点 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 11 6.モバイル開発の特徴 (RIA 開発経験者で、モバイル開発未経験者向け) 6-1 基本的な考え方 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13 6-2 画面サイズの違い ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13 6-3 ユーザインタフェース ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13 6-4 使用出来ないコントロール ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13 6-5 フォントについて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14 6-6 色について ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14 6-7 デバイス特性の取得関数 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14 6-8 デバイス機能の利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 15 7.テクニック集 7-1 グローバル変数/グローバル関数 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 16 7-2 地図表示 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 17 8.顧客大臣連携について 7-1 グローバル変数/グローバル関数 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 19 付録(モデル一覧・テーブル一覧・プログラム一覧)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 20
本システムで提供されているファイルを、フォルダ毎に紹介します。 (本ドキュメントでは SMARTSALES のモジュールを C ドライブのルートディレクトリに解凍した場合を想定し記述して ありますので、C:\ の部分は解凍先ディレクトリに置き換えて作業を行って下さい) フォルダ名 ファイル名 内 容 C:SMARTSALES SMARTSALES.edp 本システムのプロジェクトファイル ENV ENV\Android ENV\iOS clr_mobile.jpn fnt_mobile.jpn fnt_mobile.jpn fnt_mobile.jpn 色定義ファイル フォント定義ファイル Android用フォント定義ファイル iOS用フォント定義ファイル images images\icons images\Android images\iOS *.jpg *.png ロゴおよび壁紙ファイル システム内で使用するイメージファイル Android用アイコン・スプラッシュイメージファイル iOS用アイコン・スプラッシュイメージファイル root\work (各種ファイル) 一時ファイルを格納するフォルダ Source *.xml プログラム等のソースファイル Template MapFan_tplt.html 地図表示用 html ファイル
第1章
本システムの提供ファイル
モデルリポジトリでは、システム内で使用する「項目の型や桁数」の設定や、「フォームの大きさや色」の設定を行い ます。 ここで設定し た値は、シ ステ ム全体を通じ て一括して 管理するこ とが でき 、もし 将来、設定した値が 変更にな った と しても、対象となるモデルの値を変更するだけで、対象となるモデルを使用しているテーブルやプログラムの値も、 自動的に変更することが出来ます。 まずは、モデルリポジトリを開きます。 Magic xpa開発版を起動し、「別プロジェクト」をクリ ックします。 そ し て 、 「 C:\SMARTSALES\SMARTSALES.edp 」 を選択します。 ※画面左端にナビゲータが表示されていない場合は、 表示するようにして下さい。 [表示]→[ナビゲータ] を選択します。 開発画面が 表示され ますので、モデルリ ポ ジトリ を 開きます。
第
2
章
モデルリポジトリ
初心者向け
(1) 「項目」のモデル例 ■文字型 モデル 8番「処理名」は、 「クラス:項目」 「型:文字」 となっています。 また、特性画面内では、 「書式:X30」 となっています。 こ れ は 、「 処 理名」 とい う モデ ルが 、「 文 字項 目で 、 30桁(30バイト)」であることを意味しています。 し たが って 、シ ステ ム 内でこの モデルを使って いる 箇所はすべて「文字項目の30桁」として一括管理 されます。 ■数値型 モデル 7番「権限」は、 「クラス:項目」 「型:数値」 となっています。 また、特性画面内では、 「書式:#2」 となっています。 これは、「権限」というモデルが、「数値項目で、 マイナスありの 2 桁で表示する」ということを意味し ています。 シ ステ ム 内 でこ の モデ ルを 使 って いる 箇 所 はすべ て、「数値項目のマイナスありの2桁」として一括管 理されます。
(2) 「フォーム」のモデル例 モデル 2番「Android用フォームサイズ」は、 「クラス:リッチクライアント表示形式」 「型:フォーム」 となっています。 また、特性画面内では、 「フォント」 「色」 「幅」 「高さ」 などが設定されています。 シ ス テ ム 内 で こ の モ デ ル を 使 っ て い る フ ォ ー ム は すべて、色と大きさが統一されます。
データリポジトリでは、システム内で使用する「テーブル(ファイル)」を定義します。 「テーブル名(ファイル名)」、「カラム(項目)」、「インデックス(キー)」などを設定します。 ■データ(ファイル)定義の例 データ 5番「商品・保守マスタ」は、 「データソース名:MST_HOSHU」 「データベース:Local(Mst)」 (Local) となっています。 <カラム> 5個のカラムが設定されており、それぞれモデル を使用しています。 「型」と「書式」は、モデルの値が継承されます。 <インデックス> 上の部分がインデックスの名前です。 インデックスが1つ定義されており、「重複不可」に 設定されています。 下の部分には、インデックスの実際の中身のカラム (セグメント)が定義されています。
第
3
章
データリポジトリ
初心者向け
プログラムリポジトリでは、プログラムを記述します。 「データビュー/ロジック/フォーム」の3つを定義することによってプログラムが成立します。 プログラムを「書く」というよりも「設定」するというイメージになります。 ■プログラム定義の例 プログラム13番「ログイン」を見てみます。 F5(ズーム)キーを押すと、プログラムの中身を見る ことができます。 画面上部に3つのタブがあります。 <データビュー> プログラムで使用するビュー項目を定義します。 「メインソース(メインファイル)」 「メインソースのカラム」 「変数項目」 「パラメータ項目」 <ロジック> ロジックを記述します。 「いつ、どこで、何をするか」 <フォーム> フォーム(画面)を作成します。
第
4
章
プログラムリポジトリ
初心者向け
この章では、クラサバ開発は経験したことがあるが、RIA 開発は初めてという方を対象にして、「パソコン向けRIA 開発の特徴」を挙げてみました。なお、「モバイル向けRIA 開発の特徴」については次章で紹介しています。 ※ここでは簡単な説明だけにとどめておりますので、詳細をお知りになりたい方は、Magic付属のマニュアル及び MSJ 発行の資料等を参照して下さい。 5-1 フォームはすべてMagicで作成 フォームはすべてMagicで作成しますので、HTMLの知識や FrontPage などのオーサリングツールの経験も必 要ありません。オンラインタスクでフォームを作るのと同じ要領です。 5-2 色・フォントファイルはそのまま、キー割付も有効 色ファイ ルやフォン トファイ ルは今までの オンライン タスクの時と同じです。また、キ ーボード 割付も今まで通り有 効です。 <色テーブル> <フォントテーブル> <キーボード操作の一例> 登録:Ctrl+E、 修正:Ctrl+M、 照会 Ctrl+Q、 終了:Esc、 行削除:F3、 行作成:F4
キ ャ ン セ ル : Ctrl+F2 、 次 項 目 : Tab 、 前 項 目 : Shift+Tab 、 テ ー ブ ル 先 頭 : Ctrl+Home 、 テ ー ブ ル 末 尾 : Ctrl+End
第
5
章
リッチクライアント開発の特徴
※オンラインタスクの時と同じ
前画面:PgUp、 次画面:PgDn、 コピー:Ctrl+C、 貼り付け:Ctrl+V など 5-3 クライアント側に実行版のインストール作業は不要 クライアント側に、Magic実行版のインストール作業は必要ありません。 初回アクセス時に、リッチクライアント用のMagicエンジンが自動でインストールされます。 (.Net Framework 2.0 SP2以上の環境があればいいです) 5-4 印刷は PDFや ReportsMagic クライアント側から印刷するためには、PDFや ReportsMagicを利用するのが便利です。 (本システムには、印刷処理はありません) <PDF> <ReportsMagic> 5-5 バッチタスクはそのまま 今まで使っていたオンラインタスクをリッチクライアントタスクに変換するには、タスク特性内のタスクタイプを、 「O=オンライン」から「C=リッチクライアント」に 変更するわけですが、バッチタスクにおいて は、その まま利 用する ことができます。 5-6 RM 互換(レコードメイン互換)タスクは不可 RM 互換が存在するオンラインタスクは、リッチクライアントタスクに変換できません。プログラムチェック時に次の ようなメッセージが出てきます。 したがって、イベントドリブン型の開発手法に変更する必要があります。 5-7 ファントムタスクは不可 受注入力プログラムのように、親タスクでヘッダデータを入力し、子タスクで明細データを入力するようなプログラ ムを作る 際に 、子タスクの 画面を最初に 表示したいため、親タスクの レコ ード 前処理で子タスクをコールし 、子タ スクの終了条件欄に「Level(1)=’RP’」、ウィンドウ消去欄に「No」を設定する方法がありました。 このようなタスクのことを「ファントムタスク」と呼んでいますが、リッチクライアントタスクにおいては、ファントムタスク のような仕組みでは動作しません。なぜなら、リッチクライアントタスクにおいては、ウィンドウ消去欄が「Yes」固定 になっているためです。 したがって、サブフォームを使用する手法に変更する必要があります。 [RM 互換]ロジックユニットは、オンラインタスクでのみサポートします ウィンドウ消去欄が「Yes」固定になっており、変更できません。
5-8 リッチクライアントに関して、コール出来ない組み合わせがある リッチクライ アントタスクから別タスクをコ ールする場合や、別タスクからリ ッチクライアントタスクをコ ールす る場合 に、コール出来ない組み合わせがあります。以下の表をご覧下さい。 コール元 コール先 可(○)・不可(×) オンラインタスク リッチタスク × バッチタスク リッチタスク × リッチタスク リッチタスク ○ リッチタスク オンラインタスク × リッチタスク バッチタスク ○ 今までバッチタスクからオンラインタスクをコールしていた場合には、バッチタスクからリッチクライアントタスクはコ ール出来なくなります。 ただし 、リッチクライアン トタスクの タスク特性内で、「イン タラクテ ィブ」 チェックボ ックスの チェ ックを外す とユーザ の操作を受け付けなくなり、バッチタスクのような動作になります。この機能を利用することによりバッチタスクから リッチクライアントタスクを呼び出すような処理が実現できます。(詳細は Magicのヘルプをご覧ください) 5-9 遅延トランザクションモードを使用 リッチクライアントタスクではトランザクションモードが、物理モードではなく、遅延モードになります。 物理モードでは、レコードに対して何らかの修正等を行なった場合、レコード後処理を通過した後に、ファイルに 反映されますが、遅延モードでは、修正等の情報はコンテキスト(サーバのメモリ上)に蓄積され、トランザクション が終了する時点でファイルに反映されるという動きになります。 したがって「トランザクション開始」の設定にも注意が必要となり、この設定によってトランザクションの範囲が決定 されます。 ※メニューだけを表示するようなタスクの場合は、トランザクションモードを「O=なし」にした方が望ましいです。 これにより、メニューから起動されたタスクはすべて独立したトランザクション処理を行なうようになります。 ※遅延トランザクションの詳細につきましては、Magic xpaのホワイトペーパー「データ管理 Magic xpa」を参照
して下さい。 5-10 使用出来ない関数がある リッチクライアントタスクでは使用できない関数がいくつかあります。 これについては、Magic ReadMe 内の「参考技術情報/リッチクライアントとオンラインの違い」に載っています。 <使用できない関数> 使用出来ない関数を使っている場合には、別のコマンドに置き換えるか、ロジックを変更する必要があります。 また、端末番号(Term 関数)という概念も意味がなくなります。 Blob2Req、File2Req、KbGet、KbPut、Text、TransMode、UDF関数、Variant 関数、 WinHelp、XML 関数 など オン ラ イン タスクでは、トラ ンザ クシ ョ ン モード は主に 「 P=物理」 を使っ て い まし た が 、リ ッ チク ラ イ ア ン トタス クで は「 P= 物理 」 が なくなって、「W=有効な遅延トランザクション内」になります。 「 N= 新 規 の 遅 延 トラ ン ザ ク シ ョ ン 」 と いう の も あり ま す が 、 こ こ で は説明を省略します。
5-11 使用出来ない機能がある リッチクライアントタスクは、オンラインタスクの機能を 100%サポートしているわけではありません。 (ほぼ 100%に近づきつつありますが)、どのような機能がサポートされていないかは、Magic ReadMe 内の「参考 技術情報/リッチクライアントとオンラインの違い」に載っています。 使用出来ない機能を使っている場合には、機能を制限するか、ロジックを変更する必要があります。 5-12 オンラインタスクのようなレコードロックの概念はない データビューに定義したメインソース特性内で「アクセス」と「共有」を「W=書出」としても、オンラインタスクのような レコードロックはかかりません。オンラインタスクの場合は、タスク特性内に「ロック方式」の設定欄がありましたが、 リッチクライアントタスクには、その設定自体がありません。 <オンラインタスク> <リッチクライアントタスク> Magic xpa のリッチクライアントタスクのように、遅延トランザクションを有効にしたタスクでは、レコードをロックする 方式ではな く、更新しようとするレコードが既に更新されていないかを更新時に自動的に確認する、いわゆる“楽 観的ロック”による排他制御を行っています。 遅延トランザクションについての詳細は、ホワイトペーパー「データ管理 Magic xpa」をご覧ください。 5-13 パフォーマンスに関する注意点 1) ロジックについて リッチクライアントタスクにおいては、サーバ側で処理されるコマンド(関数)と、クライアント側で処理されるコマ ンド(関数)を自動的に判断しています。そして、これらの処理が混在するようなロジ ックの場合、プログラムチ ェック時にエラー(ワーニング)が出てきます。 サーバ側の関数なのかクライアント側の関数なのかは、ヘルプ内に載っています。 [タスク前処理] ・・・・ サーバ側で実行(クライアント側の処理は実行されない) [タスク後処理] ・・・・ 処理内容に応じてサーバ側あるいはクライアント側で実行 エラーコマンド ・・・・ クライアント側で実行 リンクコマンド ・・・・ サーバ側で実行 バッチタスク ・・・・ サーバ側で実行 となっています。(これは一例です) サーバ側での 処理(関数) とクライ ア ン ト側での 処理( 関数) が 混在する ような 場合は、パフォーマン スに 影響 が出て きますの で、でき る限り、サーバ側の処理(関数)とクライアント側の 処理( 関数) をグループ化し 、混在 する回数が少なくなるようにすることがポイントです。
どちら側の処理なのかは、データビューやロジック部において、行の先頭の記号でも判断できます。 2) フォームレイアウトについて オンラインタスクでは、1つの画面に多くのコントロールを配置しても、パフォーマンスの影響は軽微でした。 しかし、リッチクライアントタスクにおいては、1 つの画面に多くのコントロールを配置すると、パフォーマンスの 影響を受けます。 コントロール前・検証・後な どのロジックや項目変更ロジックなど、コントロール間のカーソル移動に より実行さ れるロジックがあります。これ らのロジックに処理を実装し ていると、カーソ ルが移動すれば、そのロジックが呼 び出されることになり、サーバへの通信やロジックの処理が実行されることに繋がるわけです。 サーバへの通信やロジ ックの 実行が 頻繁に発生すれば、パフォーマン スが低下するこ とは、先の 説明の通り です。 1つの画面に は多くのコントロールを配置する のではな く、出来るだけ シン プルな 画面にして、別の画面を呼 び出すなど、画面レイアウトを工夫すると良いでしょう。 S・・・サーバ側処理、 C・・・クライアント側処理、 M・・・サーバ側/クライアント側 処理混在 サーバ側処理は 赤色背景
この章では、RIA 開発は経験したことがあるが、モバイル開発は初めてという方を対象にして、「モバイル向け RIA 開発の特徴」を挙げてみました。
※ Magic 付属のマニュアル及び MSJ 発行の資料等も参考にして下さい。「モバイル RIA 開発者ガイド」が参考にな るかと思います。また、Androidの場合には、「AndroidでのMagic RIA(はじめの一歩)」は必読です。
6-1 基本的な考え方 モバイルでどのようなことをやりたいのかを、はっきり決めておくことが必要です。 当然ながらモバイルは画面が小さくなりますので、あまり複雑な画面にしてしまうと見づらく操作性も悪くなるかと 思います。 モバイル用RIAアプリを開発すること自体は、パソコン用RIA アプリとほぼ同じような考え方で開発できますが、 そもそも画面の大きさやユーザインタフェースが違いますし、サポートされていない機能や OS固有の制限事項 もあります。したがって、動作テストする場合は必ず実機で行なう必要があります。 6-2 画面サイズの違い モバイルデバイス毎に画面サイズが違ってきます。 そのため、プログラム内ではそのデバイスサイズに合わせたフォームを作らなければな りません。もし、画面サイ ズの違うデバイスが複数存在する場合には、複数のフォームを作っておいて、使用するデバイスごとにIF文や CASE文を使ってフォームを切り替えるような仕組みが必要になります。 6-3 ユーザインタフェース ■ウィンドウに関して 新規に開くウィンドウは前のウィンドウの上に重なって表示されるので、「モーダル」の機能になります。 フォーム特性内の値を変更すれば、ポップアップウィンドウの設定は可能です。 現在のウィンドウを閉じて前のウィンドウに戻るには、プロフラム内で「終了」イベントを発行するか、またはモバ イルデバイスの「Back」ボタンを押します。 また、マウスポインタがないので画面を移動したり、サイズ変更したりすることは出来ません。 ■キー操作に関して キーボード入力が必要な項目にパークすると、画面下部にキーボードが自動的に表示されるので、その時は、 画面の 下部が 見えな くな ります。また、パソコ ンのキーボ ードとは違い、項目間を移動するためのキ ーは存在 せず、その項目をタッチすることで項目を移動します。 6-4 使用できないコントロール 以下のコントロールは、モバイルでは使用出来ません。 ・ラジオボタン ・リストボックス ・タブ ・ツリー ・リッチテキスト など また、インクリメンタルサーチ(照会モード時の自動位置付け機能)も、モバイルでは対応されていません。
第
6
章
モバイル開発の特徴
RIA 開発経験者で、モバイル開発未経験者向け
6-5 フォントについて WindowsOS とは異なる独自のフォントを持っていますので、それぞれのフォントの種類を調査しておく必要があり ます。 また、Magic のフォント定義画面では、モバイル用フォン トを定義(ズーム選択)することができないため、 フォント テーブル(fnt_xxx.jpn)をメモ帳などで直接編集することになります。 <Androidフォントの例> Android font1,Sans-Serif,8,0,0 Android font2,Sans-Serif,8,0,0,Bold <iOSフォントの例> iOS font1,Helvetica,8,0,0 iOS font2,Helvetica-Bold,8,0,0 定義したフォントが、モバイルデバイス側で見つからなかった場合は、デバイスが持っているデフォルトのフォント が使用されます。 ■フォントファイルの自動切り替え機能 フォントファイルが「ENV\fnt_mobile.jpn」だった場合、「ENV」フォルダ内に、「Andriod」フォルダと「iOS」 フォルダを作り、それぞれに独自のフォントファイルを置くと、実行時に、使用するOSに応じてそれぞれの フォントファイルが使用されるようになります。(これらのファイルパスを明示的に指定する必要はありません) 「ENV」フォルダ内 それぞれのフォルダに独自の「fnt_mobile.jpn」ファイルを置くと 使用するOSに応じて自動的に切り替わります。 6-6 色について 使用するデバイスによって微妙に見た目の色が変わりますので、必ず実機で確認しておいて下さい。 ■色ファイルの自動切り替え機能 色ファイルが「ENV\clr_mobile.jpn」だった場合、「ENV」フォルダ内に、「Android」フォルダと「iOS」フォル ダーを作り、それぞれに独自の色ファイルを置くと、実行時に、使用するOSに応じてそれぞれの色ファイルが 使用されるようになります。(これらのファイルパスを明示的に指定する必要はありません) 「ENV」フォルダ内 それぞれのフォルダに独自の「clr_mobile.jpn」ファイルを置くと 使用するOSに応じて自動的に切り替わります。 6-7 デバイス特性の取得関数 デバイス側の特性を取得するための関数が用意されています。(以下、主なものです) 関数 説明
ClientOSEnvGet('device_os') デバイスのOS(Android、iOS)を返します。 ClientOSEnvGet('device_os-version') デバイスのOSバージョンを返します。 ClientOSEnvGet('device_model') デバイスのモデル番号または名前を返します。 ClientOSEnvGet('device_magic-version') RIAクライアントのバージョンを返します。 ClientOSEnvGet('device_location') 縦方向の物理画面の高さをインチで返します。 ※詳細については、関数のヘルプをご覧下さい。 <メモ帳で編集した結果>
6-8 デバイス機能の利用
デバイスが持っている機能を利用することができます。(以下、主なものです)
機能 方法(文法)
位置(GPS) ClientOSEnvGet('device_location')関数 ・・・・ 緯度と経度が返ります。 ※外部コール「OSコマンド」のコマンド特性内の「実行」の値は、「C=クライアント」にします。
この章では、本システムのプログラム内で使用しているテクニックをいくつか紹介いたします。 7-1 グローバル変数/グローバル関数 メインプログラム(プログラム1番)で定義されている「変数/関数」は、システム全体で利用できる「グローバル変 数/グローバル関数」になります。 ■グローバル変数 変数名 説明 G.ユーザID 「ユーザ独自の値」 ログイン時に変数にセットしています。 G.担当者コード G.担当者名 G.課 CD G.課名 G.Math.PI 円周率。距離計算で使用 地図表示で使用 G.Phy.Earth_R 地球の赤道半径 G.MapFanAuthServer MapFanAPI の認証サーバ G.MapFanSerchServer MapFanAPI の住所検索サーバ G.ClientCache イメージファイルの表示時に使用 顧客情報画面で使 用 G.会社名 顧客大臣の会社情報取得用変数 シ ス テ ム 情 報 画 面 で使用 G.プログラムNo プログラムの判別用変数 プ ロ グ ラ ム の 実 行 時に使用 G.デバイス区分 デバイス情報の取得用変数 各画面表示時に使 用 G.顧客 From 訪問 予定 検索 画面 で指 定し た顧 客コ ー ド の 範 囲 (開始) 顧 客 デ ー タ 取 得 時 に使用 G.顧客 To 訪問 予定 検索 画面 で指 定し た顧 客コ ー ド の 範 囲 (終了) G.日付 From 訪問予定検索画面で指定した日付の範囲(開始) G.日付 To 訪問予定検索画面で指定した日付の範囲(終了) G.担当者CD ログインしたユーザの担当者コード G.顧客 CD 顧客コード ■グローバル関数 関数名 説明 getMapKey MapFanに関して、認証 IDからアクセスキーを取得する パラメータ:認証ID 戻り値 :ステータス[成功か失敗か] とアクセスキー(文字型) 地図表示で使用 getGeoCode 住所から緯度と経度を求める パラメータ:アクセスキー、住所 戻り値 :緯度と経度(文字型)・・・結果は xml なので解凍が必要
第
7
章
テクニック集
7-2 地図表示 本システムでは、「MapFanAPI【別途要商用ライセンス】」を利用して地図表示しています。 方法としては、地図表示用のhtmlファイルを用意し、そのhtmlの中に、地図表示に必要なデータをMagicから 流し込むようなイメージです。 な お、本シ ステム では、地図上の 顧客の 場所( 住所) に目印( マーカー) を立て る ようにし て いますが 、そ の ため にあらかじめ、顧客の住所から緯度と経度を関数で取得しています。 関数名は「getGeoCode」で、これは独自に作った関数です。メインプログラム(プログラム1番)内で定義されてお り、得意先 CSV データを取り込むタイミングで、この関数を使って緯度と経度を取得しています。 【手順】 1.地図表示に必要な htmlを用意します。(「MapFan」側で用意されています) 2.そのhtml ファイルの中で、Magicからデータを流し込む箇所に修正を加えていきます。 修正済みのhtml ファイルが、「SMARTSALES\template」フォルダ内にあります。 <MapFan_tplt.html の例> <!DOCTYPE html> <html> <head>
<meta http-equiv='content-type' content='text/html; charset=utf-8' /> <title>MapFanAPI</title> <style type="text/css"> #sample_map { width: <!$MG_width>px; height:<!$MG_height>px; } </style>
<script type='text/javascript' src='http://api-auth-pre.mapfan.com/v1/jslib/js/map/mfjsapi'></script> <script type='text/javascript'> //*** マーカー表示 *** //--- イニシャル処理 --- window.onload = function() { Mfapi.mapHost = 'api-map-pre.mapfan.com'; Mfapi.auth('<!$MG_ID>',task_func); } //--- 各種処理 --- function task_func(authStatus) { //--- 認証結果確認と地図作成 --- if( authStatus != 'success' ) {
return; }
<!$MG_名前>の箇所をタグといい、Magic 用に
追加したものです。このタグの箇所に Magic か らデータが流し込まれます。
3.Magicの中からタグの箇所にデータを流し込むためのプログラムを作成します。設定は以下の通りです。 設定① バッチタスクを作ります。 (プログラム 10.1 番、10.2 番) 設定② 入 出 力 フ ァ イ ル を 定 義 し ま す。 ファイル名は、「ユニークになるような html ファイル名」にします。 設定③ フォームを追加します。 インタフェースタイプは「M=マージ形式」にします。 設定④ 今 追 加 し た フ ォ ー ム の 「 フ ォ ーム 特 性」 内の 値 を 設 定し ま す。 ファイル名は、【手順 2】のhtml ファイル名です。 設定⑤ タ グ の 名 前 と 、 タ グ に 流 し 込 むデータを定義します。 上の図の「タグテーブル」欄で F5(ズーム)します。 html 内の「タグ名」と、それに流込むデータ(式も可)を定義します 設定⑥ フ ォ ー ム 出 力 コ マ ン ド を 使 っ て、データを出力します。 4.地図を表示します。 リッチタスクのフォーム内に、ブラウザコントロールを貼り付け、そのコントロールの中身をhtmlファイルにします。 (プログラム19.1.1番のフォーム)
本モジュールは応研株式会社様のDOP(Daijin ODDS Partner)様向けとなっております。 顧客大臣との連携については応研株式会社様各マニュアルを参照して下さい。
【モデル一覧】 # 名称 クラス 型 書式 1 【汎用】 2 Android用フォームサイズ リッチクライアント表示形式 フォーム - 3 iPhone5s 用フォームサイズ リッチクライアント表示形式 フォーム - 4 iPhone6Plus 用フォームサイズ リッチクライアント表示形式 フォーム - 5 【共通項目】 6 年月日 項目 日付 YYYY/MM/DD 7 時刻 項目 時刻 HH:MM:SS 8 権限 項目 数値 2 9 処理名 項目 文字 30 10 論理値 項目 論理 5 11 DUMMY 項目 文字 1 12 共通区分 項目 数値 1 13 メッセージ 項目 文字 30 14 顧客 CD 項目 数値 4 15 郵便番号 項目 文字 10 16 住所 1 項目 文字 40 17 住所 2 項目 文字 40 18 TEL 項目 文字 18 19 FAX 項目 文字 18 20 MailAddress 項目 文字 50 21 メンテナンスサイクル(月) 項目 文字 2 22 項目区分 項目 数値 5 23 項目連番 項目 数値 5 24 項目コード 項目 数値 5 25 項目名称 項目 文字 20 26 地図認証 ID 項目 文字 80 27 緯度・経度 項目 数値 3.7 28 距離 項目 数値 5.2 29 ファイル(フルパス) 項目 文字 256 30 レスポンス文字列 項目 文字 500 31 地図アクセスKEY 項目 文字 500 32 GEOCODE 項目 文字 500 33 地図情報文字 項目 文字 1000 34 地点情報 項目 文字 300 35 件数 項目 数値 3 36 【担当者マスタ】 37 担当者 CD 項目 数値 4 38 氏名 項目 文字 40 39 フリガナ 項目 文字 40 40 課 CD 項目 数値 1 41 課名 項目 文字 40 42 ユーザ ID 項目 文字 14 43 パスワード 項目 文字 14 44 【商品・保守マスタ】 45 商品 CD 項目 数値 4 46 名称 項目 文字 40
付録(モデル一覧・テーブル一覧・プログラム一覧)
47 商品区分 項目 数値 2 48 【メーカーマスタ】 49 メーカーCD 項目 数値 4 50 メーカー名 項目 文字 80 51 【消耗品サプライマスタ】 52 消耗品 CD 項目 数値 4 53 製品名 項目 文字 80 54 型番 項目 文字 30 55 単価 項目 数値 8 56 【請求先マスタ】 57 請求先 CD 項目 数値 4 58 名称 1 項目 文字 40 59 名称 2 項目 文字 40 60 カナ 項目 文字 40 61 【住居区分マスタ】 62 住居区分 CD 項目 数値 2 63 住居区分名称 項目 文字 40 64 【顧客ランクマスタ】 65 顧客ランク CD 項目 数値 2 66 顧客ランク名称 項目 文字 40 67 【顧客マスタ】 68 顧客 CD 項目 数値 4 69 顧客名 1 項目 文字 50 70 顧客名 2 項目 文字 50 71 【納入先データ】 72 納入先名 1 項目 文字 80 73 納入先名 2 項目 文字 80 74 FAX 項目 文字 12 75 登録日 項目 日付 YYYY/MM/DD 76 契約台数 項目 数値 2 77 当社営業担当者 CD 項目 数値 4 78 当社作業担当 CD 項目 数値 4 79 【貸借人データ】 80 商号 項目 文字 80 81 設立日 項目 文字 80 82 本社所在地 項目 文字 20 83 担当者 部署 項目 文字 40 84 担当者 氏名 項目 文字 40 85 代表者 項目 文字 60 86 住居年数 項目 数値 2 87 住居区分 項目 数値 2 88 生年月日 項目 日付 YYYY/MM/DD 89 【機器情報データ】 90 ユニークキー 項目 数値 9 91 機器情報コード 項目 数値 #9P0 92 購買累計金額 項目 数値 10 93 顧客ランク CD 項目 数値 2 94 納入日 項目 日付 YYYY/MM/DD 95 区分 項目 数値 2 96 保守開始日 項目 日付 YYYY/MM/DD 97 保守終了日 項目 日付 YYYY/MM/DD 98 リース開始日 項目 日付 YYYY/MM/DD 99 リース終了日 項目 日付 YYYY/MM/DD
100 【メンテナンス履歴】 101 メンテナンス履歴コード 項目 数値 #9P0 102 受付日 項目 日付 YYYY/MM/DD 103 作業予定日 項目 日付 YYYY/MM/DD 104 受付担当者 CD 項目 数値 4 105 作業担当者 CD 項目 数値 4 106 機器 CD 項目 数値 4 107 内容 項目 文字 40 108 次回作業予定日 項目 日付 YYYY/MM/DD 109 【営業履歴】 110 営業履歴コード 項目 数値 #9P0 111 最終アクション日 項目 日付 YYYY/MM/DD 112 次回訪問予定日 項目 日付 YYYY/MM/DD 113 経過月 項目 数値 3 114 訪問予定日 項目 日付 YYYY/MM/DD 115 訪問者 CD 項目 数値 4 116 【選択項目データ】 117 選択項目インデックス 項目 数値 10 118 選択項目区分 項目 数値 5 119 選択項目コード 項目 数値 10 120 選択文字 項目 文字 20
【テーブル一覧】 # 名称 カラム インデックス 外部キー データソース データベース 1 ■■■■■マスタ■■■ Default Database 2 顧客データ 7 1 0 MST_KOKYAKU Loal(Mst) 3 貸借人データ 5 1 0 MST_TAISYAKUNIN Loal(Mst) 4 担当者マスタ 2 2 0 MST_TANTOSHA Loal(Mst) 5 商品・保守マスタ 4 1 0 MST_HOSHU Loal(Mst) 6 請求先マスタ 6 1 0 MST_SEIKYUSAKI Loal(Mst) 7 消耗品サプライマスタ 2 1 0 MST_SHOMOHIN Loal(Mst) 8 メーカーマスタ 2 1 0 MST_MAKER Loal(Mst) 9 住居区分マスタ 3 1 0 MST_JUKYOKUBUN Loal(Mst) 10 顧客ランクマスタ 2 1 0 MST_KOKYAKU_RANK Loal(Mst) 11 項目マスタ 4 1 0 MST_KOMOKU Loal(Mst) 12 選択項目データ 4 2 0 MST_SENTAKUDATA Loal(Mst) 13 ■■■■■データ■■■ Default Database 14 機器一覧データ 15 1 0 DAT_KIKIJOUHOU Local(Tran) 15 メンテナンス履歴データ 16 1 0 DAT_MAINTENANCE Local(Tran) 16 営業履歴 11 2 0 DAT_EIGYO_RIREKI Local(Tran) 17 ログイン状況 10 2 0 DAT_LOGIN SQLite(Tran) 18 日報入力 19 2 0 DAT_NIPPOU Local(Tran) 19 ■■■■■顧客大臣■■■ 20 メンテナンス履歴 26 2 0 RIREKI3 KOKYAKU_DAIJIN 21 営業履歴 19 2 0 RIREKI4 KOKYAKU_DAIJIN 【プログラム一覧】 # 名称 フォルダ 公開名 1 メインプログラム 4 マスタデータ取得 5 履歴データ取得 6 項目名称取得 7 認証 ID取得 8 会社情報取得 9 MAP 作成 12 スタート Start 13 ログイン 14 トップメニュー 15 訪問予定検索 16 担当者選択 17 顧客一覧 18 顧客情報 19 当日メンテナンス地図表示 20 メンテナンス一覧 21 システム情報取得 22 ナビゲーション(トップメニュー) 23 ナビゲーション(顧客情報) 24 ナビゲーション(地図検索) 25 ナビゲーション(システム情報) 26 ナビゲーション(日報入力) 27 日報入力 29 顧客選択