System-Skriptsprache: OLTP-Funktionen, Funktionen für Partner (Functions for partners)

Zu den Funktionen für Partner gehören u. a. Funktionen, um einen Partner und seine Rollen, sowie weitere partnerbezogene Daten zu öffnen:

Allgemeine Informationen zu den OLTP-Funktionen der System-Skriptsprache erhalten Sie im Artikel System-Skriptsprache: OLTP-Funktionen.

getGreeting

Name getGreeting
Beschreibung getGreeting gibt eine persönliche Begrüßung für einen Partner zurück.
Signaturen String getGreeting(Guid person)

String getGreeting(Guid person, String context)

String getGreeting(Guid person, String context, String language)

Parameter guid ist die Guid eines Partners.

context ist der Kontext für die Begrüßungsformel. Ist kein Kontext angegeben, dann wird die Begrüßung ohne Kontext ermittelt.

language ist der ISO-Code für die Sprache. Ist die Sprache nicht angegeben, dann wird die aktuelle Inhaltssprache verwendet. Diese kann mithilfe der Funktion setContentLangauge bestimmt werden.

Ergebnis Die persönliche Begrüßung wird mithilfe der Begrüßungsformel in der Anwendung Begrüßungsformeln ermittelt. Gibt es keine Begrüßungsformel für den angegebenen Kontext, die zur Anrede und zum Titel des Partners passt, dann wird die Begrüßungsformel gemäß der Anrede und dem Kontext ermittelt.
Fehlerquellen Stehen die Begrüßungsformeln nicht zur Verfügung, z. B. weil der Laufzeitkontext keine OLTP-Datenbank besitzt, dann wird die Standard-Begrüßungsformel aus der Customizing-Funktion Workflow-Management verwendet. Die Standard-Begrüßungsformel wird auch dann verwendet, wenn im Partner keine Anrede erfasst ist, oder keine zur Anrede und zum Kontext passende Begrüßungsformel existiert.
Beispiele getGreeting("70010") gibt eine persönliche Begrüßung für den Partner 70010 zurück.

getGreeting("70010", "FORMAL") gibt eine persönliche Begrüßung mit dem Kontext FORMAL für den Partner 70010 zurück.

getGreeting("70010", "", "en") gibt eine persönliche Begrüßung ohne besonderen Kontext für den Partner 70010 in Englisch zurück.

Kontext OLTP
Hinweise Ist der Empfänger einer E-Mail-Nachricht nicht als Benutzer im System erfasst bzw. keinem Partner zugeordnet, dann kann die Funktion getGreeting nicht verwendet werden, um eine persönliche Begrüßung zu ermitteln.
Siehe auch getValediction

Folgendes Beispiel aus der Aktivitätsdefinition help.getGreeting gibt eine persönliche Begrüßung für einen Partner zurück.

function create()
{
var p_context := parameters.CONTEXT;
var p_language := parameters.CONTEXT;
var p_partner := loadPartner(parameters.PARTNER);
var r_greeting := "";

if (not isNull(p_partner)) {
if (p_context <> "" and p_language <> "")
r_greeting := getGreeting(p_partner:guid, p_context, p_language);
else if (p_context <> "" and p_language = "")
r_greeting := getGreeting(p_partner:guid, p_context);
else if (p_context = "" and p_language <> "")
r_greeting := getGreeting(p_partner:guid, "", p_language);
else
r_greeting := getGreeting(p_partner:guid, p_context, p_language);
}
result.GREETING := r_greeting;
}

 

Beispiel: Persönliche Begrüßung in E-Mail-Benachrichtigungen

Im folgenden Beispiel soll die E-Mail-Benachrichtigung für neue Workflow-Aufgaben um eine persönliche Begrüßung für den Bearbeiter erweitert werden.

Begrüßungsformel erfassen

Als erstes stellen Sie sicher, dass für diejenigen Personen, die eine E-Mail-Benachrichtigungen im Workflow-Management erhalten können, eine Anrede im Partner hinterlegt ist. Um eine geschlechtsneutrale persönliche Begrüßung (z. B. für ein drittes Geschlecht) zu verwenden, können Sie eine entsprechende Anrede erfassen und im Partner hinterlegen.

Danach erfassen Sie die Begrüßungsformel in der Anwendung Begrüßungsformeln. Dort stehen folgende Platzhalter (Parameter) für Namenspartikel zur Verfügung:

  • {name}
  • {givenName}
  • {middleNames}
  • {surname}
  • {fullName}

Um die persönliche Begrüßung bzw. den Schluss in einer Sprache zu unterdrücken, während sie in anderen Sprachen ausgegeben wird, können Sie den Platzhalter {void} verwenden. In der Customizing-Funktion Workflow-Management steht zusätzlich der Platzhalter {recipient} für den Benutzernamen des Empfängers zur Verfügung. Wenn Sie unterschiedliche Begrüßungen für interne und externe Empfänger verwenden möchten, hinterlegen Sie Kontexte in der Customizing-Funktion und erfassen entsprechende Begrüßungsformel.

E-Mail-Vorlage anpassen

Wenn Sie die für die persönliche Begrüßung erforderlichen Stammdaten erfasst haben, erfassen Sie eine Vorlage für die E-Mail-Benachrichtigung für neue Workflow-Aufgaben. Die Standard-Vorlagen können Sie im Stringtable com.cisag.sys.workflow.template.MailTemplates abfragen. (Siehe auch die Funktion setMailTemplate in der Dokumentation System-Skriptsprache: Workflow-Funktionen).

Die Standard-Vorlage für neue Workflow-Aufgaben ist im Eintrag der Stringtable mit der Konstanten DEFAULT definiert:

<html>
<title>Neue Aufgabe: {$code} {$subject}</title>
<body>
<p>Hallo {$recipient},</p>
<p>Sie Sind der neue Bearbeiter der Aufgabe <a href="{$workitemUrl}">{$subject}</a> im Status &quot;{$state}&quot;.</p>
<p>Die Aufgabe soll mit der Priorit&auml;t &quot;{$priority}&quot; bearbeitet und bis {$endTime} erledigt werden. Weitere Informationen entnehmen Sie bitte der Aktivit&auml;t<a href="{$activityUrl}">{$code}</a> sowie folgender Aufgabenbeschreibung:</p>
<p><dir>{$description}</dir></p>
</body>
</html>

