locked
SharePoint Designer のワークフローで InfoPath フォームのフィールドの値を設定する RRS feed

  • 質問

  • いつも参考になっています。

    InfoPath でフォームを作成し、MOSS のサイト上のフォーム ライブラリに発行し、SharePoint Designer でそのライブラリにワークフローを割り当てました。
    このワークフローは、新しくアイテムが作成されたとき、[現在のアイテムにフィールドを設定する] アクションによってアイテムの特定のフィールド (myStatus) に値を設定します。
    myStatus フィールドは、<root><myStatus /></root> といったようにフォームのスキーマにも同じ名前で含まれるデータです。発行時に [プロパティの共有] で、フォームの myStatus 要素の値は、ライブラリの myStatus フィールドの値に対応するように設定してあります。

    さて、このような状況でフォームを作成して送信してワークフローを起動させると、実際には myStatus に値が設定されません。
    いろいろ試してみたところ、[プロパティの共有] の myStatus の設定のうち、[データシート ページまたはプロパティ ページを使用してこのフィールド内のデータを編集することをユーザーに許可する] オプション (発行時にのみ変更可能です) をオンにすると、ワークフローによってきちんと値が設定されることが判りました。

    これは、仕様の動作なのでしょうか?
    このオプションをオンにしてしまうと、ユーザーが値をプロパティの編集ページなどから変更できてしまい、できれば避けたいのです。
    このオプションをオンにすることなく、ワークフローでアイテムの特定の値を変更する方法があれば、ご教授願えないでしょうか。

    アイテムの内容 (つまり XML ファイル内の要素や属性の値) とライブラリの列の値は、元来は結びついているモノではないですよね。それを結びつけるのが、[プロパティの共有] だとは思うのですが、そこにあるオプションでこのような動作になるということは、やはりこのオプションはオンにするしかない、ということなのかもしれないな、とちょっと思ってはいるのですが。

    よろしくお願いします。
    2009年8月28日 7:35

回答

  • 残念ながら仕様です。
    「データシート ページまたはプロパティ ページを使用してこのフィールド内のデータを編集することをユーザーに許可する」
    を選択しないと、ワークフローは Infopath 内の値を変更できません。

    回避策としては、ユーザにプロパティの編集をさせない、という逃げ方はあると思います。
    通常、ビューに表示されるファイル名は「名前 (編集メニュー付きのドキュメントにリンク) 」列ですが、
    これを
       名前 (ドキュメントへのリンク)
       名前 (フォームで使用) 
    のどちらかに変更します。
    これで、プルダウンからのプロパティ編集はできなくなります。

    もちろん、/Forms/EditForm.aspx?ID=xx に直接アクセスされたらアウトではありますが、通常、
    ユーザはこの ID を知る術がありませんので、あまり気にしなくても良いでしょう。

    ただ、これをしてしまうと、削除も出来なくなります(笑)
    Infopath のフォームに「削除」ボタンを設けるなどして対応する必要がありますね。

    ※例えば、削除ボタンを押すとフィールド del に 1 を立てて保存して閉じる→この列をフラグにワークフローが起動してファイルを削除 等


    saruhiko
    • 回答としてマーク Lancelot_t 2009年9月2日 5:46
    2009年8月28日 11:36
  • 標準機能ではありませんが、オープンソースのソリューションを使用したら実装可能です。
    SharePoint Designerのカスタムアクティビティをインストールする必要があります。

    【Useful Sharepoint Designer Custom Workflow Activities】
    http://www.codeplex.com/SPDActivities

    InfoPathのデータ編集などの機能があります。
    色々な機能があるので、かなりお勧めです。

    利用方法は、下記のBlog(私のBlogです。。)を参考にしていただいたら実装できると思います。
    http://blog.sharepointissue.com/2009/02/useful-sharepoint-designer-custom.html

    • 回答としてマーク Lancelot_t 2009年9月2日 5:46
    2009年8月28日 13:02

すべての返信

  • 残念ながら仕様です。
    「データシート ページまたはプロパティ ページを使用してこのフィールド内のデータを編集することをユーザーに許可する」
    を選択しないと、ワークフローは Infopath 内の値を変更できません。

    回避策としては、ユーザにプロパティの編集をさせない、という逃げ方はあると思います。
    通常、ビューに表示されるファイル名は「名前 (編集メニュー付きのドキュメントにリンク) 」列ですが、
    これを
       名前 (ドキュメントへのリンク)
       名前 (フォームで使用) 
    のどちらかに変更します。
    これで、プルダウンからのプロパティ編集はできなくなります。

    もちろん、/Forms/EditForm.aspx?ID=xx に直接アクセスされたらアウトではありますが、通常、
    ユーザはこの ID を知る術がありませんので、あまり気にしなくても良いでしょう。

    ただ、これをしてしまうと、削除も出来なくなります(笑)
    Infopath のフォームに「削除」ボタンを設けるなどして対応する必要がありますね。

    ※例えば、削除ボタンを押すとフィールド del に 1 を立てて保存して閉じる→この列をフラグにワークフローが起動してファイルを削除 等


    saruhiko
    • 回答としてマーク Lancelot_t 2009年9月2日 5:46
    2009年8月28日 11:36
  • 標準機能ではありませんが、オープンソースのソリューションを使用したら実装可能です。
    SharePoint Designerのカスタムアクティビティをインストールする必要があります。

    【Useful Sharepoint Designer Custom Workflow Activities】
    http://www.codeplex.com/SPDActivities

    InfoPathのデータ編集などの機能があります。
    色々な機能があるので、かなりお勧めです。

    利用方法は、下記のBlog(私のBlogです。。)を参考にしていただいたら実装できると思います。
    http://blog.sharepointissue.com/2009/02/useful-sharepoint-designer-custom.html

    • 回答としてマーク Lancelot_t 2009年9月2日 5:46
    2009年8月28日 13:02
  • saruhiko 様、yama chan 様

    ご回答ありがとうございます。

    なるほど、仕様と認識しつつ、yama chan 様の解決方法を試してみたいと思います。

    ありがとうございました。
    2009年9月2日 5:47