Technik:CoPlanner-Server: Unterschied zwischen den Versionen

Aus CoPlanner 11
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 526: Zeile 526:


====Festlegen der Reihenfolge====
====Festlegen der Reihenfolge====
Die Abarbeitungsreihenfolge einer Formel kann in der Übersicht der auslösenden Tabellen im Feld Order festgelegt werden. Wird keine Reihenfolge vergeben, oder kann keine Reihenfolge ermittelt werden (z.B. Formel wird durch ein Makro aufgerufen), so wird die Reihenfolge auf 1 gesetzt.
Die Priorität für die Abarbeitung einer Formel wird anhand der Tabelle, deren Änderung die Berechnung der Formel triggert, festgelegt. Somit können Formeln mit unterschiedlicher Priorität ausgeführt werden (z.B. bei den variablen Kosten: wird die Neuberechnung der Variablen Kosten durch eine Änderung in der variablen Kosten-Planung ausgelöst, so will in der Maske auf das Ergebnis warten, wird die Berechnung hingegen durch eine Änderung in der Umsatzplanung getriggert, so soll diese Berechnung im Hintergrund passieren. Das lässt sich realisieren, indem man den beiden Tabellen „Umsatzerlöse“ und „Variable Kosten unterschiedliche Prioritäten im Formeldesigner zuweist)


====Vermeidung Queue Starvation====
Wird keine Reihenfolge vergeben, oder kann keine Reihenfolge ermittelt werden (z.B. Formel wird durch ein Makro aufgerufen), so wird die Reihenfolge auf 1 gesetzt.
Wenn in einem Modell Formeln schneller ausgelöst werden, als diese abgearbeitet werden können, kann es zu Queue Starvation kommen, d.h. Elemente am Ende der Queue werden nie abgearbeitet.
Ein Beispiel: in einer intensiven Planungsphase wird alle 5 Sekunden ein neuer Wert durch die Anwender des CoPlanners erfasst. Die Änderung in der Eingabetabelle löst dabei 3 Formeln aus, F1 mit einer Berechnungsdauer von 10 Sekunden und Reihenfolge 1, F2 mit einer Berechnungsdauer von 20 Sekunden und Reihenfolge 2, und F3 mit einer Berechnungsdauer von 1 Sekunde und einer Reihenfolge von 3.
Da alle 5 Sekunden eine neue Berechnungsanforderung für F1, F2 und F3 generiert und in die Liste der zu berechneten Formeln eingefügt wird, ist zu jedem Zeitpunkt eine Berechnungsanforderung für F2 und F3 vorhanden. Dies bedeutet, dass F3 nie gerechnet wird, da es immer eine Anforderung gibt, die zuerst zu rechnen ist.
Um dies zu verhindern, wird ein zweistufiges Prioritätskonzept verwendet, bei dem neben der Reihenfolge der Formeln auch Berechnungsblöcke verwendet werden. Die Blöcke funktionieren dabei wie folgt:


:* Offene Anforderungen werden immer zuerst nach Block, und dann erst nach Reihenfolge geordnet.
:* Im aktiven Block wird geprüft, ob die von der Reihenfolge her letzte Berechnungsanforderung schon zu lange in der Liste liegt (mehr als 10 Minuten), ist dies der Fall, so wird der aktuelle Block abgeschlossen, und ein neuer Block gestartet (d.h. der neue Block ist jetzt der aktive Block).
:* Die Prüfung, ob der aktuelle Block zu schließen ist, erfolgt beim Einfügen einer Berechnungsanforderung in die Liste.
:* Die Prüfung, ob eine Berechnungsanforderung bereits vorhanden ist, passiert immer nur innerhalb des aktiven Blocks, abgeschlossene Blöcke werden nicht betrachtet.


====Vermeidung Queue Starvation====
Wenn Gefahr droht, dass eine Berechnungsanforderung „ewig“ in der Queue warten muss, wird dies vom System erkannt, und neue Berechnungsanforderungen werden ab dem Zeitpunkt des Erkennens hinter die bereits in der Queue befindlichen Berechnungsanforderungen gelegt – unabhängig von der vergebenen Priorität.


Dadurch wird verhindert, dass es Formeln gibt, die unter Hochlast gar nicht berechnet werden (wobei das Abarbeiten des Blockes punktuell zu höheren Wartezeiten für den Benutzer führen kann).
Im bisherigen Mechanismus für die Festlegung der Abarbeitungsreihenfolge kann ein ähnlicher Effekt (durch das Erkennen & Entfernen von doppelten Anforderungen) entstehen, hier wurde nichts geändert.


====Masken: Warten auf Berechnungen der ersten Ebene====
====Masken: Warten auf Berechnungen der ersten Ebene====
Zeile 549: Zeile 540:
Mit der PriorityQueue kann dies feiner gesteuert werden, es wird auf die Abarbeitung aller direkt durch die Eingabe ausgelösten Formeln, deren Reihenfolge < 0 ist gewartet (ebenfalls benutzerübergreifend). Um auf eine Formel zu warten, die auf einer anderen Tabelle als der Eingabetabelle rechnet, muss man diese Formel nur von der Eingabetabelle aus triggern und mit einer passenden Priorität (< 0) versehen.
Mit der PriorityQueue kann dies feiner gesteuert werden, es wird auf die Abarbeitung aller direkt durch die Eingabe ausgelösten Formeln, deren Reihenfolge < 0 ist gewartet (ebenfalls benutzerübergreifend). Um auf eine Formel zu warten, die auf einer anderen Tabelle als der Eingabetabelle rechnet, muss man diese Formel nur von der Eingabetabelle aus triggern und mit einer passenden Priorität (< 0) versehen.
Dies kann z.B. wie folgt genutzt werden: in einer Umsatztabelle wird über eine Update-Formel der Umsatzsteuersatz zum aktuellen Datensatz dazugeholt und die USt gerechnet, und über eine weitere Formel der Umsatz für eine GuV-Berechnung weitergeschrieben. In der Maske wird jetzt auf die Update-Formel gewartet, da USt und USt-Satz dem Benutzer angezeigt werden, auf das Weiterschreiben in Richtung GuV wird jedoch nicht gewartet.
Dies kann z.B. wie folgt genutzt werden: in einer Umsatztabelle wird über eine Update-Formel der Umsatzsteuersatz zum aktuellen Datensatz dazugeholt und die USt gerechnet, und über eine weitere Formel der Umsatz für eine GuV-Berechnung weitergeschrieben. In der Maske wird jetzt auf die Update-Formel gewartet, da USt und USt-Satz dem Benutzer angezeigt werden, auf das Weiterschreiben in Richtung GuV wird jedoch nicht gewartet.