Da die Stringtable ein Entwicklungsobjekt ist, können Sie die Standard-Vorlage nur in einem Entwicklungssystem anpassen. In einem Produktivsystem kopieren Sie stattdessen den Inhalt in eine Datei mit dem Namen Mailtemplate_de.html, die Sie im Knowledge Store der jeweiligen Datenbank im Verzeichnis Documents/Workflow/ speichern. Um Vorlagen in weiteren Sprachen zu definieren, ersetzen Sie die Kürzel de durch den ISO-Code der gewünschten Sprache. Sie können Vorlagen in beliebigen Sprachen erfassen und in Aktivitätsdefinitionen verwenden, d. h. Sie sind nicht auf die im System installierten Inhaltssprachen beschränkt.

Schließlich ersetzen Sie die erste Zeile nach dem Tag <body>durch

<p>{$greeting},</p>

Optional können Sie auch einen Abschluss in der Zeile vor dem Endtag </body>hinzufügen:

<p>{$valediction},</p>

Welche weiteren Platzhalter (Parameter) in den E-Mail-Vorlagen möglich sind, können Sie im Dokument Workflow-Engine nachlesen.

getPreferredCommunicationData

Name getPreferredCommunicationData
Beschreibung getPreferredCommunicationData gibt die bevorzugte Kommunikationsverbindung eines Mediums für einen Partner zurück.
Signaturen String getPreferredCommunicationData(Guid partner, Number media)

String getPreferredCommunicationData(String partner, Number media)

String getPreferredCommunicationData(Guid partner, String medium)

String getPreferredCommunicationData(String partner, String medium)

Parameter partner ist die Identifikation oder Guid des Partners.

media ist die im gleichnamigen Attribut media des Business Objects com.cisag.app.general.obj.CommunicationMethod hinterlegte Nummer des Kommunikationsmediums. Die Verwendung dieses Attributs wird seit dem Release 5.1 nicht mehr unterstützt.

medium ist der vollständige technische Name des Kommunikationsmediums gemäß dem gleichnamigen Attribut medium. Um die in Ihrem System verfügbaren Kommunikationsmedien zu ermitteln, können Sie z. B. alle Kommunikationsarten per BIS exportieren und das Attribut medium überprüfen.

Ergebnis Die Funktion gibt die bevorzugte Kommunikationsverbindung für einen Partner zurück. Es werden nur Verbindungen des angegeben Kommunikationsmediums berücksichtigt.

Ist für das Medium keine Kommunikationsverbindung als bevorzugt gekennzeichnet, wird irgendeine Kommunikationsverbindung dieses Mediums zurückgegeben. Existiert für die Kombination aus Partner und Medium keine Kommunikationsverbindung, wird eine leere Zeichenkette zurückgegeben.

Fehlerquellen Keine
Beispiele getPreferredCommunicationData("10010", "com.cisag.app.general.CommunicationMediumEMail")gibt die bevorzugte E-Mail-Adresse des Partners 10010 zurück.
Kontext OLTP
Hinweise
Siehe auch loadCommunicationData

Folgendes Beispiel aus der Aktivitätsdefinition help.getPreferredCommunicationData gibt die bevorzugte Kommunikationsverbindung eines Mediums für einen Partner zurück.

function create()
{
var p_partner := parameters.PARTNER;
var p_methodString := parameters.METHOD_STRING;
var p_methodNumber := parameters.METHOD_NUMBER;
var r_communicationData as String;

if (parameters.METHOD_NUMBER <> 0)
r_communicationData := getPreferredCommunicationData(p_partner, p_methodNumber);
if (parameters.METHOD_STRING <> "")
r_communicationData := getPreferredCommunicationData(p_partner, p_methodString);

result.DATA := r_communicationData;
}

 

getValediction

Name getValediction
Beschreibung getValediction gibt einen persönlichen Schluss für einen Partner zurück.
Signaturen String getValediction(Guid person)

String getValediction(Guid person, String context)

String getValediction(Guid person, String context, String language)

Parameter guid ist die Guid eines Partners.

context ist der Kontext für den Schluss. Ist kein Kontext angegeben, dann wird der Schluss ohne Kontext ermittelt.

language ist der ISO-Code für die Sprache. Ist die Sprache nicht angegeben, dann wird die aktuelle Inhaltssprache verwendet. Diese kann mithilfe der Funktion setContentLangauge bestimmt werden.

Ergebnis Der persönliche Schluss wird mithilfe der Schlussformel in der Anwendung Begrüßungsformeln ermittelt. Gibt es keine Begrüßungsformel für den angegebenen Kontext die zur Anrede und zum Titel des Partners passt, dann wird die Begrüßungsformel gemäß Anrede und Kontext ermittelt.
Fehlerquellen Stehen die Begrüßungsformeln nicht zur Verfügung, z. B. weil der Laufzeitkontext keine OLTP-Datenbank besitzt, wird die Standard-Schlussformel aus der Customizing-Funktion Workflow-Management verwendet. Die Standard-Schlussformel wird auch dann verwendet, wenn im Partner keine Anrede erfasst ist, oder keine zur Anrede und zum Kontext passende Begrüßungsformel existiert.
Beispiele getValediction("70010") gibt einen persönlichen Schluss für den Partner 70010 zurück.

getValediction("70010", "FORMAL") gibt einen persönlichen Schluss mit dem Kontext FORMAL für den Partner 70010 zurück.

getValediction("70010", "", "en") gibt einen persönlichen Schluss ohne besonderen Kontext für den Partner 70010 in Englisch zurück.

Kontext OLTP
Hinweise Ist der Empfänger einer E-Mail-Nachricht nicht als Benutzer im System definiert bzw. keinem Partner zugeordnet, dann kann die Funktion getValediction nicht verwendet werden, um einen persönlichen Schluss zu ermitteln.
Siehe auch getGreeting

Folgendes Beispiel aus der Aktivitätsdefinition help.getValediction gibt einen persönlichen Schluss für einen Partner zurück.

