locked
InfoPath の受信データ接続(SharePoint 連携)について RRS feed

  • 質問

  • お世話になります。

    今現在以下サイトに記載されている情報で詰まっている状況です。

    http://crie-illuminate.spaces.live.com/Blog/cns!2FF2FFB723A043DA!235.entry

    1ページ目のみのデータに限られるため、1ページに表示する件数を

    増やす必要があり、初期表示が遅くなることが想定されております(デフォルトのMAX100件を増やすと)

    こういった事象の場合の、代替案や回避方法などありましたらご教授頂ければと思います。

    2010年5月14日 7:19

回答

  • おっしゃる通りです!パフォーマンスが心配です。

    弊社内では同時アクセスユーザーが少ないところでは、現在約 300 アイテムほどありますが、ストレスなく使用できています(2、3秒の待ち時間くらいです)。

    ただ、同時アクセスが多い部分では、Web サービスを作成することで解決しております。

    SharePoint のリスト / ライブラリからパラメータとして渡された文字列が特定の列に含まれているアイテムのみを返す Web サービスを開発しました(10行程度のコーディングですが・・・)。 

     

    ポイントはフォームにデータ接続を作りすぎないことです。

    複数のデータ接続を作成する必要がある場合、データを取得するタイミングをずらす(フォームを開く際ではなく、ボタンをクリックしたり、入力したりしたタイミング)事が重要です。

    たとえ2秒のオーバーヘッドでも同じタイミングで5個のデータ接続が実行されると、単純計算で10秒待ち時間が発生してしまいますから・・・

    2010年5月14日 8:53
  • Infopath のデータ接続で値を取ろうとすると、真正直に「全件」取得してしまうのが

    レスポンス低下の原因です。

    ですので、コードでSharePoint標準のWebサービス経由で、条件に該当するアイテム

    のみを取得すれば、リスト側に5000件アイテムがあっても、問題にはなりません。

    http://sharepoint.boo.jp/index.php?e=427

    ただ、↑のサンプルはあくまでJAVASCRIPT ですので、Infopath のJSCRIPTの場合、

    ちょっとアレンジする必要があります。(処理は基本は変わりません)

    今週末にでも、ブログにまとめようかと思いますので、お待ち下さい。


    saruhiko
    2010年5月14日 10:03

すべての返信

  • おっしゃる通りです!パフォーマンスが心配です。

    弊社内では同時アクセスユーザーが少ないところでは、現在約 300 アイテムほどありますが、ストレスなく使用できています(2、3秒の待ち時間くらいです)。

    ただ、同時アクセスが多い部分では、Web サービスを作成することで解決しております。

    SharePoint のリスト / ライブラリからパラメータとして渡された文字列が特定の列に含まれているアイテムのみを返す Web サービスを開発しました(10行程度のコーディングですが・・・)。 

     

    ポイントはフォームにデータ接続を作りすぎないことです。

    複数のデータ接続を作成する必要がある場合、データを取得するタイミングをずらす(フォームを開く際ではなく、ボタンをクリックしたり、入力したりしたタイミング)事が重要です。

    たとえ2秒のオーバーヘッドでも同じタイミングで5個のデータ接続が実行されると、単純計算で10秒待ち時間が発生してしまいますから・・・

    2010年5月14日 8:53
  • Infopath のデータ接続で値を取ろうとすると、真正直に「全件」取得してしまうのが

    レスポンス低下の原因です。

    ですので、コードでSharePoint標準のWebサービス経由で、条件に該当するアイテム

    のみを取得すれば、リスト側に5000件アイテムがあっても、問題にはなりません。

    http://sharepoint.boo.jp/index.php?e=427

    ただ、↑のサンプルはあくまでJAVASCRIPT ですので、Infopath のJSCRIPTの場合、

    ちょっとアレンジする必要があります。(処理は基本は変わりません)

    今週末にでも、ブログにまとめようかと思いますので、お待ち下さい。


    saruhiko
    2010年5月14日 10:03
  • Mizobata さんと saruhiko さんがすでに回避方法を提示されていますが、比較的簡単といわれる GetListItems メソッドと XML Query の組み合わせによる Web サービス利用もちょっと敷居が高いな、、、と思われる方も多いと思います。

    そこで出たのが Qdabra 社の WSSP という Web サービス & XML Query 作成ツールです。

    これは XML Query の記述の部分を InfoPath を使ったツールで作成し、その Query 文をデータ接続ウィザードで貼り付けるものです。
    専用 Web サービスのインストールが必要になりますが、絞込み条件となる値はユーザーが InfoPath フォームで入力した値を使ってダイナミックに変更できるので、柔軟性が高いのが特徴です。

    http://www.qdabra.com/en/products/WSSP.aspx (英語です)

    日本語による紹介(サイト違いますが、Qdabra社運営のコミュニティサイトです)
    http://www.infopathdev.com/files/folders/wssp_v23_japanese/default.aspx

    日本語での動画説明 (YouTube)
    WSSP デモ パート1
    WSSP デモ パート2

    この問題、InfoPath でフォームを作成するときにかならず出てくる話なので、実は弊社は Qdabra 社と提携して3年ほど前から日本語版の開発をお願いして、日本語版、、あるんです。
    しかし、まだ日本での InfoPath 利用が熟していない、利用したとしても開発込みで SIer さんに依頼する形態が多いので、なかなか広く使われていないのが実情です。(この話、、、しちゃってよかったのか、、、でも、事実だから仕方ない。Qdabara の日本語の解説ページ、ずいぶん奥に移ってしまったのもそのせいだと思います。) InfoPath のエンドユーザーによる利用が増えると状況変わるかとも思うのですけどね。

    トライアル版もあるので、テスト環境などで試してみてはいかがでしょう。トライアルの Product のドロップダウンリストの下のほうにある [WSSP V2.3 Free Trial Versiong(Japanese)] が日本語版になります。弊社も絡んでいるので、ちょっと宣伝みたいになってしまって申し訳ないです。。。


    Shigeru NUMAGUCHI Director CRIE-ILLUMINATE INC. (JAPAN)
    • 回答の候補に設定 山本春海 2010年5月21日 8:18
    2010年5月14日 12:11
  • 皆様

    ご返信ありがとうございます。
    開発畑の人間ではないので、中々難しいなと感じておりますが、
    Mizobata様の300件の情報など参考になります。
    WFEの性能にもよると思いますが、まずはここの目標にテストを
    してみたいと思います。
    それ以上の拡張が必要な場合には、開発(コーディング)や
    アドインも検討したいと思います。

    2010年5月17日 1:40