====Sonderstellung der SAME-Formel====
====Sonderstellung der SAME-Formel====
Wird die Berechnung von SAME-Formeln durch eine Dateneingabe ausgelöst, so werden diese Formel direkt beim Speichern des Datensatzes synchron gerechnet (und nicht in die Liste eingefügt). Die Berechnung erfolgt somit nicht über die Liste mit durchzuführenden Berechnungen.
Wird die Berechnung von SAME-Formeln durch eine Dateneingabe ausgelöst, so werden diese Formel direkt beim Speichern des Datensatzes synchron gerechnet (und nicht in die Liste eingefügt). Die Berechnung erfolgt somit nicht über die Liste mit durchzuführenden Berechnungen.


====Anmerkungen====
====Anmerkungen====

Version vom 29. August 2018, 13:20 Uhr

Der Ordner CoPlanner-Server muss auf jenem Rechner vorhanden sein, welcher als Server fungieren soll. Dieser enthält einige Konfigurationsdateien, welche Variablen, die Verbindung zu Clients, uvm. definieren. Diese müssen sorgfältig konfiguriert werden.

SysCommands.xml

Diese Datei ist im Serververzeichnis zu finden. Sie beinhaltet Informationen für CoPlanner Systemeinstellungen. Zu beachten ist hierbei nur, in welcher Sprache der SQL-Server installiert ist. Handelt es sich um ein deutsches Setup, so müssen Sie als Anwender nicht eingreifen. Handelt es sich um ein englisches Setup, muss die Datei „SysCommands.xml“ gelöscht oder umbenannt und danach die Datei „SysCommands_EnSql.xml“, welche ebenfalls im Serververzeichnis liegt, in „SysCommands.xml“ umbenannt werden.

SvrConfig.xml

Diese Datei definiert Eigenschafen des CoPlanner-Servers. Sie befindet sich im Serververzeichnis.

<?xml version= "1.0" standalone="yes"?>
<SvrConfig.xml>
   <CopSettings>
      <Version>4</Version>
      <ConnectionString>Server=CopServer;Initial Catalog=COP_BIKE;Integrated Security=SSPI;pooling=false</ConnectionString>
      <DataBaseName>COP_BIKE</DataBaseName>
      <PortNumber>8963</PortNumber>
      <WebAppUrl>https://+:4443/coplanner</WebAppUrl>
      <FiscalYear>0</FiscalYear>
      <TcpFormatter>Native</TcpFormatter>
      <ServiceName>copService</ServiceName>
      <TelnetDebugPort>6900</TelnetDebugPort>
      <DefaultLanguage>german</DefaultLanguage>
      <BackupPath>C:\temp\</BackupPath>
      <BackupRestoreLimitinMB>50</BackupRestoreLimitinMB>
      <WebAuthenticateUrl>http://copsupport.coplanner.com/licence/get_cop_lic_v3.php</WebAuthenticateUrl>
      <LicenceID>123</LicenceID>
      <SSPIPort>11000-11100</SSPIPort>
      <ClientConnectionTimeOut>1440</ClientConnectionTimeOut>
      <EntitySecurity>true</EntitySecurity>
      <AllowNonPowerUserDeleteDimElementsWithData>false</AllowNonPowerUserDeleteDimElementsWithData>
      <SSPIServicePrincipalName></SSPIServicePrincipalName>
      <EventLogEntryLevel>ERROR</EventLogEntryLevel>
      <ServerLogPath></ServerLogPath>
      <IsAliveClientTypes>Windows|Web|Excel|PowerPoint|Word</IsAliveClientTypes>
      <MultiThreadCommand>true</MultiThreadCommand>
      <ProActiveCaching>true</ProActiveCaching>
      <SkipImportHistory>true</SkipImportHistory>
      <SecurityProxyLoad>false</SecurityProxyLoad>
      <NTLogonTypes>INTERACTIVE|NETWORK|BATCH</NTLogonTypes>
      <CopSysIDStartOffset>0</CopSysIDStartOffset>
      <DynamicMode>false</DynamicMode>
      <MaxRows>300000</MaxRows>
      <MaxSvrLogFileSize>0</MaxSvrLogFileSize>
      <DebugMode>false</DebugMode>
      <SSPITimeOut>20</SSPITimeOut>
      <SSPITimeToKeepReservedPorts>300</SSPITimeToKeepReservedPorts>
      <StoredProcedureTimeout>3600</StoredProcedureTimeout>
      <ShowLostDBConnectionWaruning>true</ShowLostDBConnectionWaruning>
      <IISUserName></IISUserName>
      <TransportUserName></TransportUserName>
      <PowerUserModeViaADOnly>false</PowerUserModeViaADOnly>
      <ADGroupPowerUser></ADGroupPowerUser>
      <ADGroupPartnerUser></ADGroupPartnerUser>
      <ADGroupManufacturerUser></ADGroupManufacturerUser>
      <LoadAllEntityDimensionEntriesToClient>false</LoadAllEntityDimensionEntriesToClient>
      <FormulasUsePriorityQueue>false</FormulasUsePriorityQueue>
      <ReportServerUrl>https://servername:4445/coplanner/reporting</ReportServerUrl>
      <DoVersionCheck>true</DoVersionCheck>
      <UseNewDBSync>true</UseNewDBSync>
      <DBSyncMaxThreads>10</DBSyncMaxThreads>
      <SSLCertificate></SSLCertificate>
      <DBCommandTimeout>600</DBCommandTimeout>
   </CopSettings>
   <SSASSettings>
      <Server>CopServer</Server>
      <DataBaseName>cop_olap</DataBaseName>
      <XmlaLoadActive>true</XmlaLoadActive>
      <UseRealElementIDs>true</UseRealElementIDs>
      <UseMultipleHierarchies>true</UseMultipleHierarchies>
      <MultiSelectFilterActive>false</MultiSelectFilterActive>
      <LoadMeasureFormatAndType>true</LoadMeasureFormatAndType>
      <ReplaceNullValues>false</ReplaceNullValues>
      <DimensionLoadMode>AsDimAndHierarchy</DimensionLoadMode>
      <LoadDimensionsByAlias>true</LoadDimensionsByAlias>
   </SSASSettings>
   <SSRSSettings>
      <ReportServerUrl>http://CopServer/reportserver</ReportServerUrl>
      <ReportWebServiceUrl>http://CopServer/reportserver/reportservice2005.asmx</ReportWebServiceUrl>
      <RootFolder>/CoPlanner/Reports</RootFolder>
      <UserFolder>/CoPlanner/User</UserFolder>
      <TempFolder>/CoPlanner/Temp</TempFolder>
      <SharedDataSourceReference>/CoPlanner/DataSources/CoPlanner</SharedDataSourceReference>
      <Parameters></Parameters>
   </SSRSSettings>
   <DBCon>
      <Stage>Server=CopServer;Initial Catalog=COP_STAGE;Integrated Security=SSPI</Stage>
   </DBCon>
   <SupportConfig>
      <SupportButton>True</SupportButton>
      <SendAsMail>True</SendAsMail>
      <EmailToSendTo>support@coplanner.com</EmailToSendTo>
      <IncludeSvrCommands>True</IncludeSvrCommands>
      <IncludeNavigation>True</IncludeNavigation>
      <IncludeSystemInfo>True</IncludeSystemInfo>
      <IncludeCPU>True</IncludeCPU>
      <IncludeMemory>True</IncludeMemory>
      <IncludeGraphics>True</IncludeGraphics>
      <IncludeScreenShot>True</IncludeScreenShot>
      <SendAsPost>True</SendAsPost>
      <DestUrlPost>http://copsupport.coplanner.com/coplanner/support/supportExtended.php</DestUrlPost>
      <SendAsGet>True</SendAsGet>
      <DestUrlGet>http://copsupport.coplanner.com/coplanner/support/{Culture}/support.php?UserInput={UserInput}&Version={Version}&ServerCommands={ServerCommands}&Navigation={Navigation}&SysInfo={SysInfo}&CPU={CPU}&Memory={Memory}&Graphics={Graphics}</DestUrlGet>
      <MaxNumbersOfServerLogLines>10</MaxNumbersOfServerLogLines>
   </SupportConfig>
