Sharepoint 2013工作流 - 如何从动态值构建String []

时间:2014-04-21 12:27:24

标签: sharepoint

如何从动态值构建String []?

我有一个启动表单,我收集电子邮件信息并作为字符串类型的参数传递给我的工作流程

function StartWorkflow() {
 var wfParams = new Object(); 
 //build array of objects
 var emailUsers = new Array();
 //cycle through viewmodel emails
 for (var i = 0; i < viewModel.SelectedEmails().length; i++)
       {
                    var a = new Object();
                    a["emails"] = viewModel.SelectedEmails()[i];
                    emailUsers.push(a);
        }
  wfParams['strSelectedEmailsHMgr'] = JSON.stringify(emailUsers);


**This all works fine!**

在我的SharePoint 2013工作流程中,我创建了一个名为dvJSON的动态Value变量。 接下来,我添加一个ParseDynamicValue活动,并将我的变量dvJSON设置为我的传入参数wfParams [&#39; strSelectedEmailsHMgr&#39;]。

接下来,我添加了一个WirteToHistory活动。 这是结果: dvJSON的值是[{&#34;电子邮件&#34;:&#34; tom.daria@fhlbcin.com"},{&#34;电子邮件&#34;:&#34; tom.daria @ fhlbcin.com&#34;},{&#34;电子邮件&#34;:&#34; tomdaria@yahoo.com"},{&#34;电子邮件&#34;:&#34; tomdaria @雅虎。 com&#34;},{&#34;电子邮件&#34;:&#34; tom.daria@fhlbcin.com"}]

接下来,我添加GetDynamicValueProperty并将ProperyName设置为&#34;电子邮件&#34; source dvJSONa result reciepients(string array variable)。

然后我部署我的解决方案。 当我开始工作流程时,我会看到自定义启动表单。 我选择了我的电子邮件用户,然后单击“开始”按钮以启动工作流程。

GetDynamicValueProperty失败。

以下是错误。

RequestorId: d8a1f1c4-4b83-da9c-0000-000000000000. Details: An unhandled exception occurred during the execution of the workflow instance. Exception details: System.InvalidOperationException: Looking up a value using a key is not supported on an instance of 'Microsoft.Activities.Dynamic.DynamicJsonArray'. at Microsoft.Activities.Dynamic.DynamicItem.TryGetValue(String key, DynamicItem& value) at Microsoft.Activities.Dynamic.DynamicValueBuilder.PathSegmentFactory.ObjectPathSegment.Get(DynamicItem obj) at Microsoft.Activities.GetDynamicValueProperty`1.Execute(CodeActivityContext context) at System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

由于 汤姆

1 个答案:

答案 0 :(得分:0)

我不知道为什么你需要准确输入字符串[],但是如果你只需要对每个电子邮件值做一些事情,你可以尝试使用循环遍历每个项目并在循环内部使用GetDynamicValue with argument' (iterator)/ emails',其中'iterator'是当前索引值,您需要在每次迭代时手动增加。 作为每次迭代的结果,您将获得包含电子邮件的新字符串值。