function create()
{
var p_context := parameters.CONTEXT;
var p_language := parameters.CONTEXT;
var p_partner := loadPartner(parameters.PARTNER);
var r_valediction := "";

if (not isNull(p_partner)) {
if (p_context <> "" and p_language <> "")
r_valediction := getValediction(p_partner:guid, p_context, p_language);
else if (p_context <> "" and p_language = "")
r_valediction := getValediction(p_partner:guid, p_context);
else if (p_context = "" and p_language <> "")
r_valediction := getValediction(p_partner:guid, "", p_language);
else
r_valediction := getValediction(p_partner:guid, p_context, p_language);
}
result.VALEDICTION := r_valediction;
}

 

loadCommunicationData

Name loadCommunicationData
Beschreibung loadCommunicationData gibt die Kommunikationsverbindungen einer Kommunikationsart für einen Partner als eine Liste von typisierten CisObjects zurück.
Signaturen CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(String partner, String method)

CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(String partner, Guid method)

CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(Guid partner, String method)

CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(Guid partner, Guid method)

Parameter partner ist die Identifikation oder Guid eines Partners.

method ist die Identifkation einer Kommunikationsart. Die verfügbaren Kommunikationsarten können Sie in der gleichnamigen Anwendung Kommunikationsarten abfragen.

Ergebnis Die Funktion ermittelt die Kommunikationsverbindungen des Partners partner über dessen Guid oder Identifikation und gibt diese als eine Liste von typisierten CisObjects zurück. Es werden nur Verbindungen der angegeben Kommunikationsart method berücksichtigt.

Ist eine Kommunikationsverbindung als bevorzugt gekennzeichnet, so wird sie als erstes Element der Liste übergeben.

Fehlerquellen Existieren keine Kommunikationsdaten der Kommunikationsart für den Partner, dann wird der Wert null zurückgegeben.
Beispiele loadCommunicationData("70010", "300") gibt die Kommunikationsdaten des Partners 70010 für die Kommunikationsart 300 zurück.
Kontext OLTP
Hinweise Ist keine Kommunikationsverbindung als bevorzugt gekennzeichnet, dann wird eine der nicht bevorzugten Kommunikationsverbindungen als erstes Element der Liste übergeben.
Siehe auch getPreferredCommunicationData

Folgendes Beispiel aus der Aktivitätsdefinition help.loadCommunicationData gibt die Kommunikationsverbindungen einer Kommunikationsart für einen Partner zurück.

function create()
{
var p_partner := parameters.PARTNER;
var p_method := parameters.METHOD;
var r_communicationData as String[];
var r_preferred := "";
var r_description := "";

var communicationData := loadCommunicationData(p_partner, p_method);
if (not isNull(communicationData)) {
for (cd as CisObject(com.cisag.app.general.obj.CommunicationData) : communicationData) {
add(r_communicationData, cd:commData);
if (cd:preferred) {
r_preferred := cd:commData;
r_description := cd->Method:description;
}
}
}
result.IS_NULL := isNull(communicationData);
result.DATA := r_communicationData;
result.PREFERRED := r_preferred;
result.DESCRIPTION := r_description;
}

 

loadContacts

Name loadContacts
Beschreibung loadContact gibt die allgemeinen Ansprechpartner eines Partners als eine Liste von typisierten CisObjects zurück.
Signaturen CisObject(com.cisag.app.general.obj.Partner)[] loadContacts(String partner)

CisObject(com.cisag.app.general.obj.Partner)[] loadContacts(Guid partner)

Parameter partner ist die Identifikation oder Guid eines Partners.

Die allgemeinen Ansprechpartner können Sie in den Basisdaten des Partners abfragen.

Ergebnis Die Funktion ermittelt die allgemeinen Ansprechpartner des Partners partner über dessen Guid oder Identifikation und gibt diese als eine Liste von typisierten CisObjects zurück. Ist einer der Ansprechpartner als bevorzugt gekennzeichnet, so wird dieser als erstes Element der Liste übergeben.
Fehlerquellen Existieren keine allgemeinen Ansprechpartner für den Partner, dann wird der Wert null zurückgegeben.
Beispiele loadContacts("10010") gibt die allgemeinen Ansprechpartner des Partners 10010 zurück.
Kontext OLTP
Hinweise Ist kein Ansprechpartner als bevorzugt gekennzeichnet, dann wird einer der nicht bevorzugten Ansprechpartner als erstes Element der Liste übergeben.

Um auch die Ansprechpartner im Vertrieb und in der Beschaffung zu ermitteln, verwenden Sie die Funktion loadTargetsOfPartnerRelations für die Partner-Beziehungstypen Contact sales und Contact purchase.

Siehe auch loadTargetsOfPartnerRelations

Folgendes Beispiel aus der Aktivitätsdefinition help.load gibt die allgemeinen Ansprechpartner eines Partners zurück.

function create()
{
var p_partner := parameters.PARTNER;
var r_contacts as String[];
var r_preferred := "";

var contacts := loadContacts(p_partner);
if (not isNull(contacts)) {
for (p as CisObject(com.cisag.app.general.obj.Partner) : contacts) {
add(r_contacts, p:number);
if (r_preferred = "")
r_preferred := p:number;
}
}
result.IS_NULL := isNull(contacts);
result.CONTACTS := r_contacts;
result.PREFERRED := r_preferred;
}

 

loadCustomer

Name loadCustomer
Beschreibung loadCustomer gibt die Kundendaten eines Partners zurück.
Signaturen CisObject(com.cisag.app.sales.obj.Customer) loadCustomer(String partner, String organization)

CisObject(com.cisag.app.sales.obj.Customer) loadCustomer(String partner, Guid organization)

CisObjectCustomer(com.cisag.app.sales.obj.Customer) load(Guid partner, String organization)

CisObject(com.cisag.app.sales.obj.Customer) loadCustomer(Guid partner, Guid organization)

Parameter partner ist die Identifikation oder Guid des Partners, dessen Kundendaten geöffnet werden sollen.

organization ist die Identifikation oder Guid einer Vertriebsorganisation.

Ergebnis Die Funktion gibt die zurzeit gültigen Kundendaten des angegebenen Partners als ein typisiertes CisObject zurück.
Fehlerquellen Besitzt die Organisation keine Kundendaten für den Partner, so wird der Standardwert null für ein CisObject zurückgegeben.