</SvrConfig.xml>

CopSettings

Folgende Punkte müssen im Bereich CopSettings definiert werden:

Eintrag Beschreibung
ConnectionString
Server Name des Servers, auf dem sich die Datenbank befindet
Initial Catalog Name der Datenbank
User id Name des Benutzers, mit dem sich der CoPlanner-Server am SQL-Server anmeldet (standardmäßig sollte bereits die ID „sa“ existieren). Alternativ kann bzw. muss ein User mit entsprechenden Rechten am SQL-Server angelegt werden.
Password Passwort des Benutzers
Pooling Damit Restore Database (fix integriert im Entwicklermenü) funktioniert, muss im Connectionstring Pooling = false vorhanden sein!
DataBaseName Name der SQL-Datenbank
PortNumber Freigegebene und nicht verwendete Portnummer für die Kommunikation des CoPlanner-Servers mit den CoPlanner-Clients.
WebAppUrl Definiert die Basis-URL unter welcher der interne Webserver verfügbar ist, über den die REST-API und einige Features angesprochen werden. Wenn Sie die REST Funktionalitäten nicht nutzen wollen, kann der Eintrag einfach leer gelassen werden.

Bei Verwendung müssen die Schritte, welche unter Voraussetzungen für die Verwendung der REST-Funktionalitäten angeführt sind, ausgeführt werden.

FiscalYear Legt die Versetzung des Wirtschaftsjahres des Unternehmens zum Kalenderjahr fest. Dabei wird ausgehend vom Monat Jänner gerechnet.
  • 0: keine Wirtschaftsjahrversetzung
  • -1: Anfang des Wirtschaftsjahres im Dezember des Vorjahres
  • 1: Anfang des Wirtschaftsjahres im Februar desselben Jahres
TcpFormatter Legt den Übertragungsmodus zwischen Client und Server fest. Möglich ist die Auswahl zwischen "Bin" für binäre Übertragung, "Text" für Textübertragung und "Native" für native Übertragung mit höchster Komprimierung.
Hinweis  "Native" wird als Standardeinstellung empfohlen. Der gewählte Modus muss sowohl am Server als auch am Client („ClientConfig.xml“) eingestellt werden und übereinstimmen.
ServiceName Name des CopService
TelnetDebugPort Es ist möglich, mittels Telnet ein Sichtfenster zum CoPlanner-Server aufzubauen. Dieser Eintrag legt die Portnummer für die Telnetverbindung fest. Die Verbindung erfolgt durch die DOS-Eingabeaufforderung (Start Ausführen cmd). Zum Aufruf der Verbindung geben Sie: telnet rechnername portnummer (Bsp: telnet hostname 6900) ein und drücken auf Return.
DefaultLanguage Die Defaultsprache des CoPlanner Servers.
BackupPath Legt den temporären Speicherplatz für ein Datenbankbackup, welches durch einen Client veranlasst werden kann, fest. Der SQL-Server muss Schreibrechte auf das angegebene Verzeichnis haben. Es darf kein Netzlaufwerk sein, sondern auf ein lokales Volume des SQL-Servers verweisen.
BackupRestoreLimitinMB Maximale Größe des Datenbankbackup in MB.
WebAuthenticateUrl Link zur Überprüfung der CoPlanner Lizenz.
LicenceID Wird zwingend für den Start des CoPlanner Servers benötigt. (ID der Lizenz bspw. 123)
SSPIPort Port für die SSPI-Login Kommunikation zwischen CoPlanner Client und CoPlanner Server. Darf von der Firewall nicht geblockt werden.
ClientConnectionTimeOut Nach Ablauf wird die Client-Session am Server gelöscht. Angabe in Minuten. Default-Wert 1.440 Minuten.
EntitySecurity Durch diesen Eintrag kann man die Unternehmenssecurity deaktivieren, dass heißt der User kann nicht unternehmensübergreifend Werte erfassen. Ist der Eintrag nicht im Config File vorhanden, ist die Security per default aktiv.
AllowNonPowerUserDeleteDimElementsWithData Legt fest, ob nicht Poweruser Elemente mit Daten löschen dürfen.
SSPIServicePrincipalName Service Principal Name: Kann per default leer bleiben. Wird nur bei SSPI in Verbindung mit Double Hop benötigt Bspw.: "cop/mycomputer.mydomain.com"
EventLogEntryLevel Steuert, welche Einträge ins Ereignisprotokoll geschrieben werden, unterschieden wird nach Schweregrad des Fehlers.
  • Warning: Warnings und Fehler (Rote und Gelbe Cop-Würfel)
  • Error: Nur Fehler (Rote Würfel)
  • None: Gar keine Einträge
