System-Skriptsprache: Allgemeine Funktionen, Funktionen für Benutzer (User functions)

In der Konfigurations-Datenbank sind beschreibende Daten für grundlegende Objekte wie Benutzer, Datenbanken und Server hinterlegt. Diese Objekte wer-den im ganzen System verwendet. Um diese Verwendungen aufzulösen, werden folgende Funktionen zur Verfügung gestellt:

Grundlegende Informationen zu den allgemeinen Funktionen der System-Skriptsprache erhalten Sie im Dokument System-Skriptsprache: Allgemeine Funktionen.

resolveRole

Name resolveRole
Beschreibung resolveRole gibt die Benutzer-Guids der Inhaber einer Workflowrolle zurück.
Signaturen Guid[] resolveRole(Guid roleName)

Guid[] resolveRole(String roleName)

Parameter roleName ist die Identifikation oder Guid einer Workflowrolle.
Ergebnis Die Funktion gibt eine Liste mit den Benutzer-Guids der Inhaber der Workflowrolle roleName in derjenigen Datenbank zurück, in der die Funktion ausgeführt wird.
Fehlerquellen Die Inhaber einer Workflowrolle in der Repository-Datenbank können nicht in einer OLTP-Datenbank und umgekehrt ermittelt werden. Ist roleName keine gültige Workflowrolle, so wird der Wert nullzurückgegeben.
Beispiele resolveRole("SALES") gibt die Inhaber der Workflowrolle als eine Liste von Guids zurück.

contains(resolveRole("APPROVERS"), list(environment.userGuid)) gibt in einer individuellen Prüfung den Wahrheitswert truezurück, wenn der Benutzer Inhaber der Workflowrolle APPROVERS ist. Dieser Ausdruck kann z. B. dazu verwendet werden, um Änderungen eines Belegs nur für bestimmte Benutzergruppen oder Stelleninhaber zu erlauben.