Ist organization keine Vertriebsorganisation, dann entsteht ein Laufzeitfehler.

Beispiele loadCustomer("10010", "90000") gibt die Kundendaten des Partners 10010 für die Vertriebsorganisation 90000 zurück.
Kontext OLTP
Hinweise Der organisationsbezogene Sperrstatus der Kundendaten befindet sich im Business Object com.cisag.app.general.obj.OrganizationalUnitPartner. Dort steht auch, welche Organisation für die Bearbeitung der Kundendaten zuständig ist. Ob eine Organisation seine eigenen Kundendaten bearbeitet oder diese vererbt, können Sie u. a. dem andockbaren Fenster Organisationsdaten der Anwendung Partner entnehmen.
Siehe auch loadPartner, loadPartnerAccountingData, loadPartnerMarketingInfo, loadSupplier

Folgendes Beispiel aus der Aktivitätsdefinition help.loadCustomer gibt die Kundendaten eines Partners zurück.

function create()
{
var p_partner := parameters.PARTNER;
var p_organization := parameters.ORGANIZATION;
var r_customer := "";

var customer := loadCustomer(p_partner, p_organization);
if (not isNull(customer))
r_customer := customer->Partner:number;

result.IS_NULL := isNull(customer);
result.CUSTOMER := r_customer;
}

 

loadPartner

Name loadPartner
Beschreibung loadPartner gibt einen Partner als typisiertes CisObject zurück.
Signaturen CisObject(com.cisag.app.general.obj.Partner) loadPartner(String number)

CisObject(com.cisag.app.general.obj.Partner) loadPartner(Guid guid)

Parameter number ist die Identifikation des Partners.

guid ist die Guid des Partners.

Ergebnis Die Funktion gibt den zurzeit gültigen Partner als ein typisiertes CisObject zurück.
Fehlerquellen Existiert kein Partner mit der Identifikation number bzw. der Guid guid, so wird der Standardwert null für ein CisObject zurückgegeben.
Beispiele loadPartner("10010") gibt den Partner 10010 zurück.
Kontext OLTP
Hinweise Nicht-aktuelle Versionen eines Partners können Sie z. B. mithilfe der Funktion getCisObjectList unter Angabe eines Zeitpunkts für den Gültigkeitszeitraum öffnen.
Siehe auch loadCustomer, loadOrganization, loadPartnerAccountingData, loadPartnerMarketingInfo, loadSupplier

Folgendes Beispiel aus der Aktivitätsdefinition help.loadPartner öffnet einen Partner und gibt den Suchbegriff zurück.

function create()
{
var p_partner := parameters.PARTNER;
var r_searchString := "";

var partner := loadPartner(p_partner);
if (not isNull(partner))
r_searchString := partner:searchString;

result.IS_NULL := isNull(partner);
result.SEARCH_STRING := r_searchString;
}

 

loadPartnerAccountingData

