Upload
jameslrishe
View
923
Download
8
Embed Size (px)
Citation preview
R2-3: InfoPathウェブフォームでSharePointの機能をアップ
Data-driven Design: 4つの技法InfoPathを用いたスケーラブル
SharePointソリューション
2012 年 6 月 9 日
Qdabra Software ( キューダブラ )
ジェイムス リシュInfoPath MVP
目次• データ駆動型デザインとは ? • データ駆動型デザインの利点• データ駆動型デザインの 4 つの例• デモ– 調査フォームの作成– ローカリゼーション: UI 言語の切り替えを追加– Web サービス : XML データを SQL のテーブルに
マッピング– 繰り返しデータをテーブルにコピー
「データ駆動型デザイン」とは ?
• データに基づいて動的な挙動を行うソリューションの設計
• フォームの挙動をハードコードしない
• ひたすら頑張るのではなく、賢く省力化する
データ駆動型デザインの利点• 開発
– 仕様変更に際して、設計変更の労力が少なくてすむ。– メインテナンスの簡略化– ロジックの簡略化– 基本設計は一回で、アップデートはいつでも簡単– コードへの依存を減らす
• 統一性– プロセスが複数ある場合にも、統一されたレポートを作
成しやすい。同一のフォーマットを使っているから。• 信頼性
– アップデート時にシステム停止なしで移行可能
InfoPath: データ駆動型デザインを実現する便利なツール
• Office Professional Plus に含まれる• フォームは SharePoint に展開でき、ブ
ラウザで入力できる• 電子フォーム作成の GUI :内部ロジッ
ク、データ検証、 XML データ表現を含む
• XML web サービスやその他の XML データ接続を幅広くサポートする
InfoPath バリュー・プロップ
• ネイティブ XML サポート• 使い慣れた Office UI• Web サービスにコードなしで接続• クライアント側でのインストールは必須で
ない• SharePoint ページを、 InfoPath Web パーツで
デザイン可
データ駆動型デザインの例電子フォーム
• データフィールド:色々な値を扱える– 例:調査フォームの質問を変更する
• ラベル:ハードコードしない– 例: フォームの変更なしてで、 UI 言語を追加する
• データクエリは動的に、データ送信は疎結合で– 本当に必要なデータのみを取ってくる– XML を送信し、 Web サービスでマッピングする
• コードを書かない、少なくともフォーム特有のコードを書かない– XPath に依存しない共通ライブラリを使用– あるいは、ロジックを Web サービスの中に置く
“ コードを避ける ! 密結合を避ける !”
例 : データソース• 「質問」フォームを使う ?
– フィードバック、調査、チェックリスト、テスト、質問表など• 質問が変わった場合には… ?
– フォーム内で変更すると、昔のデータが失われる– コンテントタイプによるサイド・バイ・サイドは、良さそうな技法だが
…– しかし!フォームが急増し、メンテナンスコストの増大を招く
• それぞれに新フォームを作らないこと!– 一つのフォームですべての変化形を扱う。それがデータ駆動
• 技法– データソースを汎用に。ファイル名などをハードコードしないように– フォームロード時に、質問を ID をともに取り込む– 質問セットの管理に別プロセスを作成
デモシナリオ: 調査• たくさんの調査
– たくさんの質問事項• たくさんの質問事項
– たくさんの答え• 目標
– すべての調査を一つのフォームで実現• なぜ調査ごとに別のフォームを作らないか
– メンテナンスが困難 ( 編集、発行の手間が増える )
– それぞれを作るのに時間がかかる– 結果の集計やマージができない– 質問の統計が取れない– 質問が変わった場合に、古い調査表を開けな
くなる
なぜデータをあらかじめ投入するのか ?
• フォームの記入が速い• より統一的なデータ入力が期待できる• 入力値のコントロールが可能• ユーザへのヘルプとしてデータ例を見せる• フォームテンプレート数を減らす• フォームで収集したデータを報告可能なものにする
同一テンプレートで作成されたフォームデータ (XML ファイル ) は、スキーマ・レポートを共有する。 SQL でレポートを一つ書けばすべてに適用可能!
データ自動投入の手法• フォームのサンプルデータ
– 規定値データ : うまくデータソースを設計する要あり– XML リソースファイル : データの追加削除が容易
• インターネット上のデータ– XML config ファイル : 再発行せずにデータの変更が可能– SharePoint リスト / ライブラリ : データ更新の分散化
• ビジネスデータ: SQL 、または Web サービス– SQL データベース : 内部システムからデータ取得– Web サービス : オンラインデータベースからデータ取得
規定値データは良いデザインに繋がる
• 理由 : データソースをより良く構築することになる ( ハードコードしない )
• 技法 : データ ⇒ 規定値
2つのフォームでの手法= Data-Driven Design
質問を表示するフォーム Config ファイルから読み込み…
デモ• データ駆動型 データソースの作成
– ラボ 1: データ駆動型の調査フォームを作成– ラボ 2: 質問事項をフォームの外で設定– ラボ 3: 別フォームで質問事項を編集
例 : ラベルを複数言語で• 言語ごとに別のフォームをを作らない
– 二度手間、メンテナンスコストの増加• 複数言語をサポートするフォームを作成
– 言語の追加、ラベルの変更 ⇒ 再発行なしで可能• どうやってやるの ? 意外に簡単 !
– UI 言語データをセコンダリ config ファイルに格納• 言語 ID• ラベル ID• ローカリゼーション文字列
– 式ボックスの算出値を使用– さらに、 UI文字列編集のためのフォームを作成
• デモ : 複数 UI 言語による調査フォーム
経費報告書テンプレート複数 UI 言語用
デモ• 複数 UI 言語に対応した経費報告書–経費報告のローカリゼーション– 言語文字列編集用のフォーム
例 : Web サービス• フォームにあらかじめデータを設定する?
SQL に送信する ?– もちろん !
• クエリをハードコードしないこと!– でないとメンテナンスは悪夢と化す…
• 送信を密結合で行わないこと! データ喪失が発生しやすい– データ移行は悪夢と化す…
• こちらの技法を使え!– UDC ファイル– REST クエリと動的クエリ文字列– フォーム全体を XML の「塊」として送信するこ
と。構成可能なマッピングファイルに従って、リレーショナルテーブルに必要なデータを抽出
• デモ– 経費報告書を SQL にマップする
良い Web サービスとは ? XML クライエントと SQL データベー
スを、緩やかに結合するデータブリッジ
デモ• 経費報告書を SQL にマップ• データを SQL からクエリ
例 : コード拡張• ベストプラクティス(お勧めの手法) : コードを
フォーム内に書かない!– メンテナンスに、コード開発者が必要になる– コード開発者は、 XPaths をフォーム内に書きがちである
• フォーム数が増えてくると… (100以上のフォーム ?)– 各フォームが少しずつ違ったコードを持つ– 費用喰いの悪夢となる…
• 技法– 共有ライブラリを作成 ( あるいは Qdabra の qRules 使用 ) – データソース XPaths をルール経由でコマンドに渡す– あるいは、必要な機能を備えた Web サービスを使う
( 例 : Excel REST サービス )• デモ
– qRules コマンド : 繰り返しテーブルに複数項目を挿入
カスタムコードの場合
デモ• 繰り返しデータのコピー–規定値データとセット– qRules挿入
複数リストへのマッピング: SharePoint リストをデータベースとして使用
• SubmitToSharePointList の改善: より簡単に複数リストへのマッピングを可能にSharePoint への保存 : ビデオや巨大ファイルをアップロード
• SaveToSharePoint の改善: バックグラウンドでのアップロード• バックグラウンドでアップロード中にもフォームの編集が可能• 『処理中』インディケータが、完了%を表示
文字列コマンド: 文字列操作のための新しいコマンド群• CompareStrings: 文字列比較。規定値では大文字小文字の違いを無視• PadString: 文字列の右あるいは左に指定文字を埋め込み• GetIndex: 検索文字列の位置を返す• RemoveFromString: 指定文字列を削除• ReplaceString : 指定文字列で置換。正規表現による複雑なパターンマッチングも可能 !• SetCase: 大文字に、あるいは小文字に変換• TrimString: 指定文字を文字列頭あるいは文字列末より削除
算術コマンド : 計算のための新しいコマンド群• 三角関数コマンド : Acos, Asin, Asin, Cos, Cosh, Tan, Tanh 等• 切り捨て、切り上げ、丸め: フィールド値を整数に変換• Pow, Exp, Sqrt• TBD: 会計機能: 支払い、レート、内部収益率等
Qdabra製品紹介 : qRules v4.2 、 6月発売予定
まとめ : Data-Driven Design はコスト削減に有効
• データソース– 一つのテンプレートを多様に使用
• ビュー– 複数 UI 言語では、ラベルを式ボックスの算出値で表示
• コード– できるだけ、やめましょう– どうしても必要ならば、 xpath を限定しない共通ライブラリで
• Web サービス– InfoPath では疎結合のシステムが可能 (XSD を強制 )
すなわち…そうしなくても良い ! – クエリフィルタを、 Web サービスで解析されるパラメタとして
手渡し– データを塊として送信し、 Web サービス内でマッピング
本日のサンプルパッケージ ? 当講演で用いたサンプルパッケージに興味がある方は…• Microsoft の PinPoint サイトで
– http://pinpoint.microsoft.com/en-US/home– Qdabra で検索して、レビューを書く
• または、 Twitter でフェードバックをつぶやく– @QdabraSoftware
• または、 facebook.com/qdabra を「いいね ! 」する
本日のサンプルパッケージをお送りします– 発表スライド– Data-driven サンプル : 調査フォーム、複数 UI 言語による経費報告書– qRules とサンプルフォーム: 繰り返しデータをテーブルにコピー– 3 つの無料ラボ : データソース技法の紹介– ボーナスラボ: InfoPath チェックリストフォーム
InfoPath のあらゆる知識がここに集約
InfoPath ソリューション開発の実績 No1 最も多くの InfoPath MVPs 最大のリソース: ブログ、ツール、フォーム等
最先端のトレーニングクラス 毎週の無償webinars
InfoPathDev フォーラム 2003年創立• 50k ユニークビジター / 月• かならずお答えします
どうも有難うございました