Ein Formular mit Sektionen für verschiedene Prozessschritte/Aufgabeninhaber

Dieses Beispiel zeigt wie Sie ein generisches Formular mit Sektionen für verschiedene Aufgabeninhaber in mehreren Prozessschritten verwenden. Den Download der fertigen AgilePoint Lösung finden Sie hier.

Gehen Sie wie folgt vor:

1.) Importieren und publizieren Sie die AgilePoint Anwendung

2.)  Schauen Sie sich genau die Artefakte der Lösung an:

Das Formular besteht aus einzelnen Sektionen (eine für jede beteiligte Aufgabe/Aktivität)



Das JavaScript steuert auf Basis des Names der Aktivität das Ein-/Ausblenden einzelner Sektionen und blendet bspw. die Schaltflächen Vor/Zurück aus.

 eFormEvents.onFormLoadComplete = function ()   
 {   
  HideNavigationButtons();  
  var activityDisplayName = GetActivityDisplayName();  
  HandleSectionVisibility(activityDisplayName);  
  OpenAtSection(activityDisplayName);  
 }  
 eFormEvents.onSectionNavigation = function (eventArgs)   
 {   
  // Remark for future usage:  
  // eventArgs.currentSection - will give the current section's header   
  // eventArgs.previousSection - will give the previous section's   
  // header from where it got navigated.  
  HideNavigationButtons();   
  var activityDisplayName = GetActivityDisplayName();  
  HandleSectionVisibility(activityDisplayName);   
 }  
 function HandleSectionVisibility(activityDisplayName)  
 {  
  if(activityDisplayName == '' | activityDisplayName == '${ActivityDisplayName}')  
  {  
       RemoveSection('Approve_1');  
   RemoveSection('Approve_2');  
   // Alternative: hide the whole bar  
   //$("#sectionTabs").hide();   
  }  
  else if(activityDisplayName == 'Approve_1')  
  {  
   RemoveSection('Approve_2');   
  }  
  else if(activityDisplayName == 'Approve_2')  
  {  
  }  
 }  
 function GetActivityDisplayName()  
 {  
  var formHeading = $("#previewPanel > div.previewFormHeading.leftAlign > h2").text();   
  return formHeading;  
 }  
 function OpenAtSection(sectionName)  
 {  
  var options = {};  
  options.sectionName = sectionName;  
  eFormHelper.navigateToSection(options, function (result) {});    
 }  
 function RemoveSection(sectionName)  
 {  
   var sectionDiv = $("[name=" + sectionName + "]");  
   sectionDiv.hide();     
 }  
 function HideNavigationButtons(sectionName)  
 {  
  $("#sectionButtons > button.previous.popActionButtons").hide();  
  $("#sectionButtons > button.next.popActionButtons").hide();    
 }  

Regeln steuern die Interaktion mit dem Formular entsprechend der aktuellen Aktivität



3.) Testen Sie den Durchlauf wie folgt:

Öffnen Sie das Formular



Füllen Sie die erste Sektion aus und senden ab



Öffnen Sie die erste Aufgabe



Füllen die Sektion aus



Wechseln Sie auf die nun nur lesende Sektionen "Submit" (auch wieder optional zurück)



Öffnen Sie die zweite Aufgabe



Füllen die Sektion aus (Rücksprünge auf andere Sektionen möglich)



Testen Sie den Rücksprung auf die Sektion "Submit oder "Approve_1".

Automatisiertes Bereitstellen ('Deployment', 'Staging') einer AgilePoint Lösung als Prozess

Dieses Beispiel zeigt das automatisierte Bereitstellen ('Deployment', 'Staging') einer AgilePoint Lösung als Prozess. Gestartet wird der Ablauf über ein Formular (alternative Startmöglichkeiten bspw. über API, WebService, Event Services). Der Benutzer wählt in einer Dropdown-Liste (dynamisch befüllt mit REST WebService Aufruf) die Anwendung aus, die bereitgestellt werden soll.