Name loadPartnerAccountingData
Beschreibung loadPartnerAccountingData gibt die Rechnungswesendaten eines Partners zurück.
Signaturen CisObject(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(String partner, String organization)

CisObject(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(String partner, Guid organization)

CisObjectCustomer(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(Guid partner, String organization)

CisObject(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(Guid partner, Guid organization)

Parameter partner ist die Identifikation oder Guid des Partners, dessen Rechnungswesendaten geöffnet werden sollen.

organization ist die Identifikation oder Guid einer Organisation.

Ergebnis Die Funktion gibt die zurzeit gültigen Rechnungswesendaten des angegebenen Partners als ein typisiertes CisObject zurück.
Fehlerquellen Besitzt die Organisation keine Rechnungswesendaten für den Partner, so wird der Standardwert null für ein CisObject zurückgegeben.

Ist organization keine Firma, dann entsteht ein Laufzeitfehler.

Beispiele loadPartnerAccountingData("10010", "90000") gibt die Rechnungswesendaten des Partners 10010 für die Firma 90000 zurück.
Kontext OLTP
Hinweise Der organisationsbezogene Sperrstatus der Rechnungswesendaten befindet sich im Business Object com.cisag.app.general.obj.OrganizationalUnitPartner.
Siehe auch loadCustomer, loadPartner, loadPartnerMarketingInfo, loadSupplier

Folgendes Beispiel aus der Aktivitätsdefinition help.loadPartnerAccountingData öffnet die Rechnungswesendaten eines Partners.

function create()
{
var p_partner := parameters.PARTNER;
var p_organization := parameters.ORGANIZATION;
var r_accountingData := "";

var accountingData := loadPartnerAccountingData(p_partner, p_organization);
if (not isNull(accountingData))
r_accountingData := accountingData->Partner:number;

result.IS_NULL := isNull(accountingData);
result.ACCOUNTING_DATA := r_accountingData;
}

 

loadPartnerMarketingInfo

Name loadPartnerMarketingInfo
Beschreibung loadPartnerMarketingInfo gibt die Marketingdaten eines Partners zurück.
Signaturen CisObject(com.cisag.app.sales.obj.Customer) loadPartnerMarketingInfo(String partner, String organization)

CisObject(com.cisag.app.sales.obj.Customer) loadPartnerMarketingInfo(String partner, Guid organization)

CisObjectCustomer(com.cisag.app.sales.obj.Customer) load(Guid partner, String organization)

CisObject(com.cisag.app.sales.obj.Customer) loadPartnerMarketingInfo(Guid partner, Guid organization)

Parameter partner ist die Identifikation oder Guid des Partners, dessen Marketingdaten geöffnet werden sollen.

organization ist die Identifikation oder Guid einer Organisation.

Ergebnis Die Funktion gibt die zurzeit gültigen Marketingdaten des angegebenen Partners als ein typisiertes CisObject zurück.
Fehlerquellen Besitzt die Organisation keine Marketingdaten für den Partner, so wird der Standardwert null für ein CisObject zurückgegeben.

Ist organization keine Organisation, dann entsteht ein Laufzeitfehler.

Beispiele loadPartnerMarketingInfo("10010", "90000") gibt die Marketingdaten des Partners 10010 für die Organisation 90000 zurück.
Kontext OLTP
Hinweise Der organisationsbezogene Sperrstatus der Marketingdaten befindet sich im Business Object com.cisag.app.general.obj.OrganizationalUnitPartner. Dort steht auch, welche Organisation für die Bearbeitung der Marketingdaten zuständig ist. Ob eine Organisation seine eigenen Marketingdaten bearbeitet oder diese vererbt, können Sie u. a. dem andockbaren Fenster Organisationsdaten der Anwendung Partner entnehmen.
Siehe auch loadPartner, loadPartnerAccountingData, loadCustomer, loadSupplier

Folgendes Beispiel aus der Aktivitätsdefinition help.load öffnet die Marketingdaten eines Partners.

function create()
{
var p_partner := parameters.PARTNER;
var p_organization := parameters.ORGANIZATION;
var r_marketingInfo := "";

var marketingInfo := loadPartnerMarketingInfo(p_partner, p_organization);
if (not isNull(marketingInfo))
r_marketingInfo := marketingInfo->Partner:number;

result.IS_NULL := isNull(marketingInfo);
result.MARKETING_INFO := r_marketingInfo;
}

 

loadResponsibleOfPartner

Name loadResponsibleOfPartner
Beschreibung loadResponsibleOfPartner gibt den zuständigen Mitarbeiter eines Partners zurück.
Signaturen CisObject(com.cisag.app.general.obj.Partner) loadResponsibleOfPartner(String partner)

CisObject(com.cisag.app.general.obj.Partner) loadResponsibleOfPartner(Guid partner)

Parameter partner ist die Identifikation oder Guid des Partners, dessen zuständiger Mitarbeiter geöffnet werden soll.
Ergebnis Die Funktion gibt denjenigen Partner als ein typisiertes CisObject zurück, der als zuständiger Mitarbeiter dem Partner partner zugeordnet ist.
Fehlerquellen Existiert der Partner nicht oder ist dem Partner kein zuständiger Mitarbeiter zugeordnet, wird der Standardwert null für ein CisObject zurückgegeben.
Beispiele loadResponsibleOfPartner("10010") gibt den Partner zurück, der als zuständiger Mitarbeiter dem Partner 10010 zugeordnet ist.
Kontext OLTP
Hinweise
Siehe auch loadTargetsOfPartnerRelations

Folgendes Beispiel aus der Aktivitätsdefinition help.loadResponsibleOfPartner gibt den zuständigen Mitarbeiter eines Partners zurück.

function create()
{
var p_partner := parameters.PARTNER;
var r_responsible := "";

var responsible := loadResponsibleOfPartner(p_partner);
if (not isNull(responsible))
r_responsible := responsible:number;

result.IS_NULL := isNull(responsible);
result.RESPONSIBLE := r_responsible;
}

 

loadSupplier

Name loadSupplier
Beschreibung loadSupplier gibt die Lieferantendaten eines Partners zurück.
Signaturen CisObject(com.cisag.app.purchasing.obj.Supplier) loadSupplier(String partner, String organization)

CisObject(com.cisag.app.purchasing.obj.Supplier) loadSupplier(String partner, Guid organization)

CisObjectSupplier(com.cisag.app.purchasing.obj.Supplier) loadSupplier(Guid partner, String organization)

CisObject(com.cisag.app.purchasing.obj.Supplier) loadSupplier(Guid partner, Guid organization)

Parameter partner ist die Identifikation oder Guid des Partners, dessen Lieferantendaten geöffnet werden sollen.

organization ist die Identifikation oder Guid einer Beschaffungsorganisation.

Ergebnis Die Funktion gibt die zurzeit gültigen Lieferantendaten des angegebenen Partners als ein typisiertes CisObject zurück.
Fehlerquellen Besitzt die Organisation keine Lieferantendaten für den Partner, wird der Standardwert null für ein CisObject zurückgegeben.

Ist organization keine Beschaffungsorganisation, entsteht ein Laufzeitfehler.

Beispiele loadSupplier("10010", "90000") gibt die Lieferantendaten des Partners 10010 für die Beschaffungsorganisation 90000 zurück.
Kontext OLTP
Hinweise Der organisationsbezogene Sperrstatus der Lieferantendaten befindet sich im Business Object com.cisag.app.general.obj.OrganizationalUnitPartner. Dort steht auch, welche Organisation für die Bearbeitung der Lieferantendaten zuständig ist. Ob eine Organisation seine eigenen Lieferantendaten bearbeitet oder diese vererbt, können Sie u. a. dem andockbaren Fenster Organisationsdaten der Anwendung Partner entnehmen.
Siehe auch loadCustomer, loadPartner, loadPartnerAccountingData, loadPartnerMarketingInfo

Folgendes Beispiel aus der Aktivitätsdefinition help.loadSupplier öffnet die Lieferantendaten eines Partners.

function create()
{
var p_partner := parameters.PARTNER;
var p_organization := parameters.ORGANIZATION;
var r_supplier := "";

var supplier := loadSupplier(p_partner, p_organization);
if (not isNull(supplier))
r_supplier := supplier->Partner:number;

result.IS_NULL := isNull(supplier);
result.SUPPLIER := r_supplier;
}

 

loadTargetsOfPartnerRelations

Name loadTargetsOfPartnerRelations
Beschreibung help.loadTargetsOfPartnerRelations gibt die Zielpartner einer Partnerbeziehung für einen Quellpartner zurück.
Signaturen CisObject(com.cisag.app.general.obj.Partner)[] loadTargetsOfPartnerRelations(Guid partner, Guid organization, String type)

CisObject(com.cisag.app.general.obj.Partner)[] loadTargetsOfPartnerRelations(String partner, String organization, String type)

Parameter partner ist die Identifikation oder Guid des Quell-Partners.

organization ist die Identifikation oder Guid der Organisation, in deren Kontext die Partnerbeziehung definiert ist.

type ist die Identifikation des Partner-Beziehungtyps. Die zur Verfügung stehenden Partner-Beziehungstypen können Sie in der gleichnamigen Anwendung Partner-Beziehungstypen abfragen.

Ergebnis Die Funktion gibt alle Partner, die über eine Partnerbeziehung des Typs type mit dem Quell-Partner partner im Kontext der Organisation organization als Ziel-Partner verknüpft sind, als typisierte Liste zurück.

Ist eine Partner-Beziehung als bevorzugt gekennzeichnet, so wird deren Ziel-Partner als erstes Element der Liste übergeben.

Fehlerquellen Existiert keine Partnerbeziehung mit den angegebenen Daten, dann wird eine leere Liste zurückgegeben. Existiert kein Partner-Beziehungstyp mit dem Namen type, dann wird der Wert null zurückgegeben.
Beispiele loadTargetsOfPartnerRelations("10010", "00000", "Responsible")[0] gibt den zuständigen Mitarbeiter des Partners 10010 zurück.

loadTargetsOfPartnerRelations("10010", "90000", "Contact sales") gibt die Vertriebs-Ansprechpartner des Partners 10010 im Kontext der Vertriebsorganisation 90000 zurück.

Kontext OLTP
Hinweise
Siehe auch loadResponsibleOfPartner, substitute, superior

Folgendes Beispiel aus der Aktivitätsdefinition help.loadTargetsOfPartnerRelations gibt die Zielpartner einer Partnerbeziehung für einen Quellpartner zurück.

function create()
{
var p_sourcePartner := parameters.SOURCE_PARTNER;
var p_organization := parameters.ORGANIZATION;
var p_relation := parameters.RELATION;
var r_targetPartners := "";

var targetPartners :=
loadTargetsOfPartnerRelations(p_sourcePartner, p_organization, p_relation);

if (not isNull(targetPartners))
for (p as CisObject(com.cisag.app.general.obj.Partner) : targetPartners)
r_targetPartners := r_targetPartners + " " + p:number;

result.IS_NULL := isNull(r_targetPartners);
result.TARGET_PARTNERS := substring(r_targetPartners, 1);
}

 

Beispiel: E-Mail an einen beliebigen Ansprechpartner versenden

Im folgenden Beispiel soll eine Prozessdefinition erfasst werden, mit deren Hilfe der Benutzer eine E-Mail an einen beliebigen Ansprechpartner des Auftragsgebers eines Vertriebsauftrags versenden kann. Der Prozess soll über das Kontextmenü des Vertriebsauftrags gestartet werden und dem Benutzer in einem Auswahlfeld alle zulässigen Ansprechpartner mit einer E-Mail-Adresse anbieten.

Als Erstes erfassen Sie eine Prozessdefinition mit einem Aktionsknoten vom Typ Interaktiver E-Mail-Knoten.

Ereignisdefinition

Danach tragen Sie im Startknoten das Ereignis Benutzeraktion für das Business Object com.cisag.app.sales.obj.SalesOrderein. Mithilfe der Übergangsbeding können Sie bestimmen, unter welchen Bedingungen die Aktion im Kontextmenü des Vertriebsauftrags aktiviert ist. Um die Aktion nur für Vertriebsaufträge im Status In Bearbeitung und Freigegeben anzubieten, erfassen Sie folgende Übergangsbedingung:

parameters.object:status = 1 or parameters.object:status = 2

Um die Aktion nur dem zuständigen Mitarbeiter des Vertriebsauftrags anzubieten, erfassen Sie folgende Übergangsbedingung:

parameters.userGuid = parameters.object:responsible

Um zu verhindern, dass der Ausdruck den Wert nullzurückgibt, wenn im Vertriebsauftrag kein zuständiger Mitarbeiter hinterlegt ist, können Sie die Funktion firstverwenden und mit der Konstanten ZERO_GUIDvergleichen, wenn responsibleden Wert null hat:

parameters.userGuid = cast(Guid, first(parameters.object:responsible, ZERO_GUID))

Wenn Sie stattdessen mit parameters.userGuidvergleichen, dann steht die Funktion beliebigen Benutzern zur Verfügung, sobald kein zuständiger Mitarbeiter im Vertriebsauftrag erfasst ist. Ansonsten steht die Funktion nur dem zuständigen Mitarbeiter zur Verfügung:

parameters.userGuid = cast(Guid, first(parameters.object:responsible, parameters.userGuid))

Aktivitätsergebnisse

Um beim Starten des Prozesses die möglichen Ansprechpartner in einem Auswahlfeld anzubieten, erfassen Sie in der Aktivitätsdefinition für den Startknoten das Ergebnisfeld RECIPIENTSvom Feldtyp Dynamisches Mehrfach-Auswahlfeld.

In der Funktion applyDefaultsinitialisieren Sie das Feld RECIPIENTSmit den E-Mail-Adressen des Auftraggebers (Kunden) und seinen allgemeinen Ansprechpartnern sowie den Ansprechpartnern im Vertrieb wie unten beschrieben.

const State as valueSet(com.cisag.sys.workflow.ActivityState);
const EmailMethod := "300"; /* according to application „Communication methods“ */

function create()
{
/* save event information to process */
process.order := parameters.object;
process.orderText := parameters.object->Type:code + "-" + parameters.object:number;
process.customer := parameters.object->CustomerData->CustomerPartner;
}
function applyDefaults()
{
/* evaluate event information */
var order := parameters.object;
var company := loadOrganization(getCustomizingValue("com.cisag.app.General"):company);
var customer := parameters.object->CustomerData->CustomerPartner;
var invoicingOrganization := parameters.object->InvoicingPartyData->Organization;

/* initialize dynamic multi-selection field with customer and sales contacts */
var contactList as CisObject(com.cisag.app.general.obj.Partner)[];
add(contactList, order->CustomerData->CustomerPartner);
contactList := loadTargetsOfPartnerRelations(customer:guid, company:guid, "Contact");
contactList := union(contactList, loadTargetsOfPartnerRelations(customer:guid, invoicingOrganization:guid, "Contact sales"));

/* get e-mail addresses of all contacts */
var communicationData as CisObject(com.cisag.app.general.obj.CommunicationData)[];
var selectionValues := new(HashMap);
for (p : contactList) {
communicationData := loadCommunicationData(p:guid, EmailMethod);
for (email : communicationData) {
selectionValues[email:commData] := email:commData + " (" + p:searchString + ")";
}
}

/* format and initialize dynamic multi-selection field */
formatSelectionField("RECIPIENTS", selectionValues);
}

function validate(state as Number)

{
if (state = State.DONE) {
if (size(results.RECIPIENTS) = 0)
sendMessage(results.RECIPIENTS_id, "WARNING_MSG", list());
} else {

}
}

function close(state as Number)
{
/* save user input to process */
process.recipients := results.RECIPIENTS;
}

Beachten Sie bitte, dass Sie in der Fuktion applyDefaultsnicht die Prozessvariablen abfragen können, da im Startknoten eines manuellen Prozesses applyDefaultsvor der Funktion createaufgerufen wird.

Prozessvariablen

Die verwendeten Prozessvariablen erfassen Sie in der Prozessdefinition mit den folgenden Datentypen:

  • customer as CisObject(com.cisag.app.general.obj.Partner)
  • order as CisObject(com.cisag.app.sales.obj.SalesOrder)
  • orderText as String
  • recipients as String
Verknüpfungen

Beim Ereignis Benutzeraktion wird das Business Entity mit dem Startknoten und somit mit dem Prozess automatisch verknüpft. Sie müssen also nicht die Funktion addAttachment(parameters.object)ausführen, um später den Prozess über die Aktion Prozesse abfragen im Kontextmenü des Vertriebsauftrags zu finden.

Bearbeitung

Im Aktionsknoten vom Typ Interaktiver E-Mail-Knoten geben Sie die Empfänger genäß process.recipientsan.

const State as valueSet(com.cisag.sys.workflow.ActivityState);
const Separator := ", ";

function create()
{
/* format activity */
formatSubject("orderText", process.orderText);
formatSubject("date", format(process.order:date, "yyyy-MM-dd"));

/* set mail options */
var mailRecipientsTo := "";
for (recipient : process.recipients)
mailRecipientsTo := mailRecipientsTo + Separator + recipient;
mailRecipientsTo := substring(mailRecipientsTo, length(Separator));
setMailRecipientsTo(mailRecipientsTo);

/* set replyTo to email address of initiator */
var mailReplyTo := cast(String, getResultList("CONFIGURATION",
"SELECT u:emailAddress FROM com.cisag.sys.configuration.obj.User u " +
"WHERE u:guid = ?", list(userGuid(process.Initiator)), 1)[0][0]);
setMailReplyTo(mailReplyTo);
}

Damit die Aktivität für den Aktionsknoten sofort öffnet, wählen Sie im Feld Durchgehender Bearbeitungsmodus der Aktivitätsdefinition für den Startknoten den Modus Nachfolgeaktivität automatisch öffnen. Als Bearbeiter im Aktionsknoten wählen Sie Auslöser.

Wenn der Auslöser die Aktivität vom Typ Interaktiver E-Mail-Knoten erledigt, dann wird die E-Mail an den oder die Empfänger versendet. Wird die Aktivität ohne Bearbeitung erledigt, dann wird keine E-Mail versendet.

Die versendete E-Mail kann jederzeit über die erledigte Aktivität abgefragt werden. Die Aktivität ist aber kein vollständiger Nachweis über den Versand bzw. die Zustellung. Diese Informationen sind in der Regel nur über den verwendeten Mail Server verfügbar.

Verwendung von Textbausteinen

Der Prozess kann um standartisierte Textbausteine erweitert werden, die über eine OQL-Abfrage in die Aktivitätsdefinition eingebunden werden. Zum Beispiel könnte der Startknoten dem Benutzer auch ein Auswahlfeld für das Thema anbieten. Für jedes Thema wird ein eigener Textbaustein erfasst. Per Namenskonvention initialisiert der Startknoten ein dynamisches Auswahlfeld mit allen Textbausteinen, die z. B. mit SO_ oder einem anderen Präfix anfangen. Die Textbausteine können auch eine Menge von vordefinierten Parametern umfassen, die mithilfe der Funktion formatmit konkreten Werten aus dem Vertriebsauftrag oder dem Partner befüllt werden.

Mit einer solchen Lösung wäre es möglich, neue vorgefertigte E-Mail-Vorlagen zu beinahe beliebigen Themen zu erstellen, ohne die Workflow-Definitionen anpassen zu müssen.

Beispiel: Ablauforganisation über Partnerbeziehungen

Mit der Anwendung Stellen erfassen oder bearbeiten Sie Stellen. Eine Stelle ist sowohl die Zuordnung einer beruflichen Tätigkeit (einer Funktion) zu einem oder mehreren Mitarbeitern als auch die Einordnung in die Unternehmensstruktur (die Aufbauorganisation). Stellen beschreiben in einer Aufbauorganisation die einzelnen funktionalen Arbeitsplätze und deren Beziehungen zueinander.

Auch die Anwendung Partner bietet die Möglichkeit, eine Aufbauorganisation abzubilden. Durch die Verwendung eigener Partner-Beziehungstypen können Sie die Aufbauorganisation individuell an Ihre Organisation anpassen. Um in etwa die gleiche Funktionalität wie die Stellen durch Partner-Beziehungen abzubilden und im Workflow-Management zu verwenden, können Sie z. B. die Partner-Beziehungstypen Superior, Subordinate und Substitute erfassen.

Wo der Ausdruck superior(parameters.userGuid)die Vorgesetzten eines Benutzers über Stellenbeziehungen ermittelt, würde folgender Ausdruck die Partner der Vorgesetzten über die Partner-Beziehungen vom Typ Superior im Kontext der Organisation 90000 ermitteln:

loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, "90000", "Superior")

Um bei einer Zeitüberschreitung die mit den Partnern der Vorgesetzten verknüpften Benutzer zu ermitteln, muss jeder Partner in Benutzer aufgelöst werden:

var superiorUsers as Guid[];
var superiors as loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, "90000", "Superior");
for (p : superiors)
add(superiorUsers, resolvePartner(p:guid));

Sind die Partner-Beziehungen gereiht, dann kann der bevorzugt verknüpfte Partner mithilfe eines einzigen Ausdrucks aufgelöst werden:

resolvePartner(loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, "90000", "Superior")[0]:guid)

Wenn die Partner-Beziehungstypen Superior und Subordinate bi-direktionale Beziehungen sind, dann würde folgender Ausdruck alle untergeordneten Mitarbeiter eines Benutzers ermitteln:

loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, "90000", "Superior")

