OData__ModerationStatus 列 AKA "Approval Status" の値を 3 つの異なる方法で更新しようとしましたが、機能するのは 1 つだけです。VS 2013 を使用してツールボックスからワークフロー更新アイテム アクティビティを実行すると、ヘッダーに X-RequestDigest がなく、承認ステータスの更新が許可されず、セキュリティ検証エラーが発生することがわかります。エラーはヘッダーの欠落に関連していると思います。UpdateListItem のコードは次のとおりです。
RequestHeaders = (InArgument<DynamicValue>) ((Activity<DynamicValue>) new SetDynamicValueProperties()
{
Properties = {
{
"If-Match",
(InArgument) new InArgument<string>("*")
},
{
"X-HTTP-Method",
(InArgument) new InArgument<string>("MERGE")
},
{
"Accept",
(InArgument) new InArgument<string>("application/json;odata=verbose")
},
{
"Content-Type",
(InArgument) new InArgument<string>("application/json;odata=verbose")
}
}
}),
RequestContent = (InArgument) listItemProperties,
そのため、2 つの SendHttp アクティビティを使用しました。1 つは URL siteurl/_api/contextinfo の POST を使用して X-RequestDigest を取得し、2 番目の POST は次のヘッダーと Body を使用して取得しました。ヘッダ:
X-RequestDigest:[FormDigestValue from the previous POST]
受け入れる: アプリケーション/json; odata=verbose Content-Type: アプリケーション/json; odata=verbose IF-MATCH: * X-HTTP-Method: MERGE
BODY: [以下の3つを試しました]
String.Format("{ '__metadata': { 'type': '" + type + "' },'OData__ModerationStatus':'0' }")
{ '__metadata': { 'type': 'SP.Data.Shared_x0020_DocumentsItem' }, 'OData__ModerationStatus':'0' }
BuildDynamicValue アクティビティを使用して RequestContent を設定しました。
3 つすべてで Microsoft.SharePoint.SPException: Invalid text value というエラーが発生します。テキスト フィールドに無効なデータが含まれています。他のフィールドを使用すると機能します.FiddlerまたはAdvanced Rest Clientを使用すると、値が更新されます.
誰かがREST呼び出しを介して機能する理由を理解したり説明したりできますが、VSとUpdateItem/HTTPSendを使用して値を設定することはできません.
タイトルを更新するワークフローが成功した画像を含めました