在Sharepoint设计器的工作流编辑器中,我希望检索工作流程启动器的用户名/名称(即谁将其踢掉或触发工作流程) - 使用第三方产品(如Nintex Workflow 2007,我会使用它)相对容易像{Common:Initiator}这样的东西 - 但我似乎无法找到任何开箱即用的方法来使用共享点设计器和MOSS 2007.
更新
它看起来并不像OOTB支持这个相当明显的功能,所以我最终编写了一个自定义活动(如其中一个答案所示).我在这里列出了活动代码以供参考,虽然我怀疑在博客上可能存在一些这样的实例,因为它是一个非常简单的解决方案:
public partial class LookupInitiatorInfo : Activity { public static DependencyProperty __ActivationPropertiesProperty = DependencyProperty.Register("__ActivationProperties", typeof(Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties), typeof(LookupInitiatorInfo)); public static DependencyProperty __ContextProperty = DependencyProperty.Register("__Context", typeof (WorkflowContext), typeof (LookupInitiatorInfo)); public static DependencyProperty PropertyValueVariableProperty = DependencyProperty.Register("PropertyValueVariable", typeof (string), typeof(LookupInitiatorInfo)); public static DependencyProperty UserPropertyProperty = DependencyProperty.Register("UserProperty", typeof (string), typeof (LookupInitiatorInfo)); public LookupInitiatorInfo() { InitializeComponent(); } [Description("ActivationProperties")] [ValidationOption(ValidationOption.Required)] [Browsable(true)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties __ActivationProperties { get { return ((Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties)(base.GetValue(__ActivationPropertiesProperty))); } set { base.SetValue(__ActivationPropertiesProperty, value); } } [Description("Context")] [ValidationOption(ValidationOption.Required)] [Browsable(true)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public WorkflowContext __Context { get { return ((WorkflowContext)(base.GetValue(__ContextProperty))); } set { base.SetValue(__ContextProperty, value); } } [Description("UserProperty")] [ValidationOption(ValidationOption.Required)] [Browsable(true)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public string UserProperty { get { return ((string) (base.GetValue(UserPropertyProperty))); } set { base.SetValue(UserPropertyProperty, value); } } [Description("PropertyValueVariable")] [ValidationOption(ValidationOption.Required)] [Browsable(true)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public string PropertyValueVariable { get { return ((string) (base.GetValue(PropertyValueVariableProperty))); } set { base.SetValue(PropertyValueVariableProperty, value); } } protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { // value values for the UserProperty (in most cases you // would use LoginName or Name) //Sid //ID //LoginName //Name //IsDomainGroup //Email //RawSid //Notes try { string err = string.Empty; if (__ActivationProperties == null) { err = "__ActivationProperties was null"; } else { SPUser user = __ActivationProperties.OriginatorUser; if (user != null && UserProperty != null) { PropertyInfo property = typeof (SPUser).GetProperty(UserProperty); if (property != null) { object value = property.GetValue(user, null); PropertyValueVariable = (value != null) ? value.ToString() : ""; } else { err = string.Format("no property found with the name \"{0}\"", UserProperty); } } else { err = "__ActivationProperties.OriginatorUser was null"; } } if (!string.IsNullOrEmpty(err)) Common.LogExceptionToWorkflowHistory(new ArgumentOutOfRangeException(err), executionContext, WorkflowInstanceId); } catch (Exception e) { Common.LogExceptionToWorkflowHistory(e, executionContext, WorkflowInstanceId); } return ActivityExecutionStatus.Closed; } }
然后使用以下.action xml文件将其连接起来:
Bkwdesign.. 5
对于那些浏览本文并且现在使用SharePoint 2010的用户,现在在SharePoint Designer中支持工作流启动器变量OOTB.
数据源将是"工作流上下文",该字段当然是"发起人",您可以选择将其作为"显示名称","电子邮件","登录名"或"用户ID号"返回
对于那些浏览本文并且现在使用SharePoint 2010的用户,现在在SharePoint Designer中支持工作流启动器变量OOTB.
数据源将是"工作流上下文",该字段当然是"发起人",您可以选择将其作为"显示名称","电子邮件","登录名"或"用户ID号"返回