ServerLogPath Pfad und Verzeichnis um Logfiles zu speichern.

Ist der Eintrag nicht vorhanden bzw. die Value leer, wird das CoPlanner Serververzeichnis für die Ablage der Datei "Serverlog.txt" verwendet. Ist ein gültiges Verzeichnis eingetragen, erfolgt die Anlage der Datei "Serverlog.txt" in dem definierten Verzeichnis. Ist der Pfad ungültig, wird dies am Server beim Start ausgegeben, das Schreiben in die Log Datei wird deaktiviert. Lautet der Eintrag "NoLog", wird das Schreiben bzw. Erstellen der Log-Datei ebenfalls deaktiviert. Der User unter dem der CoPlanner Dienst läuft muss entsprechende Schreiberechte besitzen.

IsAliveClientTypes Client Typen die hier eingetragen werden senden alle 30 Sekunden AliveCommands an den Server um diesen mitzuteilen, dass die Session noch aktiv ist. Erhält der Server 3 Minuten keinen AliveCommand vom Client, wird die Session für 15 Minuten on Hold gesetzt. Sind die 15 Minuten abgelaufen und der Client hat sich nicht mehr gemeldet, wird die Session gelöscht. Folgende Client Typen sind zulässig: Excel, Windows, Web und am 9.5 HF 1.5 PowerPoint und Word. Die Typen können mit Pipe getrennt angegeben werden. Es wird empfohlen die Clienttypen anzugeben.
MultiThreadCommand Legt fest, ob die Abarbeitung in mehreren Threads durchgeführt wird.
ProActiveCaching Bei CoPlanner Würfeln wird ein Tupel Caching aktiviert. Dies hat zur Folge, das mehrmals verwendete Zwischenergebnisse zwischengespeichert werden und somit eine Performanceverbesserung erreicht wird.
SkipImportHistory Ist dieser Eintrag auf true, werden Fehlermeldungen beim Datenimport nicht in die History-Tabelle geschrieben.
SecurityProxyLoad Ist dieser Eintrag auf true, wird die Security erst beim LogIn für den User aufbereitet.
NTLogonTypes Die bei dieser Eigenschaft aufgelisteten NT Logon Typen werden bei der NT Authentifizierung durch einen Client verwendet. Folgende Typen stehen zur Verfügung: INTERACTIVE, NETWORK, BATCH
CopSysIDStartOffset Die erste vom System vergebene CopSysID wird um diesen Offset erhöht. Werden mehrere Modell mit unterschiedlichen CopServices verwendet, werden so doppelte CopSysIDs vermieden.
DynamicMode Dynamisches Nachladen für das Modell aktivieren.
MaxRows Dies ist die Anzahl der Datensätze, die maximal vom CoPlanner Server an den Client gesendet werden.
MaxSvrLogFileSize Die maximiale Größe welche die Serverlog-Files erreichen können. Wird diese Größe überschritten, wird diese Datei komprimiert und in ein Archiv-Verzeichnis verschoben. Null bedeutet keine Komprimierung. Die Konfiguration erfolgt in KB.
DebugMode Ist dieser Eintrag auf true wird am Server detailierter gelogged.
SSPITimeOut Definiert das TimeOut für die SSPI-Login Kommunikation zwischen Active Directory und CoPlanner Server.
SSPITimeToKeepReservedPorts Dieser Zeitraum in Sekunden gibt an, wie lange der Server einen Port mindestens reserviert lassen soll. Die Reservierung des Ports für den User erfolgt bei Klick auf Logon.
StoredProcedureTimeout Optionale Angabe eines Timeouts in Sekunden ehe die Ausführung einer SQL Prozedur im CoPlanner abgebrochen wird. Per default ist diese auf 3600 Sekunden gesetzt.
ShowLostDBConnectionWarning Ist dieser Eintrag auf True wird am Client angezeigt wenn die Verbindung zur Datenbank verloren gegangen ist.
IISUserName Dieser Eintrag ist notwendig, um via SSPI auf den Webclient zugreifen zu können. Der IISUserName ist die Identität des Anwendungspools. Ein Beispiel wäre: IIS APPPOOL\.NET v2.0.
TransportUserName Relevant für das automatisierte Transportwesen. Bitte beachten Sie, dass der hier vergebene User immer Herstellerrechte hat, auch wenn er sich normal über den Client anmeldet. Es muss sich hier um einen vollqualifizierten Windows Domänenuser handeln.
PowerUserModeViaADOnly Definiert, ob man in den unten definierten AD Gruppen sein muss, um sich als Hersteller, Partner oder PowerUser anmelden zu können.
ADGroupPowerUser Definiert die AD Gruppe für den Zugriff als PowerUser.
ADGroupPartnerUser Definiert die AD Gruppe für den Zugriff als Partner.
ADGroupManufacturerUser Definiert die AD Gruppe für den Zugriff als Hersteller.
LoadAllEntityDimensionEntriesToClient Definiert, ob die Filterung der Elemente bei Mandantendimensionen erst am Client stattfindet oder schon am Server. False bedeutet, dass die Filterung am Server stattfindet.
FormulasUsePriorityQueue Wenn auf true werden die Formeln nach der im Modell vergebenen Priorität abgearbeitet. Sollte nur bei Projekten verwendet werden, die auch eine vergebene Priorität haben. Siehe: Exkurs FormulasUsePriorityQueue
ReportServerUrl URL über die mit dem Repotserver kommuniziert werden kann. Nur notwendig, wenn das Webreporting im Einsatz ist.
DoVersionCheck Gibt an, ob bei Anmeldungen von den Clients geprüft werden soll, ob die Version und Hotfixnummer übereinstimmt.
UseNewDBSync Ab 9.5 HF 2.1: Gibt an, ob der neue DB Sync verwendet wird. True heißt, dass der neue DB Sync aktiv ist.
DBSyncMaxThreads Ab 9.5 HF 2.1: Gibt an, wie viele Threads zum Schreiben in die Datenbank verwendet werden, wenn der neue DB Sync aktiv ist. Wird kein Wert eingetragen, werden max. 2 Threads verwendet. Maximal wird der standardmäßig ermittelte Wert für die CPU (=Anzahl Cores – minus heuristischer Reduktion bei mehreren Cores) hergenommen, auch, wenn hier ein höherer Wert angegeben wäre. Ist hier ein niedrigerer Wert angegeben, wird der niedrigere Wert verwendet. Ist die Last beim Schreiben auf die Datenbank zu hoch, dann sollte dieser Wert reduziert werden.
SSLCertificate Ab 9.5 HF 2.4: Leer, wenn die Daten zwischen dem CoPlanner Server und den Clients unverschlüsselt übertragen werden. Will man eine verschlüsselte Übertragung muss hier der Fingerabdruck des Zertifikats eingetragen werden und bei den Clients in der ClientConfig.xml der SSLCommonName auf den Antragesteller (CN) des Zertifikats gesetzt werden. Weitere Informationen dazu sind hier zu finden.
DBCommandTimeout Ab 9.5 HF 2.6: Datenbank-Kommando-Timeout für bestimmte Befehle. Dieses Timeout zieht z.B. bei der Datenbringung von Importen. Früher gab es hier ein hard-codiertes Timeout von 10 Minuten, wo der SQL Server die Daten für den Import bereitstellen muss. Nun kann man dieses Timeout hier setzen. 600 entspricht den 10 Minuten.

