0

我有一个状态机工作流程和相关任务。任务可以被编辑,直到它满足一些条件。由 infopath 形成的任务。这些任务包含一个人员选择器字段。我用这些值分配了 3 个字段:

private void createTask_Operator_MethodInvoking(object sender, EventArgs e)
{
 this.createTask_Id = Guid.NewGuid(); 

 this.createTask_Properties.ExtendedProperties["ows_TaskDisplayName"] = "user1";
 this.createTask_Properties.ExtendedProperties["ows_TaskAccountId"] = @"SP\user1";
 this.createTask_Properties.ExtendedProperties["ows_TaskAccountType"] = "User"; 
}

这是有效的,我可以在我的表单中看到这些用户的价值。但是当我更改用户(例如:“user2”)并提交表单时,我无法检索手动更改的字段值,它总是返回“user1”的值。

private void onTaskChanged_Operator_Invoked(object sender, ExternalDataEventArgs e)
{
  this.onTaskChanged_AfterProperties = this.onTaskChanged.AfterProperties;
  this.onTaskChanged_BeforeProperties = this.onTaskChanged.BeforeProperties;

  // here I cannot retrieve changed field value, always returns: SP\user1
  this.workflowProperties.Item["UserName"] = 
      this.onTaskChanged_AfterProperties.ExtendedProperties["TaskAccountId"].ToString();
  this.workflowProperties.Item.Update();
}

请,如果你遇到这样的问题,请帮助我...

4

1 回答 1

0

我在理解您的问题时遇到了一些麻烦,但这里有两个答案。要成功设置人员选择器字段的值,您必须正确填充所有三个字段:DisplayName、AccountId 和 AccountType。AccountType 始终是“用户”,但其他两个必须与您的 AD 或您从中获取用户数据的任何位置保持一致。要从人员选择器中获取数据,最好的解决方案通常包括双重评估技巧eval(eval(person, "concat(my:AccountId, ';')"), "..")如果您的意思是您只获得列表中的第一个条目,这将正确处理多个条目。

于 2013-11-05T15:50:59.800 回答