Blog » Tworzenie nowej akcji w Nintex

Tworzenie nowej akcji w Nintex

 
Tworzenie nowej akcji w Nintex
W poprzednim poście przedstawiłem różne alternatywne narzędzia jeśli chodzi o tworzenie przepływów pracy z poziomu przeglądarki internetowej. Narzędzia te mimo tego, że oferują możliwości znacznie większe niż SharePoint Designer czasami nie spełniają naszych oczekiwać. W dalszej części skupię się na Nintex WorkFlow 2007 i pokażę w jaki sposób można samemu tworzyć akcje, które wykorzystywane są później w przepływach pracy.

Nintex zbudowany jest w oparciu o platformę Workflow Foundation. Za komunikację pomiędzy obszarem tworzenia przepływu pracy w Nintex a silnikiem Workflow Foundation odpowiadają adaptery. Stworzenie nowego bloczka/akcji tak naprawdę polega na stworzeniu standardowej akcji do Workflow i odpowiedniego adaptrera. Na prostym przykładzie polegającym na stworzeniu bloczka, który w chwili uruchomienia dodaje wpis do EventLoga zostanie przedstawiony sposób tworzenia nowej akcji.

1. W VisualStudio zakładamy nowy projekt typu Workflow Activity Library

Następnie należy zmienić nazwę akcji z Activity1 na np.: EventLogActivity oraz zmienić dziedziczenie klasy z SequenceActivity na Activity.
 
2. Aby uruchomić kod w chwili wykonywania akcji należy umieścić go w przeciążonej metodzie Execute:

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
        //Kod który ma zostać wykonany podczas uruchomienia akcji
        return base.Execute(executionContext);
}

Całość wygląda następująco:

 public partial class EventLogActivity: Activity
 {
    public EventLogActivity()
    {
        InitializeComponent();
    }
 
    protected override ActivityExecutionStatus                                         Execute(ActivityExecutionContext executionContext)
    {
         EventLog myLog = new EventLog("Application");
         myLog.Source = "EventLogDemo";                                                    myLog.WriteEntry("Nintex: Wszystko sie udało !!!!",                                EventLogEntryType.Error, 1001, 1);
         return base.Execute(executionContext);
    }
}

Tak naprawdę już po tych dwóch krokach można powiedzieć, że prosta akcja została stworzona. W następnej kolejności trzeba napisać adapter, który wczyta akcje do Nintexa.

3. Aby stworzyć adapter trzeba przede wszystkim zainstalować Nintex SDK, w zawartości którego znajduje się specjalny szablon projektu dla VisualStudio. Domyślną ścieżką gdzie znajduje się szablon po instalacji jest:

c:\Program Files\Nintex\Nintex Workflow 2007 SDK\Support\NW2007ActionProjectTemplateVS2008.zip

Należy go skopiować do katalogu:

c:\Documents and Settings\[username]\My Documents\Visual Studio 2008\Templates\ProjectTemplates\Visual C#\ NW2007ActionProjectTemplateVS2008.zip

Ważne jest to aby po skopiowaniu nie rozpakowywać archiwum *.zip i zrestartować VisualStudio. Po tej operacji w sekcji My Tempates pojawia się nowy projekt, który należy dołączyć do Solucji.
              

Cały projekt w Solution Explorer wygląda następująco:
 
4. Pliki graficzne i stronkę *.aspx trzeba przekopiować do katalogu 12 na serwerze więc można już w tym momencie zadbać o sposób kopiowania - w tym celu najlepiej  utworzyć stworzyć strukturę katalogów prezentowaną poniżej:
 

Została też wprowadzona mała zmiana w pliku Nikolajuk.EventLogAdapterDialog.aspx. Tag Inhredits został zmieniony tak, żeby odwoływał się do biblioteki posługując się pełną nazwą:

Inherits="Nikolajuk.EventLogAdapter.EventLogAdapterDialog, Nikolajuk.EventLogAdapter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5b85e14bce600c09"

5. W nowo utworzonym projekcie brakuje referencji do bibliotek:

using Microsoft.SharePoint;
using Microsoft.SharePoint.WorkflowAction
using Nintex.Workflow;
   (domyślna ścieżka: C:\Program Files\Nintex\Nintex Workflow 2007\bin)
 

Więc aby projekt się zbudował należy je dodać. Dodatkowo aby wykorzystać akcję stworzoną jako oddzielny projekt należy dodać też referencje do projektu Nikolajuk.EventLogAction.

6. Stworzoną akcję należy podpiąć do w metodzie AddActivityToWorkflow w następujący sposób:

public override CompositeActivity AddActivityToWorkflow(NWActionConfig config, RootWorkflowActivityWithData parentWorkflow, CompositeActivity parentActivity, RuleConditionReference condition, WorkflowVariableCollection variables)
{
     EventLogActivity a = new EventLogActivity();
     ActivityFlags f = new ActivityFlags();
     f.AddLabelsFromConfig(config);
     f.AssignTo(a);
     parentActivity.Activities.Add(a);
     return null;
}

7. Opis całej akcji można wprowadzić w metodzie BuildSummary

public override ActionSummary BuildSummary(ActivityContext context)
{
     return new ActionSummary("Akcja dodaje wpisy do event loga.");
}

Wpisany opis będzie widoczny w następujący sposób:

8. Uzupełnienie pliku *.nwa. Jedną z ostatnich czynności jest odpowiednie uzupełnienie pliku *.nwa. Zawarty w nim XML opisujący cały bloczek. Właściwe uzupełniony plik dla powyższego przykładu wygląda następująco:

<NintexWorkflowActivity>
   <Name>Nikolajuk.EventLogAdapter</Name>
   <Category>Akcje dodatkowe</Category>
   <Description>Dodawanie wpisu do systemowego event loga.</Description>
   <ActivityType>Nikolajuk.EventLogAction.EventLogActivity</ActivityType>
   <ActivityAssembly>Nikolajuk.EventLogAction, Version=1.0.0.0, Culture=neutral,
   PublicKeyToken=5b85e14bce600c09</ActivityAssembly>
   <AdapterType>Nikolajuk.EventLogAdapter.EventLogAdapterAdapter</AdapterType>
   <AdapterAssembly>Nikolajuk.EventLogAdapter, Version=1.0.0.0, Culture=neutral,
   PublicKeyToken=5b85e14bce600c09</AdapterAssembly>
   <HandlerUrl>ActivityServer.ashx</HandlerUrl>
   <Icon>/_layouts/NintexWorkflow/IMAGES/Nikolajuk.EventLogAdapter/
   Nikolajuk.EventLogAdapterIcon.png</Icon>
  <WarningIcon>/_layouts/NintexWorkflow/IMAGES/Nikolajuk.EventLogAdapter/
   Nikolajuk.EventLogAdapterIconWarning.png</WarningIcon>
  <ToolboxIcon>/_layouts/NintexWorkflow/IMAGES/Nikolajuk.EventLogAdapter/
   Nikolajuk.EventLogAdapterIconSmall.png</ToolboxIcon>
   <ConfigurationDialogUrl>Nikolajuk.EventLogAdapter/
   Nikolajuk.EventLogAdapterDialog.aspx</ConfigurationDialogUrl>
   <ShowInCommonActions>yes</ShowInCommonActions>
   <DocumentLibrariesOnly>no</DocumentLibrariesOnly>
<NintexWorkflowActivity>

9. W tym kroku zostanie dodana nowa akcja do SharePointa. W tym celu należy przejść do Centralne Administracji -> Zarządzanie aplikacjami i wybrać z grupy Nintex Workflow Management pozycję Manage allowed actions. Na stronie Manage allowed action należy wybrać link Add an action i wskazać plik *.nwa, który został stworzony w punkcie 8.
 

Po dodaniu akcji należy zaznaczyć w kolumnę Enabled dla tej akcji.
UWAGA !!! Konieczny jest restart IIS.

Zdarza się też, że plik *.nwa został źle skonfigurowany. Niestety w takiej sytuacji z poziomu UI nie ma opcji usuwania akcji. Możliwe jest jedynie odznaczenie kolumny Enabled. Z pomocą przychodzi wiersz poleceń i narzędzie NWAdmin.exe. Znajduje się ono w katalogu instalacyjnym Nintexa (domyślnie C:\Program Files\Nintex\Nintex Workflow 2007). Używając tego programu dla całkowitego odinstalowania akcji należy wykonać dwa polecenia: RemoveAction, RemoveSafeActions. Należy je wywołać w następujący sposób (przykład dla tworzonej akcji):

NWAdmin.exe -o RemoveAction -adapterType Nikolajuk.EventLogAdapter.EventLogAdapterAdapter

NWAdmin.exe -o RemoveSafeActions -type Nikolajuk.EventLogAdapter.EventLogAdapterAdapter

10. Akcja widoczna jest w obszarze Designer przy tworzeniu przepływów pracy.


Kod źródłowy: link 

Linki:

Dodany: 2010-02-18 17:34:42 przez Michał Nikołajuk | Wypowiedzi: 0
Dodaj do Yahoo Bookmarks Dodaj do Facebook Dodaj do Twitter Dodaj do Live Dodaj do Yahoo MyWeb Dodaj do MySpace Dodaj do Google Bookmarks
Komentarze
Wpis nie posiada komentarzy.
Zostaw komentarz Subskrybuj



 Security code