SSASSettings

Folgende Punkte müssen im Bereich SSASSettings definiert werden:

Eintrag Beschreibung
Server Name des Servers, auf dem sich die OLAP-Datenbank befindet. Es muss der Name des Server bzw. die IP Adresse angegeben werden. Folgende Namen sind nicht zulässig: localhost, ., 127.0.0.1 und local.
DataBaseName Name der OLAP-Datenbank
XmlaLoadActive Ist dieser Eintrag auf true, werden Strukturdaten mittels XMLA geladen enormer Performancegewinn!
UseRealElementIDs Die echten OLAP-Keys werden verwendet unter der Voraussetzung, dass diese numerisch sind.
UseMultipleHierarchies Ist dieser Eintrag auf true, werden Alternativhierarchien von Olap Dimensionen geladen und können verwendet werden (ab SSAS 2005).
MultiSelectFilterActive Ist dieser Eintrag auf true, werden Dimensionen, die als Filter verwendet werden, mit Mehrfachauswahl (Multiselect) unterstützt. (Derzeit bis 9.3 werden keine MultiselectFilter für CoPlanner Dimensionen unterstüzt.)
LoadMeasureFormatAndType Ist dieser Eintrag auf true, werden Measureformat und Typ vom Olap Server pro Measure geladen. Bei false werden Measures immer als Text geladen und die Formatted Value verwendet (Achtung bei Culturevermischungen) (ab SSAS 2005).
ReplaceNullValues Ist dieser Eintrag auf true, werden Null Values vom Connector mit 0 ersetzt.
DimensionLoadMode Betrifft das Ladeverhalten von OLAP Dimensionen. Folgende Einträge sind zulässig: AsDimension (Defaultwert), AsDimHierarchy und AsDimAndHierarchy. Siehe: Exkurs SSAS Einstellungen
LoadDimensionsByAlias Diese Einstellung zieht wenn einem OLAP Cube eine Dimension mehrfach, mit unterschiedlichen Bezeichnungen, zugeordnet ist. Ist der Eintrag auf False gesetzt so wird die erste gefundene Dimension geladen, ist der Eintrag auf True gesetzt so werden alle Dimensionen geladen. Siehe: Exkurs SSAS Einstellungen
Wichtig  Werden die SSAS Einstellungen LoadDimensionByAlias bzw. DimensionLoadMode im Nachhinein geändert so müssen sämtliche Cubes die auf OLAP verweisen neu aufgebaut werden.

SSRSSettings

Folgende Punkte müssen im Bereich SSRSSettings definiert werden:

Eintrag Beschreibung
ReportServerUrl Das virtuelle Verzeichnis für den Berichtsserver.
ReportWebServiceUrl Der SOAP-Endpunkt für die Berichtsverwaltung.
RootFolder Das Basisverzeichnis für die Berichte am Berichtsserver.
UserFolder Das Verzeichnis für Berichte, die im BI-Center mit dem Berichtsassistenten erstellt werden. Fehlt die Angabe, wird das Basisverzeichnis verwendet.
TempFolder Das Verzeichnis für Berichte, die im Analyzer mit dem Berichtsassistenten erstellt werden. Fehlt die Angabe, wird das Basisverzeichnis verwendet.
SharedDataSourceReference Pfad und Name zu einer bereits vorhandenen Datenquelle am Berichtsserver, die vom Berichtsassistenten beim Erstellen eines neuen Berichtes verwendet wird. Fehlt diese Angabe erzeugt der Berichtsassistent eine im Bericht eingebettete Datenquelle. Bei Berichten mit eingebetteten Datenquellen kann vom Reportbuilder keine Vorschau angezeigt werden.
Parameters Derzeit nicht in Verwendung.

