Wie führt man eine asynchrone Funktion in Teamsware Aktionen oder einer anderen Ausdruckskonfiguration aus?

Wie führt man eine asynchrone Funktion in Teamsware Aktionen oder einer anderen Ausdruckskonfiguration aus?

Beschreibung

Wenn Sie auf callbacks in Teamsware Aktionen oder andere Ausdruckskonfigurationen warten müssen, bevor Sie weiterverarbeiten, empfiehlt sich die Verwendung des jQuery.Deferred()-Objekts.

Der folgende Codeschnipsel zeigt, wie dies erreicht werden kann:

var deferrer = jQuery.Deferred(); //new deferred object is created.
window.setTimeout(function () {
deferrer.resolve(); //Resolve the deferred. Then e.g. next predefined Rich Form's actions will start to execute.
}, 10000);
return deferrer.promise(); //returns promise object

 

Beispiel

Nachdem ein neues Element hinzugefügt wurde, möchten Sie dessen Berechtigungen aktualisieren und nur dem Genehmigenden die Bearbeitung dieses Elements ermöglichen.

Um dies zu erreichen, öffnen Sie ein neues Formular im Solution Studio und fügen Sie eine neue Aktion Skript ausführen nach der Aktion Formular speichern für die Schaltfläche Speichern hinzu:

New Form

 

Javascript code für die Aktion Script ausführen (Berechtigungen aktualisieren):

var deferrer = jQuery.Deferred();

var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle("DemoList");
var item = list.getItemById([[ID]]);
var approver = web.ensureUser([[Approver.LoginName]]);

//Break permission inheritance and clear existing permission rules.
item.breakRoleInheritance(false,true);

var itemAssignments = item.get_roleAssignments();

//Set read-only permisisons for site default groups
var roleDefBindingsReader = SP.RoleDefinitionBindingCollection.newObject(ctx);
roleDefBindingsReader.add(web.get_roleDefinitions().getByType(SP.RoleType.reader));
itemAssignments.add(web.get_associatedVisitorGroup(), roleDefBindingsReader);
itemAssignments.add(web.get_associatedMemberGroup(), roleDefBindingsReader);
itemAssignments.add(web.get_associatedOwnerGroup(), roleDefBindingsReader);

//Allow Approver to edit the item
var roleDefBindingsApprover = SP.RoleDefinitionBindingCollection.newObject(ctx);
roleDefBindingsApprover.add(ctx.get_web().get_roleDefinitions().getByType(SP.RoleType.contributor));
itemAssignments.add(approver, roleDefBindingsApprover);

ctx.executeQueryAsync(function() {
deferrer.resolve();
}, function(sender, args){
deferrer.reject("Failed to update item permissions: " + args.get_message())
});

return deferrer.promise();

 

Execute Script (Update Permissions) action


    • Related Articles

    • Starten eines Microsoft Flow aus Teamsware-Aktionen

      Microsoft Flow bietet viele Funktionen und Integrationsoptionen, die bei der Verwendung grundlegender Teamsware-Aktionen nicht verfügbar sind. Sie können jedoch ganz einfach eine Microsoft Flow / Power Automate aus Teamsware-Aktion starten, indem Sie ...
    • Wie kann man eine Lösung (solution) teilen?

      Jede Lösung wird von einer Person erstellt, die wir als "Solution Owner" bezeichnen. Diese Lösung ist nur für diesen Benutzer auf dem Solution Studio Dashboard sichtbar, bis sie für einen anderen Solution Studio Benutzer freigegeben wird. Um eine ...
    • Sichere Azure Funktion mit Microsoft Entra ID für Aufrufe von modernen Formularen und autom. Aktionen

      Dieser Artikel enthält ein Beispiel dafür, wie Sie Ihre Azure-Funktion mit Microsoft Entra ID sichern können, um sichere Aufrufe von Modern Forms und Automation-Aktionen mithilfe der Aktion "Power Automate starten/Azure-Funktion" zu tätigen. Sichere ...
    • Wie man Abfragefunktionen (query functions) verwendet

      Kontext-Platzhalter-Funktionen ermöglichen die Abfrage von Listen, so dass Werte aus beliebigen Listen in Ausdrücken verwendet werden können. Zum Beispiel: [[@Web.GetFirstValueForQuery('ListName, list Id or Relative URL', 'Caml query', 'FieldName')]] ...
    • Teamsware Studio API deployment

      Hinweis: Um die Teamsware-API-Bereitstellung zu nutzen, überprüfen Sie Ihre Mandanteneinstellungen und erlauben Sie die benutzerdefinierte App-Authentifizierung wie hier hier beschrieben. Was ist das API Deployment Die API-Bereitstellung ist eine Art ...