"Submit" übermittelt das Formular und startet den Prozess zur Bereitstellung. Wichtig hiebei ist der Export der ausgewählten AgilePoint Anwendung aus einem Quell-System und der anschließende Import der Anwendung in ein Zielsystem. Hierzu wird als Zwischenspeicher der Anwendung ein Dokumenten-Repository vom Typ "Dateisystem" verwendet (beliebige andere Typen möglich, bspw. SharePoint, DropBox). Das Prozessmodell im Überblick (ergänzen Sie selbst entsprechend Ihren Bedürfnissen, bspw. E-Mail Benachrichtigung am Prozessende senden an den Prozessinitiator):


Export und Import sind selbst Prozess Aktivitäten aus dem Bereich "AgilePoint":



Verwenden Sie das Beispiel wie folgt (befolgen Sie alle Schritte exakt, ansonsten wird das Beispiel nicht funktionieren):

A.) Legen Sie Zugangstoken vom Typ "REST Service" an ("Manage" >> "App Builder" >> "Global Access Tokens") mit dem Namen "ApNxExt_GetAllEnabledApplications" mit der Url:

http(s)://<IhrServer>:<IhrRestPort>/AgilePointServer/Extension/GetAllEnabledApplications

und den Einstellungen:






B.) legen Sie folgende zwei globalen Zugangstoken vom Typ "AgilePoint" an

Für Ihr Dev-System mit dem Namen:"ApNx-OnPrem-Dev":



Für Ihr Produktiv-System mit dem Namen: "ApNx-OnPrem-Prod":



C.) Legen Sie im Dateisystem (AgilePoint Rechner) für das beim Export/Import verwendete "Dokumenten-Repository" den folgenden Order an: "C:\Temp\ApAppExport"

D.) Laden Sie die fertiggestellte Anwendung hier runter, schauen alle Artefakte genau an, importieren und publizieren Sie dann die Anwendung.

F.) Testen Sie den Durchlauf

Legen Sie eine Anwendung für den Testdurchlauf fest (hier "SparePart8") und schauen die Versionshistorie auf dem Zielystem an (bei diesem Testlauf gibt es bereits schon Vorversionen im Zielsystem):


Füllen Sie das Formular aus:



Kontrollieren Sie die den Durchlauf der Prozessinstanz und deren Daten:




Kontrollieren Sie die Versionshistorie auf dem Zielsystem:




Eingeloggter Benutzer in Benutzerliste Control ("User List") vorauswählen


Das Benutzerliste Control ("User List") erlaubt die Auswahl eines (oder mehrer) Benutzer. Das folgende Beispiel zeigt wie Sie beim laden des Formulars den eingeloggten Benutzer standardmäßig auswählen eine Änderung der initialen Auswahl jedoch erlauben. Wurde in einer Vorgänger Aktivität bereits eine Person ausgewählt, bleibt diese ausgewählt (die fertige AgilePoint Lösung finden Sie hier).

Fügen Sie ein Benutzerliste Control ("User List") im Formular ein:


Fügen Sie ein Label ein, das den Benutzer-Namen enthält


Fügen Sie folgendes Skript ein (es liest den Benutzer-Namen aus und schreibt ihn in das Benutzerliste Control):
eFormEvents.onFormLoadComplete = function () 
{
  handleLoggedInUser('UserList1', 'lblUserName');
}


var handleLoggedInUser = function(userListId, crtlUserName)
{    
  var itmVal = $("#" + userListId + " > select > option:selected" ).val();
  
  if(itmVal == null)
  {    
    var userName = '';
    
    eFormHelper.getFieldValue ({'fieldId' : crtlUserName },
                               function (result)     
                               {userName = result.data;});
       
    var options = {'fieldId' : userListId, 'value' : userName }  
    eFormHelper.setFieldValue(options, function (result){})        
  }
}; 



Führen Sie zwingend ein Deployment der Lösung durch, ansonsten werden Variablen aus dem Bereich 'System Data' nicht aufgelöst (wenn Sie das vergessen, funktioniert das Beispiel nicht):



Öffnen Sie das Formular über 'Meine Anwendungen' >> der eingeloggte Benutzer wir ausgewählt:


Eine Änderung der Person ist jederzeit möglich:


Senden Sie das Formular ab, öffnen Sie die nachfolgende Aufgabe: die zuvor ausgewählte Person ist nun im Formular ausgewählt.


Anmerkung: Die Lösung ist getestet mit AgilePoint NX v6.0 SP1 SU1 Hotfix2

Mehrsprachige Formulare (lokalisierte Bezeichner, Buttons, Inhalte, gebundene Datenquellen)

Das folgende Beispiel zeigt Ihnen die Verwendung mehrsprachige Formulare (lokalisierte Bezeichner, Buttons, Inhalte, gebundene Datenquellen).

Gehen Sie wie folgt vor:

A.) Stellen Sie sicher, dass Sie den Beispiel WebService zur Verfügung gestellt haben. Siehe hier. Dieser dient hier als Lieferant lokalisierter Daten.

B.) Stellen Sie sicher, dass folgende Sprachen in Ihrer Infrastruktur angeleget sind ("Manage" >> "App Builder" >> "eForm Settings"):




C.) Laden Sie die fertiggestellte AgilePoint Anwendung hier runter, importieren Sie diese und publizieren diese. Schauen Sie sich die Artefakte der Lösung an (im Besonderen Formular, Translator, JavaScript)

D.) Testen der Mehrsprachigkeit

Loggen Sie sich ein mit einem Demo Account ein



Ändern Sie die Sprache auf "English-UnitedStates"


Rufen Sie das Formular auf






Ändern Sie die Sprache auf "German"



Rufen Sie das Formular auf



Beispiel WebService zur Verfügung stellen

Für kommende Beispiele benötigen Sie einen Beispiel WebService.

A.) Laden Sie den den WebService hier runter

B.)  Stellen Sie den WebService wie folgt zur Verfügung





C.) Legen Sie ein Globales Zugangstoken an ("Manage" >> "App Builder" >> "Global Access Tokens": 

Typ: WebService
Name: "BusinessService"



Ergänzende Active Directory Synchronisation für AgilePoint NX

Üblicherweise synchronisieren On-Prem Endkunden ihre Benutzer mit dem ActiveDirectory mit dem AdSyncModule AgilePoint Connector. Darüber hinaus können Sie mit dem folgenden Beispiel den Vorgesetzten (AD Attribut "Manager") und Sprache ("LocaleID") eines Benutzers synchronisieren. Dazu verwenden Sie folgenden Prozess:


Der Ablauf umfasst folgende Aktionen:

- Registrierte AgilePoint Benutzer Abfragen und durch diese Iterieren
- Abfrage der AD Attribute Vorgesetzter (AD Attribut "Manager") und Sprache ("LocaleID")
- Setzen einer Standard-Sprache ("Deutsch") wenn keine Sprache im AD festgelegt für den Benutzer
- Aktualisieren der Benutzerinformation in AgilePoint

Gehen Sie wie folgt vor (befolgen Sie exakt diese Schritte ansonsten wird die Anwendung nicht funktionieren):

A.) laden Sie die fertiggestellte AgilePoint NX App hier runter.

B.) Legen Sie die folgenden zwei globalen Zugangstoken an :

Active Directoty mit Name "AD"




WCF mit Name "ApAdmin"



C.) Importieren Sie nun die heruntergeladene Anwendung

D.) setzen Sie den Wert “Maximum Session Allowed” entsprechend ihren Bedürfnissen (Anzahl Benutzer plus Puffer) wie folgt:



E.) Speichern  Sie das Prozessmodell und führen einen Check-In durch  und publizieren Sie die Anwendung

F.) Legen Sie unter "Manage" >> "Event Service" >> "Scheduler" einen neuen Schedule an, der zeitlich nach Ihrem AdSyncModule Lauf läuft.



G.) Kontrollieren Sie den Durchlauf

z.B. vor dem Durchlauf:



Ergibt nach Auslesen AD und aktualisieren der Informationen:



Schauen Sie sich auch die entsprechende Prozessinstanz mit Daten (z.B. Daten der letzen Iteration) genau an:









Kontaktformular

Name

E-Mail *

Nachricht *