Folgende Punkte müssen im Bereich DBCon definiert werden:

Eintrag Beschreibung
Stage
Server Name des Servers, auf dem sich die Datenbank befindet
Initial Catalog Name der Datenbank
User id Name des Benutzers, mit dem sich der CoPlanner-Server am SQL-Server anmeldet (standardmäßig sollte bereits die ID „sa“ existieren). Alternativ kann bzw. muss ein User mit entsprechenden Rechten am SQL-Server angelegt werden.
Password Passwort des Benutzers
Pooling Damit Restore Database (fix integriert im Entwicklermenü) funktioniert, muss im Connectionstring Pooling = false vorhanden sein!

Weitere Variablen:
Variablen können zum Beispiel bei Importen benutzt werden. Importobjekte benötigen einen Connectionstring, um zB. eine Verbindung zu einer Vorsystemdatenbank aufbauen zu können. Um nun mit einem Eintrag mehrere Objekte gleichzeitig ändern zu können wird empfohlen, solche Connectionstrings als Variablen zu definieren, um Änderungen schneller vollziehen zu können.

<add key="Variablenname" value="Wert bzw. Eintrag, den die Variable haben soll"></add>

SupportConfig

Folgende Punkte müssen im Bereich SupportConfig definiert werden:

Eintrag Beschreibung
SupportButton Steuert die Anzeige des Support Buttons.
SendAsMail Versenden der Informationen per Mail. Für nicht sichtbare Parameter wird not provided übermittelt. Sofern Office am Rechner installiert ist, wird eine zip-Datei mit den Informationen an das Email angehängt. Bei anderen Email-Clients öffnet sich das Mail und es kommt ein Hinweis, dass man die Informationen aus der Zwischenablage einfügen kann.
Wenn Informationen nur per Mail geschickt werden soll, deaktivieren Sie die Optionen SendAsPost und SendAsGet, da diese sonst zusätzlich ausgeführt werden.
EmailToSendTo Adresse an die das Mail geschickt werden soll.
IncluceSvrCommands Definiert ob die Serverkommandos mit übermittelt und angezeigt werden.
IncludeNavigation Definiert ob die letzten Navigationsschritte übermittelt und angezeigt werden.
IncludeSystemInfo Definiert ob die Systeminformationen übermittelt und angezeigt werden.
IncludeCPU Definiert ob die Informationen zur CPU übermittelt und angezeigt werden.
IncludeMemory Definiert ob die Informationen über den Speicher übermittelt und angezeigt werden.
IncludeGraphics Definiert ob die Informationen über die Grafikkarte übermittelt und angezeigt werden.
IncludeScreenshot Definiert ob der Screenshot übermittelt und angezeigt werden.
SendAsPost Definiert ob die Übermittlung via Post erfolgen soll.
DestUrlPost URL an die die Daten übergeben werden sollen. Parameter, die als nicht sichtbar gesetzt sind werden als not provided angezeigt.
Namen der übergebenen Parameter: UserInput, Version, ServerCommands, Navigation, SysInfo, CPU, Memory und Graphics.
Sofern das Senden nur über Post funktionieren soll, bitte SendAsMail und SendAsGet deaktivieren, da diese sonst auch ausgeführt werden.
SendAsGet Definiert ob die Übermittlung via Get erfolgen soll.
DestUrlGet URL mit den Parametern an die die Information übermittelt werden soll. Wenn Parameter über die Optionen oben deaktiviert sind, werden diese mit not provided angegeben. Für diese Variante müssen die Informationen begrenzt werden, da wegen Beschränkungen des Browsers nach ca. 2000 Zeichen die URL abgeschnitten wird.
Sofern das Senden nur über Get funktionieren soll, bitte SendAsMail und SendAsPost deaktivieren, da diese sonst auch ausgeführt werden.
MaxNumbersOfServerLogLines (Ab 9.5 HF 1.3) Anzahl wieviele Zeilen des Serverlogs übergeben werden

Exkurs SSAS Einstellungen

Der CoPlanner-Server bietet mehrere Möglichkeiten SSAS-Dimensionen zu laden. Im Folgenden werden die zulässigen Einstellungen aufgelistet.

DimensionLoadMode LoadDimensionByAlias Einstellung Ergebnis
AsDimension False
AsDimension True
AsDimHierarchy True
AsDimAndHierarchy True
Wichtig   Per Default gelten folgende Einstellungen: DimensionLoadMode=AsDimHierarchy bzw. LoadDimensionByAlias=True.
Wichtig  Werden die SSAS Einstellungen LoadDimensionByAlias bzw. DimensionLoadMode im Nachhinein geändert so müssen sämtliche Cubes die auf OLAP verweisen neu aufgebaut werden.

Nachfolgend werden die zulässigen OLAP Einstellungen näher beschrieben

Eintrag Beschreibung
XmlaLoadActive
  • Defaultwert = True, dieser Wert wird vom CoPlanner gesetzt, wenn die Einstellung nicht im SvrConfig getroffen wurde
  • diese Einstellung gibt an mit welcher Methode die OLAP Dimensionselemente geladen werden:
   - False: die DimensionsMembers werden mittels Level.GetMembers() geladen
   - True: die DimensionsMembers werden aus SchemaDataSet geholt. (Die ADOMD Methode GetSchemaDataSet(…) wird verwendet.)


Exkurs FormulasUsePriorityQueue

Im Formelwerk gibt es die Möglichkeit, eine Execution Order für Formeln zu definieren. Damit diese angewendet wird muss der Parameter „FormulasUsePriorityQueue“ im svrconfig.xml auf true gesetzt sein.

