SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Benutzerdefinierte Aktivität für SPD: Zugriff auf aktuelle Liste?

Unbeantwortet Dieser Beitrag hat 5 Antworten

Ohne Rang
216 Beiträge
Nachtschelm erstellt 2 März 2011 11:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Forum,
ich versuche mich gerade am Erstellen meiner ersten benutzerdefinierten Aktivität für den SharePoint Designer.

Folgendes soll die Aktivität machen: Ich habe eine Formularbibliothek, deren Eigenschaften ein Feld beinhaltet, in dem Usernamen als String abgelegt werden. Ich möchte mit meiner Aktivität, den Usernamen-String auslesen, das entsprechende Userobjekt dazu finden und letztendlich die dem User zugehörige Emailadresse in einer weiteren Spalte ablegen.

Ich habe mir zwei Properties erstellt und möchte nun in der execute-Methode auzuführende Aktionen implementieren. Nun habe ich folgendes Problem: Wie bekomme ich das Listenobjekt zu fassen, auf dem der Workflow läuft? Ohne dieses kann ich ja nicht auf die Spalten zugreifen.

Vielen Dank schon mal :-)

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 März 2011 12:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mache das mit einer dritten Property konfigurierbar. Im Designer kann man dann das gewünschte Element auswählen, also auch "Aktuelles Element". Schau Dir einfach an, wie Microsoft das macht, z.B. in der wss.actions

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 2 März 2011 18:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,
danke für den Tipp. Ich habe mir die wss.Action angeschaut und bin mittlerweile soweit, dass meine Aktivität im SPD erscheint. Leider wird diese beim Anklicken nicht in den Workflow übernommen. Jetzt stehe ich gerade etwas wie der Prophet vor'm Berg, weil nicht mal eine Fehlermeldung erscheint. Es passiert einfach... nichts. Kennst Du aufgrund dieses Verhaltens einen Ansatzpunkt, wo ich nach dem Fehler suchen kann? Welche Informationen sollte ich hier posten, damit eine Diagnose leichter fällt?

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 3 März 2011 08:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schwer zu sagen, aber ich nehme an, wenn die Aktion im Designer erscheint, dann hast Du eine *.actions im richtigen Ordner und Du hast einen passenden Eintrag in der web.config. Bleiben eigentlich nur noch fehlerhafte Parameterdeklarationen entweder im Code oder in der *.actions. Gibt das Log vielleicht noch was her?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 3 März 2011 09:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,
im normalen SharePoint-Log ist nichts zu finden. Ich vermute meinen Fehler an der Stelle, wo ich versuche das aktuelle Listenelement als Property zu bekommen. Ich poste mal den Code.
Zuerst in meiner activity.cs:

 

public static DependencyProperty listItemProperty = DependencyProperty.Register("listItem", typeof(SPListItem), typeof(Activity1));
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [ValidationOption(ValidationOption.Required)]
        [Browsable(true)]
        [Description("Referenziert das aktuelle Element")]


        public SPListItem listItem
        {
            get
            {
                return ((SPListItem)(base.GetValue(Activity1.listItemProperty)));
            }
            set
            {
                base.SetValue(Activity1.listItemProperty, value);
            }
        }
       ...
       SPListitem currentItem = listItem

 

Und nun der Part aus der .ACTIONS

 

<WorkflowInfo>
  <Actions Sequential="dann" Parallel="und">
    <Action Name="Finde Email zu User" ClassName="ActivityLibrary1.Acivity1"
            Assembly="ActivityLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=27dbafb626c0d59f" AppliesTo="list" UsesCurrentItem="true" Category="Listenaktionen">
      <RuleDesigner Sentence="Finde Person zu Personalnummer aus Spalte %1 und schreibe Email ins Spalte %2.">
        <FieldBind Field="idSourceColumn" Text="Spalte Personalnummer" DesignerType="WritableFieldNames" Id="1"/>
        <FieldBind Field="emailTargetColumn" Text="Spalte Email-Adresse" DesignerType="WritableFieldNames" Id="2"/>
      </RuleDesigner>
      <Parameters>
        <Parameter Name="listItem" Type="Microsoft.SharePoint.Workflow.SPItemKey, Microsoft.SharePoint" Direction="In" DesignerType="Hide" />
      </Parameters>
    </Action>
  </Actions>
</WorkflowInfo>

 

Wie gesagt, mir fehlt da absolut das know how, kannst Du da evtl. den Fehler erspähen?

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 3 März 2011 09:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du mußt den Parametr für das Element explizit setzen, d.h. Du mußt es in den "Sentence" als %3 aufnehmen. Außerdem mußt Du eine String-Property "ListId" bereitstellen, die automatisch mit dem ItemKey besetzt wird. Dazu brauchst Du auch ein passendes FieldBind.

Schaue einfach nochmal in die wss.actions, z.B. bei der Aktion "Listenelement kopieren".

Viele Grüße
Andi
af @ evocom de
Blog