Zu den Funktionen für Partner gehören u. a. Funktionen, um einen Partner und seine Rollen, sowie weitere partnerbezogene Daten zu öffnen:
- getGreeting
- getPreferredCommunicationData
- getValediction
- loadCommunicationData
- loadContacts
- loadCustomer
- loadPartner
- loadPartnerAccountingData
- loadPartnerMarketingInfo
- loadResponsibleOfPartner
- loadSupplier
- loadTargetsOfPartnerRelations
- resolvePartner
- Weitere Funktionsdeklarationen für Partner
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)
|
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.
|
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 "{$state}".</p> <p>Die Aufgabe soll mit der Priorität "{$priority}" bearbeitet und bis {$endTime} erledigt werden. Weitere Informationen entnehmen Sie bitte der Aktivitä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)
|
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)
|
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.
|
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)
|
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)
|
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)
|
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)
|
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)
|
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)
|
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)
|
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)
|
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)
|
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.
|
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.SalesOrder
ein. 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 null
zurückgibt, wenn im Vertriebsauftrag kein zuständiger Mitarbeiter hinterlegt ist, können Sie die Funktion first
verwenden und mit der Konstanten ZERO_GUID
vergleichen, wenn responsible
den Wert null
hat:
parameters.userGuid = cast(Guid, first(parameters.object:responsible, ZERO_GUID))
Wenn Sie stattdessen mit parameters.userGuid
vergleichen, 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 RECIPIENTS
vom Feldtyp Dynamisches Mehrfach-Auswahlfeld.
In der Funktion applyDefaults
initialisieren Sie das Feld RECIPIENTS
mit 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 applyDefaults
nicht die Prozessvariablen abfragen können, da im Startknoten eines manuellen Prozesses applyDefaults
vor der Funktion create
aufgerufen 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.recipients
an.
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 format
mit 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 getCisObjectList
abfragen 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.
|
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.
|
Kontext | OLTP |
Hinweise | Der Partner des von parameters.userGuid referenzierten Benutzers kann auch mithilfe des folgenden Ausdrucks ermittelt werden:
|
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; }