トップ回答者
SharePoint Designer のワークフローで InfoPath フォームのフィールドの値を設定する

質問
-
いつも参考になっています。
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