Der Ausdruck für Bearbeiter in einer Aktivitätsdefinition minus(resolveRole("SALES", list(parameters.userGuid))erzeugt eine Aufgabe für die Inhaber der Workflowrolle SALES. Die Funktion minus bewirkt, dass für den in parameters.userGuid gespeicherten Auslöser keine Aufgabe erzeugt wird.

Der Ausdruck für Bearbeiter in einer Aktivitätsdefinition union(resolveRole("SALES", resolveRole("SALESREPS"))erzeugt eine Aufgabe für die Inhaber beider Workflowrollen. Die Funktion union bewirkt, dass für einen Benutzer, der Inhaber beider Workflowrollen ist, nur eine Aufgabe erzeugt wird.

Kontext ALL
Hinweise
Siehe auch

Folgendes Beispiel aus der Aktivitätsdefinition help.resolveRole gibt die Namen aller Benutzer zurück, die als Inhaber einer Workflowrolle zugeordnet sind:

function create()
{
var p_role := parameters.ROLE;
var r_users := "";

var users := resolveRole(p_role);
if (not isNull(users)) {
for (u : users)
r_users := r_users + " " + userName(u);
}
result.IS_NULL := isNull(users);
result.USERS := substring(r_users, 1);
}

 

userAbsent

Name userAbsent
Beschreibung userAbsent prüft, ob ein Benutzer abwesend ist.
Signaturen Boolean userAbsent(Guid user)

Boolean userAbsent(Guid user, Timestamp time)

Boolean userAbsent(Guid user, Timestamp from, Timestamp until)

Parameter user ist die Guid oder der Name eines Benutzers.

time ist ein Zeitpunkt für die Betrachtung.

from ist der Beginn des Betrachtungszeitraums.

until ist das Ende des Betrachtungszeitraums.

Ergebnis Ist der Benutzer abwesend, so gibt die Funktion den Wahrheitswert true zurück, ansonsten false. Wird mithilfe des Parameters time einen Betrachtungszeitpunkt übergeben, dann erfolgt die Auswertung für diesen Zeitpunkt. Wird mithilfe der Parameter from und until ein Betrachtungszeitraum übergeben, dann gilt der Benutzer als abwesend, wenn er zu irgendeinem Zeitpunkt innerhalb des Betrachtungszeitraums abwesend ist.

Ist user kein gültiger Benutzer, dann wird false zurückgegeben.

Fehlerquellen Keine.
Beispiele userAbsent(userGuid("JOB")) gibt den Wahrheitswert true zurück, wenn der Benutzer JOB zum aktuellen Zeitpunkt abwesend ist.

userAbsent(userGuid("JOB"), addDays(now(), 7)) gibt true zurück, wenn der Benutzer zu einem Zeitpunkt in genau sieben Tagen abwesend ist.

userAbsent(userGuid("JOB"), now(), addDays(endOfDay(now()), 13)) gibt true zurück, wenn der Benutzer an irgendeinem Zeitpunkt in den nächsten 14. Kalendertagen abwesend ist.

Der Ausdruck für Bearbeiter cast(Guid, if(not(userAbsent(parameters.userGuid)), list(parameters.userGuid), substitute(parameters.userGuid)))weist die Aktivität für ein Ereignis vom Typ Business Entity dem Auslöser zu. Ist der Auslöser abwesend, dann wird die Aktivität stattdessen einem Stellvertreter zugeordnet.

Kontext ALL
Hinweise
Siehe auch

Folgendes Beispiel aus der Aktivitätsdefinition help.userAbsent entfernt alle abwesenden Benutzer aus der Liste der Inhaber einer Workflowrolle:

function create()
{
var p_workflowRole := parameters.WORKFLOW_ROLE;
var p_time := parameters.TIME;
var p_from := parameters.FROM;
var p_until := parameters.UNTIL;
var r_nonAbsentUsers := "";

var holders := resolveRole(p_workflowRole);
if (not isNull(holders)) {
holders := removeAbsentUsers(holders, p_time, p_from, p_until);
for (user : holders) {
r_nonAbsentUsers := r_nonAbsentUsers + " " + userName(user);
}
}
result.NON_ABSENT_USERS := trim(r_nonAbsentUsers);
}

function removeAbsentUsers(p_users as Guid[], p_time as Timestamp, p_from as Timestamp, p_until as Timestamp) as Guid[]
{
var nonAbsentUsers as Guid[];

for (user : p_users) {
if (p_time <> UNDEFINED_DATE) {
if (not userAbsent(user, p_time))
add(nonAbsentUsers, user);
} else if (p_from <> UNDEFINED_DATE and p_until <> UNDEFINED_DATE) {
if (not userAbsent(user, p_from, p_until))
add(nonAbsentUsers, user);
} else {
if (not userAbsent(user))
add(nonAbsentUsers, user);
}
}
return nonAbsentUsers;
}

 

userFullName

Name userFullName
Beschreibung userFullName gibt den vollständigen Namen eines Benutzers zurück.
Signaturen String userFullName(Guid user)
Parameter user ist die Guid eines Benutzers.
Ergebnis Der vollständige Name des Benutzers, wie er in der Anwendung Systemcockpit hinterlegt ist. Ist user kein gültiger Benutzer, dann wird eine leere Zeichenkette zurückgegeben.
Fehlerquellen Keine.
Beispiele userFullName(userGuid("JOB")) gibt den vollständigen Namen des Benutzers zurück.

userFullName(parameters.userGuid) gibt den vollständigen Namen des Benutzers zurück, der ein Ereignis vom Typ Business Entity oder Benutzeraktion ausgelöst hat bzw. einen Prozess ohne Ereignisdefinition gestartet hat.

Kontext ALL
Hinweise
Siehe auch userName

Folgendes Beispiel aus der Aktivitätsdefinition help.userFullName gibt den vollständigen Namen eines Benutzers zurück:

function create()
{
var p_userName := parameters.USER_NAME;
var r_userFullName := "";

var userGuid := userGuid(p_userName);
if (userGuid <> INVALID_GUID)
r_userFullName := userFullName(userGuid);

result.USER_FULL_NAME := r_userFullName;
}

 

userGuid

Name userGuid
Beschreibung userGuid gibt die Guid eines Benutzers zurück.
Signaturen String userGuid(String user)
Parameter user ist der Name eines Benutzers.
Ergebnis Die Guid des Benutzers. Ist user kein gültiger Benutzer, dann wird der Wert INVALID_GUIDzurückgegeben.
Fehlerquellen Keine.
Beispiele userGuid("JOB") gibt die Guid des Benutzers zurück.
Kontext ALL
Hinweise
Siehe auch userName

Folgendes Beispiel aus der Aktivitätsdefinition help.userGuid gibt die Guid eines Benutzers zurück:

function create()
{
var p_userName := parameters.USER_NAME;
var r_userGuid := "";

var userGuid := userGuid(p_userName);
if (userGuid <> INVALID_GUID)
r_userGuid := cast(String, userGuid);

result.USER_GUID := r_userGuid;
}

 

Beispiel: Deaktivierte Benutzer entfernen

Folgendes Beispiel aus der Aktivitätsdefinition help.userDeactivated entfernt alle deaktivierten Benutzer aus der Liste der Inhaber einer Workflowrolle:

function create()
{
var p_workflowRole := parameters.WORKFLOW_ROLE;
var r_deactivatedUsers := "";

var holders := resolveRole(p_workflowRole);
if (not isNull(holders)) {
holders := removeDeactivatedUsers(holders);
for (user : holders) {
r_deactivatedUsers := r_deactivatedUsers + " " + userName(user);
}
}
result.DEACTIVATED_USERS := trim(r_deactivatedUsers);
}

function userDeactivated(p_user as Guid) as Boolean
{
var r_userDeactivated := false;
var user := getByPrimaryKey("CONFIGURATION", CisObject(com.cisag.sys.configuration.obj.User), p_user);
if (not isNull(user)) {
r_userDeactivated := user:deactivated;
}
return r_userDeactivated;
}

function removeDeactivatedUsers(p_users as Guid[]) as Guid[]
{
var activatedUsers as Guid[];
for (user : p_users) {
if (not userDeactivated(user))
add(activatedUsers, user);
}
return activatedUsers;
}

 

Beispiel: Nicht-interaktive Benutzer entfernen

Folgendes Beispiel aus der Aktivitätsdefinition help.userInteractive entfernt alle nicht-interaktiven Benutzer aus der Liste der Inhaber einer Workflowrolle:

const UserType as valueSet(com.cisag.sys.configuration.UserType);

function create()
{
var p_workflowRole := parameters.WORKFLOW_ROLE;
var r_nonInteractiveUsers := "";

var holders := resolveRole(p_workflowRole);
if (not isNull(holders)) {
holders := removeNonInteractiveUsers(holders);
for (user : holders) {
r_nonInteractiveUsers := r_nonInteractiveUsers + " " + userName(user);
}
}
result.NON_INTERACTIVE_USERS := trim(r_nonInteractiveUsers);
}

function userInteractive(p_user as Guid) as Boolean
{
var r_userInteractive := false;
var user := getByPrimaryKey("CONFIGURATION", CisObject(com.cisag.sys.configuration.obj.User), p_user);
if (not isNull(user)) {
r_userInteractive := user:type = UserType.INTERACTIVE;
}
return r_userInteractive;
}

function removeNonInteractiveUsers(p_users as Guid[]) as Guid[]
{
var interactiveUsers as Guid[];

for (user : p_users) {
if (userInteractive(user))
add(interactiveUsers, user);
}
return interactiveUsers;
}

 

userMailAddress

Name userMailAddress
Beschreibung userMailAddress gibt die E-Mail-Adresse eines Benutzers zurück.
Signaturen String userMailAddress(Guid user)
Parameter user ist die Guid eines Benutzers.
Ergebnis Die E-Mail-Adresse des Benutzers, wie sie in der Anwendung Systemcockpit erfasst ist. Sind dort mehr als eine E-Mail-Adresse für den Benutzer erfasst, dann werden alle E-Mail-Adressen mit dem gleichen Trennzeichen (Semikolon) wie im Systemcockpit zurückgegeben. Dieses Trennzeichen wird auch von den Funktionen zum Versenden von E-Mail-Nachrichten akzeptiert, wie z. B. setMailRecipientsTo und setMailReplyTo Ist für den Benutzer keine E-Mail-Adresse im Systemcockpit hinterlegt, dann wird eine leere Zeichenkette zurückgegeben.

Ist user kein gültiger Benutzer, dann wird eine leere Zeichenkette zurückgegeben.

Fehlerquellen Keine.
Beispiele userMailAddress(userGuid("JOB")) gibt die E-Mail-Adresse des Benutzers zurück.

userMailAddress(parameters.userGuid)gibt die E-Mail-Adresse des Benutzers zurück, der ein Ereignis vom Typ Business Entity oder Benutzeraktion ausgelöst hat bzw. einen Prozess ohne Ereignisdefinition gestartet hat.

setMailRecipientsTo(userMailAddress(parameters.userGuid)) in einer Aktivitätsdefinition vom Typ E-Mail-Nachricht, sendet eine E-Mail-Nachricht an die E-Mail-Adresse des Benutzers, der das Ereignis ausgelöst hat bzw. den Prozess gestartet hat.

setMailRecipientsCC(userMailAddress(superior(parameters.userGuid)[0])) sendet eine Kopie der E-Mail-Nachricht an den Vorgesetzten des Benutzers, der das Ereignis ausgelöst hat bzw. den Prozess gestartet hat.

Kontext ALL
Hinweise Der Workflow verwendet die in der Anwendung Systemcockpit hinterlegte E-Mail-Adresse, um Benachrichtigungen an Bearbeiter und Prozessverantwortliche zu versenden. Eine E-Mail an eine im Partnerstamm hinterlegte E-Mail-Adresse kann nur dann versendet werden, wenn eine Aktivitätsdefinition vom Typ E-Mail-Nachricht, E-Mail-Knoten oder Interaktiver E-Mail-Knoten verwendet wird und die E-Mail-Adresse mithilfe der Funktion setMailRecipientsTo explizit angegeben wird.
Siehe auch

Folgendes Beispiel aus der Aktivitätsdefinition help.userMailAddress gibt die E-Mail-Adresse eines Benutzers zurück:

function create()
{
var p_userName := parameters.USER_NAME;
var r_userMailAddress := "";

var userGuid := userGuid(p_userName);
if (userGuid <> INVALID_GUID)
r_userMailAddress := userMailAddress(userGuid);

result.USER_MAIL_ADDRESS := r_userMailAddress;
}

userName

Name userName
Beschreibung userName gibt den Namen eines Benutzers zurück.
Signaturen String userName(Guid user)
Parameter user ist die Guid eines Benutzers.
Ergebnis Der Name des Benutzers aus der Anwendung Systemcockpit. Ist user kein gültiger Benutzer, dann wird eine leere Zeichenkette zurückgegeben.
Fehlerquellen Keine.
Beispiele
userName(userGuid("JOB"))

gibt JOB zurück.

userName(parameters.userGuid) gibt den Namen des Benutzers zurück, der das Ereignis ausgelöst hat bzw. den Prozess gestartet hat.

userName(environment.userGuid) gibt den Namen des Benutzers zurück, für den eine individuelle Prüfung ausgeführt wird.

Kontext ALL
Hinweise
Siehe auch userFullName, userGuid

Folgendes Beispiel aus der Aktivitätsdefinition help.userName ermittelt den Namen des Benutzers, der den Partner des Mandanten erfasst hat:

function create()
{
  var r_userName := "";
  var company := loadOrganization(getCustomizingValue("com.cisag.app.General"):company);
  r_userName := userName(company:updateInfo.createUser);

  result.USER_NAME := r_userName;
}

 

Czy ten artykuł był pomocny?