Mit dieser Option der Formelabarbeitung werden Formeln nicht wie bisher nach der Reihenfolge, in der die Formeln durch die Änderungen der Tabelle getriggert wurden, abgearbeitet, sondern nach Priorität.

Anhand eines einfachen Beispiels werden altes und neues Verhalten verglichen: wenn sich in der Gewinn- und Verlustrechnung die Umsätze ändern, dann ändert sich der Gewinnvortrag und auch die Bilanz muss neu gerechnet werden.

Ohne Anpassung der Priorität wird jetzt mit der Änderung eines Umsatzes im Jänner der Gewinn-/Verlustvortrag für den Februar angepasst und die Bilanz neu gerechnet, durch die Änderung des Gewinn-/Verlustvortrags im Februar ändert sich auch der Gewinn-/Verlustvortrag im März, und muss somit neu gerechnet werden. Beim Schreiben dieser Änderung wird auch wieder die Berechnung der Bilanz ausgelöst.

Vereinfacht gesagt, aus einer Umsatzänderung resultiert auch eine Gewinn-/Verluständerung, die monatsweise weitergeschrieben werden muss und bei jedem Weiterschreiben wird auch die Bilanz neu gerechnet.

Sinnvoll wäre es aber, zuerst die GuV fertig zu rechnen (d.h. den Gewinnvortrag bis Ende Jahr weiterzuschreiben), und erst dann die Daten einmal in die Bilanz zu übernehmen.

Dies kann über die PriorityQueue erreicht werden: hat die Formel für den Gewinn-/Verlustvortrag z.B. eine Priorität von 1 und die Formel, die die Bilanz aktualisiert, eine Priorität von 2, so wird bei jedem Weiterschreiben eine weitere Berechnung des Gewinn-/Verlustvortrags und eine Berechnung der Bilanz in die Berechnungsqueue gestellt.

In der PriorityQueue wird die Formel mit Priorität 1 vorgereiht, wodurch das Berechnen des Gewinn-/Verlustvortrags vor der Berechnung der Bilanz abgeschlossen wird. Zusätzlich erkennt das System, das es bereits eine Anforderung, die Bilanz neu zu rechnen, in der Queue hat und stellt diese Anforderung daher nicht mehr zusätzlich in die Queue.


Festlegen der Reihenfolge

Die Priorität für die Abarbeitung einer Formel wird anhand der Tabelle, deren Änderung die Berechnung der Formel triggert, festgelegt. Somit können Formeln mit unterschiedlicher Priorität ausgeführt werden (z.B. bei den variablen Kosten: wird die Neuberechnung der Variablen Kosten durch eine Änderung in der variablen Kosten-Planung ausgelöst, so will in der Maske auf das Ergebnis warten, wird die Berechnung hingegen durch eine Änderung in der Umsatzplanung getriggert, so soll diese Berechnung im Hintergrund passieren. Das lässt sich realisieren, indem man den beiden Tabellen „Umsatzerlöse“ und „Variable Kosten unterschiedliche Prioritäten im Formeldesigner zuweist)

Wird keine Reihenfolge vergeben, oder kann keine Reihenfolge ermittelt werden (z.B. Formel wird durch ein Makro aufgerufen), so wird die Reihenfolge auf 1 gesetzt.


Vermeidung Queue Starvation

Wenn Gefahr droht, dass eine Berechnungsanforderung „ewig“ in der Queue warten muss, wird dies vom System erkannt, und neue Berechnungsanforderungen werden ab dem Zeitpunkt des Erkennens hinter die bereits in der Queue befindlichen Berechnungsanforderungen gelegt – unabhängig von der vergebenen Priorität.


Masken: Warten auf Berechnungen der ersten Ebene

In Eingabemasken kann durch das Setzen des Flags „WaitForCalc“ festegelegt werden, ob auf Berechnungen gewartet wird. Im der bestehenden Implementierung zu Festlegung der Reihenfolge wird dabei auf alle Berechnungen gewartet, die direkt durch das Schreiben in eine Tabelle ausgelöst wurden (dies wird durch Kalkulationstiefe 1 gekennzeichnet). Dabei wird auf alle Formeln der Kalkulationstiefe 1 gewartet, unabhängig davon, ob die Berechnung durch den Benutzer selbst oder durch die Eingabe eines anderen Benutzers ausgelöst wurde.

Mit der PriorityQueue kann dies feiner gesteuert werden, es wird auf die Abarbeitung aller direkt durch die Eingabe ausgelösten Formeln, deren Reihenfolge < 0 ist gewartet (ebenfalls benutzerübergreifend). Um auf eine Formel zu warten, die auf einer anderen Tabelle als der Eingabetabelle rechnet, muss man diese Formel nur von der Eingabetabelle aus triggern und mit einer passenden Priorität (< 0) versehen. Dies kann z.B. wie folgt genutzt werden: in einer Umsatztabelle wird über eine Update-Formel der Umsatzsteuersatz zum aktuellen Datensatz dazugeholt und die USt gerechnet, und über eine weitere Formel der Umsatz für eine GuV-Berechnung weitergeschrieben. In der Maske wird jetzt auf die Update-Formel gewartet, da USt und USt-Satz dem Benutzer angezeigt werden, auf das Weiterschreiben in Richtung GuV wird jedoch nicht gewartet.


Sonderstellung der SAME-Formel

Wird die Berechnung von SAME-Formeln durch eine Dateneingabe ausgelöst, so werden diese Formel direkt beim Speichern des Datensatzes synchron gerechnet (und nicht in die Liste eingefügt). Die Berechnung erfolgt somit nicht über die Liste mit durchzuführenden Berechnungen.


Anmerkungen

Es wird generell davon abgeraten, die PriorityQueue zu verwenden, ohne das Verhalten des Rechenwerks bei bestehenden Modellen ausführlich zu testen. Die Änderung von Duplikaten musste im Rahmen der Implementierung der neuen Funktionsweise ebenfalls angepasst werden; dies kann in Ausnahmefällen dazu führen, dass die Berechnungs-reihenfolge in bestehenden Modellen anders ist als bisher.


