2

入力者が人を指定する必要がある InfoPath フォームがあります。ワークフローは後でこれらの人にタスクを割り当てます。私が探しているのは、SharePoint のユーザー フィールドのようなユーザー ピッカーですが、InfoPath で使用できます。これを行うためのフォームを既に設計しており、入力者が名前または電子メールを入力すると、フォームに site.allusers グループからの結果が一覧表示されます。

問題は、フォームに追加する必要がある人物が、この特定のサイト コレクションに以前にアクセスしたことがない場合です。彼らのアカウントは、AllUsers リストには表示されません。

オブジェクト モデルのどこで、SharePoint で認証できるユーザーを検索できますか?

4

2 に答える 2

1

ここでの問題は、ユーザーのリストが見つかったとしても、ユーザーがユーザー情報リストに存在しない場合、ワークフローはアクションをトリガーしないことだと思います。

ユーザーがユーザー情報リストに存在しない場合、ユーザーは SharePoint に存在しないため、SharePoint オブジェクト モデルを介してユーザーを見つけることができません。他の方法でそれらを見つける必要があります。

したがって、基本的には、SharePoint サーバーで認証がどのように構成されているかによって異なります。

FBA を使用している場合、SharePoint で認証できるユーザーは、どこかの SQL データベースに存在する必要があります。Membership.Providerは、FBA メンバーシップ プロバイダー (SqlMembershipProvider であるか他のものであるかに関係なく) へのフックを提供します。その後、次のようなメソッドを使用できます

Membership.Provider.GetUser(username)

ユーザーが存在するかどうかを確認します。また、ユーザーをループしたり、ユーザー ピッカーに表示できる既存のユーザー名をすべて検索したりすることもできます。

Windows 認証を使用している場合は、潜在的なユーザーを見つけるために AD を調べる必要があります。DirectoryEntryオブジェクトが必要になります。特定の AD グループのユーザーだけが SharePoint にアクセスできると思いますか? その場合は、DirectoryEntry オブジェクトを使用してそのグループを分離し、ユーザーをループして、ユーザー ピッカー用のデータ ソースを取得します。

上で述べたように、どちらの方法でも可能なユーザーが得られますが、ユーザーがログインしていない場合、ワークフローは機能しません。ワークフローは、ユーザー情報リストに存在するユーザーに対してのみ適切に機能します。

誰かが SharePoint に存在しないユーザーを選んだ場合、おそらくコードで作成する必要があります。これを行う安全な方法は、SPWeb.EnsureUserを使用することです。

指定されたログイン名が Web サイトの有効なユーザーに属しているかどうかを確認し、ログイン名がまだ存在しない場合は、それを Web site.site に追加します。

本当に、あなたの質問に答えるには、どこにもありません。どこから来ているのかを探す必要があります。

于 2010-11-10T19:47:35.413 に答える
1

InfoPath で OTB を使用して、SharePoint 環境を指すように構成しないのはなぜですか?

http://www.sharepointassist.com/2009/02/27/adding-a-contact-selectorpeople-picker-to-an-infopath-form/

AD 統合を使用して MOSS を実行している場合、AD 同期が有効になっていれば、ドメイン内の全員を自動的に取得する必要があります。

于 2011-04-08T22:30:10.970 に答える