Beispiel: Stellvertreter auswerten

Ist in der Customizing-Funktion Vertretungsregelungen keine Herkunft für die Vorschlagswerte der Stellvertreter hinterlegt, dann müssen die Stellvertreter in der Anwendung Abwesenheiten einzeln erfasst werden. Die dort erfassten Stellvertreter können Sie mithilfe der Funktion getCisObjectListabfragen und z. B. als neue Bearbeiter bei einer Zeitüberschreitung verwenden.

Folgende Aktivitätsdefinition vom Typ Funktionsaufruf ermittelt alle Stellvertreter eines Benutzers ohne den Gültigkeitszeitraum oder Abwesenheitsstatus des Benutzers zu berücksichtigen:

function create()
{
var p_user := parameters.USER;
var r_substitutes := "";

var subs := getCisObjectList("REPOSITORY", "SELECT FROM com.cisag.sys.workflow.obj.Substitute o WHERE o:userGuid = ?", list(userGuid(p_user)), 99);
for (u as CisObject(com.cisag.sys.workflow.obj.Substitute) : subs)
r_substitutes := r_substitutes + ", " + userName(u:substituteGuid);

result.SUBSTITUTES := substring(r_substitutes, 2);
}

 

resolvePartner

Name resolvePartner
Beschreibung resolvePartner gibt eine Liste mit den Guids aller einem Partner zugeordneten Benutzer zurück.
Signaturen Guid[] resolvePartner(Guid partner)
Parameter partner ist die Guid des Partners, dessen zugeordnete Benutzer ermittelt werden sollen.
Ergebnis Die Funktion gibt eine Liste der Guids aller mit dem Partner verknüpften Benutzer zurück.
Fehlerquellen Ist der Benutzer im aktuellen Laufzeitkontext keinem Partner zugeordnet, so wird eine leere Liste zurückgegeben.
Beispiele Sie können die Funktion resolvePartner beispielsweise in einer Aktivitätsdefinition verwenden, um den zuständigen Mitarbeiter eines Partners oder eines Belegs als Bearbeiter der Aktivität zu definieren.