Konfigurationstool

Zum Bearbeiten der CoPlanner Server Einstellungen steht im Server-Verzeichnis ein Konfigurationstool "SvrConfig.exe" zur Verfügung.

CoPlanner-Server als Dienst

Der CoPlanner-Server kann auch als Dienst installiert werden. Wichtig hierbei ist, dass Sie Administratorrechte besitzen, um die Installation durchführen zu können. Sie starten den Dienst mit der Schaltfläche "Install service", der unter CopSettings zu finden ist. Der Service wird mit dem Namen gestartet, der unter ServiceName angegeben ist. Um den CoPlanner-Server als Dienst zu deinstallieren wählen Sie "Uninstall service".

Mehrere CoPlanner Dienste auf einem Rechner installieren

Auf einem Rechner können auch mehrere CoPlanner Services installiert werden. Dazu ist lediglich der ServiceName unter den CopSettings zu ändern und der Dienst erneut zu installieren. Unter den Windows Diensten sind dann 2 voneinander unabhängige Dienste vorhanden.


CoPlanner-Server als Applikation

Starten des Servers als Applikation

Durch das Kopieren des Serververzeichnisses auf den Rechner ist die Installation eigentlich beendet. Sie müssen nur noch die Datei CopServer.exe starten. Ein Konsolenfenster erscheint. Hier können Sie mit verfolgen, welche Operationen der CoPlanner-Server gerade ausführt. Im Zusammenhang mit 64 Bit wird nur der SQL Server bzw. Analysis Server 2005 unterstützt.

CoPlanner Server und 64 Bit Systeme

Es besteht die Möglichkeit, den CoPlanner auf 64 Bit Systemen zu betreiben. Der Vorteil hier sind schnellere Prozessablaufzeiten und vor allem die Möglichkeit, mehr Speicher zu nutzen. Unter 32 Bit stehen einem .Net Prozess bekanntlich nur 1,3 GB zur Verfügung.

Voraussetzungen

Um nun den CoPlanner Server auf einem 64 Bit System betreiben zu können, werden folgende Komponenten vorausgesetzt bzw. empfohlen:

  • Windows Server 2008/2008 R2/2012/2012 R2/2016 x64 (am Rechner des CoPlanner Servers)
  • Net Framework 4.6.2 x64 (am Rechner des CoPlanner Servers) mit SP1
  • XML Parser 4 mit SP2 (Package wie unter 32 Bit) (am Rechner des CoPlanner Servers)
  • XML Parser 6 x64 (am Rechner des CoPlanner Servers)
  • AdoMD.Net (selbe Package wie unter 32 Bit) (am Rechner des CoPlanner Servers)
  • SQL Server 2008 R2/2012 (empfohlen x64) mit SP2/2014/2016
  • Analysis Services 2008 R2/2012 (empfohlen x64) mit SP2/2014/2016

Zusätzliche Voraussetzungen für die Verwendung der REST-Funktionalitäten

Damit der Benutzer, unter dem der CoPlanner Server/das Service, läuft nicht Administrator sein muss, muss für den Benutzer und die definierte WebAppUrl (Parameter in der svrconfig.xml siehe oben) folgender Befehl in der Konsole als Administrator ausgeführt werden.

netsh http add urlacl url=<WebAppUrl> user=<DOMAIN\user>

Parameter Beschreibung
url WebAppUrl, welche in der svrconfig vergeben wurde
user Benutzer unter dem der CoPlanner Server/das Service laufen soll


Beispiel: netsh http add urlacl url=https://+:4443/coplanner user=Cop\Serviceuser


Entfernen kann man diesen Eintrag mit netsh http delete urlacl url=<WebAppUrl>

Beispiel: netsh http delete urlacl url=https://+:4443/coplanner


Bindung des SSL Zertifikats

Für die Bindung des SSL Zertifikats muss folgender Befehl als Administrator in der Konsole ausgeführt werden

netsh http add sslcert ipport=0.0.0.0:<Portnummer> certhash=<fingerprint> appid=<GUID>

Parameter Beschreibung
Portnummer Portnummer, welche in der WebAppUrl verwendet wird. z.B. bei WebAppUrl https://+:4443/coplanner wäre das 4443
certhash Fingerabdruck des Zertifikats. Dieser ist in den Details des Zertifikats zu finden und muss hier ohne den Leerzeichen angegeben werden.
GUID Die GUID unterscheidet sich, ob der CoPlanner als Server oder als Service verwendet wird
  • Service: {82880fad-ad78-4531-99ba-533f4c8e5840}
  • Server: {6ef7e594-5b5e-4626-904a-47b513e81e30}


Beispiel: netsh http add sslcert ipport=0.0.0.0:4443 certhash=2170950415ef045f6cb314c92e124411dd0590bf appid={6ef7e594-5b5e-4626-904a-47b513e81e30}


Entfernen kann man diese Bindung mit delete sslcert ipport=0.0.0.0:<Portnummer>

Beispiel: netsh http delete sslcert ipport=0.0.0.0:4443


Umstellung bestehender Systeme

Soll ein Upgrade von SQL Server 2000 auf eine höhere Version durchgeführt werden, kann die SQL Server Datenbank bis SQL Server 2008 R2 problemlos wiederhergestellt werden. Bei neueren Versionen ist ein Zwischenschritt notwendig. Man muss die Datenbank auf eine SQL Server Version kleiner gleich 2008 R2 wiederherstellen, dort erneut sichern und dann auf der gewünschten Zielversion wiederherstellen. Leider ist dies bei DTS Packages (Data Transformation Services) und Analysis Server 2000 Datenbanken (Olap) nicht der Fall. DTS Packages müssen in der neuen Umgebung SQL Server Integration Services (SSIS) neu erstellt werden, da keine Abwärtskompatibilität seitens MS gegeben ist. Analysis Services Datenbanken können portiert werden, jedoch können dabei Fehler auftreten bzw. können bei portierten Datenbanken die neuen Features eingeschränkt bis gar nicht verwendet werden. Hier empfehlen wir einen Neuaufbau der Datenbank.