6

शेयरपॉइंट डिजाइनर के वर्कफ़्लो संपादक में मैं वर्क फ्लो इनिशिएटर (यानी इसे किसने लात मार दिया या वर्कफ़्लो ट्रिगर किया) का उपयोगकर्ता नाम/नाम पुनर्प्राप्त करना चाहता हूं - यह तीसरे पक्ष के उत्पादों जैसे कि निनटेक्स वर्कफ़्लो 2007 (जहां मैं हूं) का उपयोग करना अपेक्षाकृत आसान है। {आम: सर्जक} की तरह कुछ का प्रयोग करेंगे) - लेकिन मैं बॉक्स से बाहर किसी भी तरह से 2007शेयरपॉइंट डिजाइनर के वर्कफ़्लो संपादक में मैं वर्कफ़्लो इनिशिएटर उपयोगकर्ता नाम कैसे प्राप्त करूं?

अद्यतन

यह नहीं है इस का उपयोग करते हुए शेयर बिंदु डिजाइनर और MOSS करने के लिए खोजने के लिए नहीं कर पा रहे ऐसा लगता है कि इस स्पष्ट सुविधा को ओओटीबी समर्थित है, इसलिए मैंने एक कस्टम गतिविधि लिखना समाप्त कर दिया (जैसा कि उत्तर में से एक द्वारा सुझाया गया है)। मैं हालांकि मुझे लगता है यहाँ संदर्भ के लिए गतिविधियों कोड सूचीबद्ध किया है वहाँ शायद इस के कुछ उदाहरण ब्लॉग पर वहाँ के आसपास चल के रूप में यह एक बहुत तुच्छ समाधान है कर रहे हैं:

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 version="1.0" encoding="utf-8"?> 
<WorkflowInfo Language="en-us"> 
<Actions> 
    <Action Name="Lookup initiator user property" 
ClassName="XXX.ActivityLibrary.LookupInitiatorInfo" 
Assembly="XXX.ActivityLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXX" 
AppliesTo="all" 
Category="WormaldWorkflow Custom Actions"> 
     <RuleDesigner Sentence="Lookup initating users property named %1 and store in %2"> 
      <FieldBind Field="UserProperty" DesignerType="TextArea" Id="1" Text="LoginName" />    
      <FieldBind Field="PropertyValueVariable" DesignerType="ParameterNames" Text="variable" Id="2"/> 
     </RuleDesigner> 
     <Parameters> 
      <Parameter Name="__Context" Type="Microsoft.Sharepoint.WorkflowActions.WorkflowContext, Microsoft.SharePoint.WorkflowActions" Direction="In"/> 
      <Parameter Name="__ActivationProperties" Type="Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties, Microsoft.SharePoint" Direction="In"/> 
      <Parameter Name="UserProperty" Type="System.String, mscorlib" Direction="In" /> 
      <Parameter Name="PropertyValueVariable" Type="System.String, mscorlib" Direction="Out" /> 
     </Parameters> 
    </Action> 
</Actions> 
</WorkflowInfo> 

उत्तर

2

मुझे नहीं लगता कि यह बॉक्स के बाहर शेयरपॉइंट डिज़ाइनर में करना संभव है। आप उत्प्रेरक को प्राप्त करने के लिए शायद एक कस्टम कार्रवाई लिख सकते हैं, लेकिन मुझे विश्वास नहीं है कि यह एसपीडी वर्कफ़्लो इंटरफेस के माध्यम से खुलासा हुआ है।

सबसे अच्छा संभवतः आप ऐसा कर सकते हैं जिसने सूची में आइटम बनाया या संशोधित किया है, लेकिन यह उन मामलों को संभाल नहीं पाएगा जहां वर्कफ़्लो मैन्युअल रूप से चलाया गया था।

+0

अब SharePoint 2010 OOTB में समर्थित है - नीचे मेरा उत्तर देखें – Bkwdesign

1

मैं केवल एसपीडी का उपयोग करके इस के लिए एक सरल लेकिन बहुत परिष्कृत समाधान के बारे में सोच सकता हूं। वर्कफ़्लो चरणों में बस एक द्वितीयक सूची में एक टेस्ट आइटम बनाएं (शायद एक कार्य सूची जो वर्कफ़्लोआईडी और आइटम आईडी गुणों को रिफ्रेंस के लिए संग्रहीत करती है) और फिर उस सूची में अपने वर्कफ़्लो में एक लुकअप करें, यह देखने के लिए कि उस आइटम का निर्माता कौन है, मूल्य वर्तमान वर्कफ़्लो प्रारंभकर्ता होगा।

4

उन लोगों के लिए जो इस आलेख में Google हैं और अब SharePoint 2010 का उपयोग कर रहे हैं, वर्कफ़्लो प्रारंभकर्ता चर अब SharePoint Designer में OOTB का समर्थन करता है।

डेटासोर्स "वर्कफ़्लो संदर्भ" होगा और फ़ील्ड निश्चित रूप से "आरंभकर्ता" होगा और आप इसे "प्रदर्शन नाम", "ईमेल", "लॉगिन नाम" या "उपयोगकर्ता आईडी" के रूप में वापस कर सकते हैं संख्या "

0

कस्टम गतिविधि समाधान केवल काम करता है यदि आप मॉस के साथ काम कर रहे हैं, अगर आपके पास केवल WSS 3.0 है तो आप अपने वर्कफ़्लो में एक कदम अधिक रख सकते हैं और किसी भी जानकारी के साथ कस्टम टिप्पणी फ़ील्ड सेट कर सकते हैं, यह अंतिम संशोधित व्यक्ति बनाता है वर्कफ़्लो इनिशिएटर के रूप में बदलने और बनने के लिए, फिर आप किसी भी निर्णय लेने के लिए संशोधितबी फ़ील्ड का उपयोग कर सकते हैं।

संबंधित मुद्दे