resolvePartner("70010") gibt eine Liste mit den Guids aller Benutzer zurück, die dem Partner 70010 zugeordnet sind.

resolvePartner(loadResponsibleOfPartner(parameters.object:guid):guid) ermittelt alle Benutzer, die dem zuständigen Mitarbeiter eines von parameters.object referenzierten Partners zugeordnet sind. Ist dem Partner kein zuständiger Mitarbeiter zugeordnet, dann gibt loadResponsibleOfPartner und somit auch resolvePartner den Wert null zurück.

resolvePartner(parameters.object->Responsible:guid) ermittelt alle Benutzer, die dem zuständigen Mitarbeiter eines von parameters.object referenzierten Belegs zugeordnet sind.

minus(resolvePartner(getByPrimaryKey(CisObject( com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner), list(parameters.userGuid)) ermittelt diejenigen Benutzer, die dem gleichen Partner zugeordnet sind wie der Benutzer, der das Ereignis vom Typ Business Entity ausgelöst hat.

Kontext OLTP
Hinweise
Siehe auch resolveRole (siehe Dokumentation System-Skriptsprache: Allgemeine Funktionen, Funktionen für Benutzer (User functions)), resolveJobTitle

Folgendes Beispiel aus der Aktivitätsdefinition help.resolvePartner gibt eine Liste mit Guids aller mit einem Partner zugeordneten Benutzer zurück.

function create()
{
var p_partner := parameters.PARTNER;
var r_users := "";
var partner := loadPartner(p_partner);

if (not isNull(partner)) {
var users := resolvePartner(partner:guid);
for (u as Guid : users)
r_users := r_users + " " + userName(u);
}
result.USERS := substring(r_users, 1);
}

 

Weitere Funktionsdeklarationen für Partner

Dieses Kapitel schlägt weitere Funktionsdeklarationen für Partner vor, die Sie in Ihrem System erfassen und verwenden können. Die Funktionsdeklarationen sind ohne Gewähr und dienen in erster Linie das Erlernen der System-Skriptsprache.

Beispiel: loadPartnerOfUser

Name loadPartnerOfUser
Beschreibung loadPartnerOfUser gibt den mit einem Benutzer verknüpften Partner zurück.
Signaturen CisObject(com.cisag.app.general.obj.Partner) loadPartnerOfUser(Guid user)
Parameter user ist die Guid des Benutzers, dessen Partner geöffnet werden soll.
Ergebnis Die Funktion gibt den mit dem Benutzer verknüpften Partner als ein typisiertes CisObject zurück.
Fehlerquellen Ist der Benutzer im aktuellen Laufzeitkontext keinem Partner zugeordnet, so wird der Standardwert null für ein CisObject zurückgegeben.
Beispiele loadPartnerOfUser(userGuid("ADMINISTRATOR")) gibt den Partner zurück, dem der Benutzer ADMINISTRATOR zugeordnet ist.

loadPartnerOfUser(parameters.userGuid)gibt den Partner zurück, dem derjenige Benutzer zugeordnet ist, der das Ereignis vom Typ „Business Entity“ ausgelöst hat.

Kontext OLTP
Hinweise Der Partner des von parameters.userGuid referenzierten Benutzers kann auch mithilfe des folgenden Ausdrucks ermittelt werden:

getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid)
->Partner)

Siehe auch resolvePartner

Folgendes Beispiel aus der Aktivitätsdefinition help.loadPartnerOfUser gibt den mit einem Benutzer verknüpften Partner zurück.

function create()
{
var p_user := parameters.USER;
var r_partner := "";
var partnerOfUser as CisObject(com.cisag.app.general.obj.Partner);

var user := userGuid(p_user);
if (not user = INVALID_GUID) {
partnerOfUser := loadPartnerOfUser(user);
if (not isNull(partnerOfUser))r_partner := partnerOfUser:number;

}
result.IS_NULL := isNull(partnerOfUser);
result.PARTNER := r_partner;
}

function loadPartnerOfUser(user as Guid) as CisObject(com.cisag.app.general.obj.Partner)
{
return
getByPrimaryKey(
CisObject(com.cisag.app.general.obj.UserAssignment),
user)->Partner;
}

Czy ten artykuł był pomocny?