<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >> Navigation: Release Notes > V3.0.x > V3.0.0 (CoreLibraries 2.17.0) |
Um die neuen Features dieser Version verwenden zu können, muss die Datenbank auf das Update Skript "UpdBC147" aktualisiert werden.
In der UDL-Datei muss der Isolation Level auf RepeatableRead stehen (Verbindung -> Transaction management oder im ConnectionString: auto_commit_level=65536), damit der SC bei offenen Transaktionen nicht blockieren kann. Die erweiterte UDL-Eigenschaft "Integrated Security" muss leer sein, nicht "NONE".
•[DABSERV-69] DabisMobileBase-WebService hinzugefügt
•[DABSERV-63] Build gegen CoreLibraries 2.17.0
•[DABSERV-57] Neues Windows 10 Zertifikat für die Verbindung erstellt und hinzugefügt (Server "certificates\DabisServer.pfx" und Client "certificate\DabisServer.cer").
Bug Fixes
•[DABCL-658] - Tageslog-Datei-Fehlermeldungen
•[DABCL-660] - Aux-Files werden bei einem Update und Delete nicht berücksichtig
•[DABCL-661] - Verhinderung vom Mehrfachstart wird auf die falsche Assembly geprüft wieder rückgängig machen
•[DABCL-667] - Beim Hochladen eines Files müssen die Rechte des Übergeordneten Verzeichnisses übernommen werden
•[DABCL-668] - Fachrechte werden nicht aktualisiert, wenn sie zur Laufzeit ändern
•[DABCL-644] Nun wird der Jahrgang wieder als NULL gespeichert, wenn nichts vorhanden ist. Bis jetzt stand dann dort immer -1 als Wert drin.
•[DABCL-646] Bei den Such-Filtern wurden folgende Probleme behoben. DB Felder welche als Char(1) definiert sind, können nun auch im Such-Filter ohne Fehler verwendet werden. DB Felder können nun auch mit einem "leeren" Text gesucht werden. Dies funktionierte vorher nicht richtig.
•[DABCL-648] Fehler im LinkCriteriaResolver behoben, wenn in einem Criteria verschachtelte AND und OR Criterieas enthalten sind.
•[DABCL-654] Die Prüfung auf den Mehrfachstart wurde auf die falsche Assembly ausgeführt, was zBsp den Parallelbetrieb von IMP und IWP verhinderte.
•[DABCL-634] GetMediaDuration() verwendet nun für das Ermitteln der Audiolänge die AudioConvert.dll, falls vorhanden. Ist die AudioConvert.dll nicht vorhanden, dann wird weiterhin versucht die Länge über DirectShowLib zu ermitteln.
•[DABCL-636] Fehler behoben, dass manchmal das Ersetzen vom AudioDrive- durch den AudioShare-Pfad nicht funktionierte.
•[DABCL-637] Fehler bein Initialisieren der Zusatzfelder-Tabelle behoben.
•[DABCL-605] Der IntercomClient nutzt jetzt blockierende, anstatt asynchrone Pipes
•[DABCL-607] Die Titel-Planen-Funktionen in DataAccess-Functions prüfen nun beim Planen von Titeln in den Sendeplan, ob diese Titel ein Audiofile haben (mittels File.Exists) und befüllt nur dann das Feld SEFILENAME des neuen Sendeelements. Anderenfalls bleibt das Feld SEFILENAME jetzt leer.
•[DABCL-617] Ein Fehler wurde behoben, welcher das Exportieren von DataContract MusXml (Sohard.Dabis.Commons.ExportImport.MusXml.MusXmlExporter) verhinderte, wenn der Titel "TriggerSteuerbefehle" gesetzt hat.
•[DABCL-620] Fehler behoben, dass der VT-Editor beim Drücken der Enter-Taste nicht den Übergang gespeichert und den VT-Editor geschlossen hat.
•[DABCL-623] Das Property HasBlobData bezieht sich auf die Textfelder des Titels (Text, Anmod, Abmod). Wenn HasBlobData = null ist, dann wurden die Textfelder aus Preformance-Gründen nicht aus der DB gelesen und man weiss nicht ob der Titel Blobdaten hat oder nicht. Sie müssen nochmals explizit gelesen werden. Bei HasBlobData = false hat der Record keine Blobdaten und bei HasBlobData = true, hat der Titel Blobdaten
•[DABCL-628] Die SmartMix Marken (SyncIn & SyncOut) werden nun auch vom Markenset Objekt unterstützt.
•[DABCL-586] KeepAliveRequest wird periodisch an Ember+ Gerät verschickt. Intervall kann mittels Einstellung "KeepAliveRequestInverval" [s] konfiguriert werden. 0 bedeutet, dass der Mechanismus ausgeschalten ist. Zudem kann auch ein ConnectionTimeout konfiguriert werden, welches fürs Senden und, wenn KeepAliveRequestInverval > 0 ist, fürs Empfangen benutzt wird. Antwortet das Ember+ Gerät innerhalb des definierten ConnectionTimeouts nicht mit einer KeepAliveResponse, wird die Verbindung zum Gerät getrennt und versucht neu herzustellen. Ein ConnectionTimeout von 0 bedeutet, dass u.U. undendlich lange auf das Senden, bzw. auf eine Antwort gewartet wird.
•[DABCL-556] DrawingHelper.GetWavePoints wurde robuster gemacht, indem beim Zugriff auf levelPoint-Listenelemente geprüft wird, ob er sich noch innerhalb der levelPoint-Listengrösse befindet.
•[DABCL-559] Der erste Aufruf beim IAudioRenderClient erfolgte nicht aus einem STA-Thread heraus, was zu einem undefinierten Verhalten führen kann (spielte Müll aus).
•[DABCL-565] ServiceImplMainScheduler.DropVoicetrack wurde korrigiert: - Der Folgestart des ersten am aufzuhebenden VT beteiligten SEs (firstSe) wird nie aufgehoben. - Der Anfang des firstSe wird nur dann zurückgesetzt, wenn der Anfang von firstSe nicht auch als Ende eines darüber liegenden VTs verwendet wird (erkennbar an SlotNr&4==0) - Das Ende des secondSe wird nur dann zurückgesetzt, wenn das Ende des secondSe nicht auch als Anfang eines darunter liegenden VTs verwendet wird (erkennbar an SlotNr&1==0)
•[DABCL-571] Das Property "Sendezeit" von Sendeelement wird während UpdateObject jetzt auch in die DB geschrieben. Ein Mechanismus wurde dafür entwickelt, welcher für Properties, die nicht direkt auf ein DB-Feld gemappt werden können, ein spezialisiertes Update-Statement generieren kann. (AbstractDataMapper.GetUpdateStatement)
•[DABCL-574] Ein Fehler wurde korrigiert, durch den Sendeelemente mit Untertiteln und Triggered-Event-Steuerbefehlen nicht vom DataMapperSendeelement.GetObject/GetObjects gelesen werden konnte. Der Fehler bestand im inkorrekten Verarbeiten Query-Resultate, die durch den Join zwischen den Tabellen SENDEELEMENT, TRIGGEREDEVENTS und UNTERTITEL entstehen können.
•[DABCL-580] TransferJob: In der HttpRequest Action DATA-Eigenschaft werden nun Platzhalter-Ersetzungen auch dann korrekt gehandelt, wenn dadurch zusätzliche "&" oder "=" Zeichen durch das Ersetzen entstehen.
•[DABCL-558] Der erste Aufruf beim IAudioRenderClient erfolgte nicht aus einem STA-Thread heraus, was zu einem undefinierten Verhalten führen kann (spielte Müll aus).
•[DABCL-526] Fehler beim Prüfen der Fach-Rechte behoben, wenn in einem Fach keine Rechte gesetzt waren (FARECHTE = null)
•[DABCL-535] Fehler beim Setzen der Fachrechte nach dem externen Löschen eines Fachs behoben.
•[DABCL-537] Es wurde ein Fehler behoben, wo beim Entfernen einer Einstellung tiefer als Ebene 2 danach alle anderen Einstellungen beim Speichern auch gelöscht wurden.
•[DABCL-467] Wenn das Flag ReadTitelOnFachSemaphore gesetzt ist, werden bei FachSemaphore-Änderungen die Titel auf Grund des MODIFIED-Feldes (falls vorhanden) geprüft. Der Modified-Zeitstempel wird auf Millisekunden-Ebene verglichen.
•[DABCL-544] Die ToString() Methode von DataContracts.FachRechte verwendet zur Trennung von verschiedenen Gruppenrechten jetzt "Environment.NewLine" statt "\n\r", welches zusätzliche Leerzeilen produziert hat.
•[DABCL-546] Das Löschen von Objekt-Berechtigungen mit DataAccess.DeleteObjectPermission wird nun in 1000er Blöcke aufgeteilt, wenn notwendig, um eine Limitierung des DB-Servers für WHERE IN (...) Statements zu umgehen.
•[DABCL-547] Ein Fehler wurde korrigiert, durch den ein DabisObject nicht geklont werden konnte, wenn ein darin enthaltenes Enumerations-Property NULL war.
•[DABCL-548] Beim Zusammenfügen der Einstellungen trat ein Fehler auf, wenn es sich um eine Liste von Strings gehandelt hat. Dies ist nun auch möglich.
Changes
•[DABCL-663] - Der Typ vom Untertitel-Property in der TitelMetadata Klasse wegen WCF-Kompatibilität auf Untertitel<Titel> ändern
•[DABCL-630] Beim Programmaufruf kann nun auch der Parameter /LOGFILE= verwendet werden.
•[DABCL-645] Neben dem /M Kommandozeilenparameter gibt es nun auch noch den {{/M=NONE}}, {{/M=MODULE}} und {{/M=INSTANCE}} Kommandozeilenparameter. Beim {{/M}} und {{/M=MODULE}} wird zugelassen, dass das Modul mehrfach gestartet werden kann. Bei {{/M=NONE}} darf das Modul nicht mehrfach gestartet werden. Und mit {{/M=INSTANCE}} wird geprüft ob dieses Modul schon auf diesem Rechner mit der eingestellten Instanz läuft ({{/INSTANCE=xxx}}).
•[DABCL-626] Der neue Plugin Instanziierungs Manager ermöglicht das einfache Erstellen von Plugininstanzen für vorhandene Modul-Instanzen. Damit können Plugins auf die bereits vorhandenen Modul-Instanzen schnell und effizient verteilt werden, ohne für jede Modul-Instanz den eigenen Configuration Manager öffnen zu müssen. Für mehr Infos siehe Plugin-Konzept.
•[DABCL-602] Beim Initialisieren der DB-Nodes werden die, in den CoreLibraries verwendeten, Rechte aus der Anwendergruppen-Tabelle (AD02) immer gelesen und aktualisiert
•[DABCL-587] Das Setzen von Ember+ Parametern wurde optimiert.
•[DABCL-542] Vor dem Löschen von Modulinstanzen im Settings-Dialog erscheint nun eine Sicherheitsabfrage,
•[DABCL-78] In einfachen String-Properties werden Umgebungsvariablen und interne Variablen unterstützt (beide in der Form %name%, es wird nicht zwischen Gross- und Kleinschreibung unterschieden): - Es werden nur einfache String-Properties auf der ersten Ebene von SettingsDef unterstützt (keine RO-Properties, keine Strings in Listen, ...). - Zusätzlich werden Properties vom Typ SettingsDef unterstützt (rekursiv). - Beide werden nur beachtet, wenn ihnen ein DabisSettingAttribute (Hierarchie-Attribute) zugeordnet ist. - Die Basisklasse SettingsDef hat eine überschreibbare Methode ReplacePlaceholders, mit dieser kann in abgeleiteten Klassen das Ersetzen in einer "Sektion" erweitert/angepasst werden (wird z.B. in der Klasse PluginsConfig gemacht um das Ersetzen in den Plugins zu unterstützen). - Die Basisklasse SettingsBase unterstützt die internen Variablen ModuleInstance und ExecutableName. - Die Basisklasse SettingsBase hat eine überschreibbare Methode GetInternalVariableValue, mit dieser können in abgeleiteten Klassen weitere interne Variablen unterstützt werden. - Zuerst werden die Umgebungsvariablen erstzt, danach die internen Variablen. - Die Basisklasse SettingsBase hat eine überschreibbare Methode ReplacePlaceholders, mit dieser kann in abgeleiteten Klassen das Ersetzen von Varaibelen in einem einzelnen String erweitert/angepasst werden. - Das Ersetzen erfolgt nur in der gemergten Ansicht, d.h. im Dialog auf der linken Seite.
•[DABCL-563] TransferJob: Nebst den ursprünglichen Modi (auto) Active und (auto) Passive, kann die Verbindungsart für FTP Server nun auch explizit konfiguriert werden. Details siehe Kommentar unten oder in der Hilfe.
Features
•[DABCL-669] MobileBase Lizenzprüfung hinzufügen
•[DABCL-670] DabisWebService umbenennen in DabisMobileBaseService
•[DABCL-649] Eigenschaft DbAlias in TitelMetadata hinzugefügt
•[DABCL-650] EventBaseConfig-Klasse mit DatabaseLogin-Liste erweitert für die Suche über mehrere Datenbanken
•[DABCL-651] RESTful WebService mit den Funktionen von Sohard.Dabis.Contracts.ServiceContracts.IServiceContractWeb implementiert
•[DABCL-652] Sendungs-Obejkt wurde mit den String-Felder Data1 und Data2 erweitert
•[DABCL-655] DabisPremiumImportExport XML Schema um die Typen "sendungType", "sendungListType", "wellenType" und "wellenListType" erweitert. Neue Schema Version ist 4.0.
•[DABCL-629] Das dabisPremiumImportExport Schema wurde um die folgednen Felder auf die Version 2 erweitert. titelMetadataType: syncIn, syncOut, vorzeitigerStartNext, hitJahrgang, herkunftCode, musikVersionCode sendeelementType: importer, adBookingId, smartMix
•[DABCL-631] Verlinkungs- und Stackfach Funktionen implementiert
•[DABCL-633] DragAndDropHelper-Klasse mit Funktionen für MultiSelection erweitert
•DABCL-610] NullableValue-Typ für das Serialisieren von Nullable Datentypen erstellt und im BinaryDataContractConverter hinzugefügt
•[DABCL-611] Neue Funktionen für Einstellungen lesen und speichern hinzugefügt.
•[DABCL-615] Neue Klasse _Sohard.Dabis.Commons.ExportImport.XmlSerializerUtil_ für das einfache und schnelle Serialisieren nach XML, wahlweise mit Transformation.
•[DABCL-621] UpdateTitel Methode wurde mit dem optionalen Parameter "doNotifyOwnChanges" erweitert. Damit kann gesteuert werden, ob die Session, welche die Änderung gemacht hat, auch mit einem Callback notifiziert werden soll oder nicht.
•[DABCL-622] DABiS XML Premium Schema wurde um archivnr2 für Sendeelemente erweitert (aktuelle Schema Version 1.9). Beim Export über die Corelibs Klasse "Sohard.Dabis.Commons.ExportImport.DabisPremiumXml" wird das neue Schema erstellt.
•[DABCL-627] Titel-Verlinkung für die Anzeige von Links implementiert (Tabelle TITEL_FAECHER_LINK und TitelLink-Lizenz muss vorhanden sein)
•[DABCL-589] CueInPriority wurde in CueInMode umgewandelt. Wobei CueInPriority = false jetzt dem CueInMode "Minimal" und CueInPriority = true neu dem CueInMode "CueIn" entspricht. Weiter gibt es die Modis CueInMode "Chrunch&Roll" und CueInMode "LeftAlign". "Crunch&Roll" funktioniert eigentlich wie "CueIn", nur dass anstelle vom Eincuen ein Crunch&Roll (3. Spur wird während des Drops geduckt) gemacht wird. Bei "LeftAlign" wird der Drop immer linksbündig mit der 3. Spur positioniert, sofern er kürzer als die gefundene Sync-Marke (auf der 3. Spur) ist.
•[DABCL-594] DabisRichTextBox um die Funktion GetOTonImageYPos(short index) erweitert. Gibt die Y-Koordinate des gesuchten O-Ton-Bildes zurück.
•[DABCL-597] Neue Klasse Sohard.Dabis.Commons.Utils.MutableStopwatch: Eine Stopwatch mit der zusätzlichen Möglichkeit, die gemessene Zeit via AddTime-Methode zu manipulieren
•[DABCL-599] Der DataContract ReportEntry enthält nun das neue Property BlockPos.
•[DABCL-590] Der MultiStreamOutputChannel stellt die Verbindungszustände der Streams über das Property Streamers zur Verfügung.
•[DABCL-591] Mit DragAndDropHelper.IsTitelWithArchivNr kann abgefragt werden, ob in den D&D-Daten ein Titel mit gesetzter ArchivNr enthalten ist.
•[DABCL-592] Allgemein verwendbares Plugin um UDP basierte Geräte mittels Scripting anzusteuern (z.B. für das Barionet 50 im SC8).
•[DABCL-593] Beim MultiStreamOutputChannel kann optional ein Monitorkanal/Audiogerät angegeben werden, auf welchem das gestreamte Audiosignal zusätzlich ausgegeben wird (Signal nach dem *VST® Plugin).
*VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries
•[DABCL-583] Der DataContract "Fachadresse" wurde um die Eigenschaft "GatewayList" erweitert. Darin enthalten sind die Instanznamen derjenigen IGWs, die sich um den automatischen Versand aus dem jeweiligen Fach kümmern sollen. Die Instanznamen wurden zuvor via PB zur Fachadresse gespeichert (Fachbaum-Dialog "Standardtitelziel"). Dies benötigt das DB-Update 140. Wenn das DB-Update nicht vorhanden ist, ist die "GatewayList" immer leer.
•[DABCL-584] Erstimplementation des Ember+ Plugins. Plugin für die Kommunikation mit Geräten (Mixer, Kreuzschienen etc.) über das Ember+ Protokoll via TCP.
•[DABCL-557] Mit der Methode "IServiceMainScheduler.SendeelementeBereichVerschieben" ist es möglich einen Bereich von Sendeelementen, markiert durch ein erstes und ein letztes Sendeelement, vor oder hinter ein Ziel-Sendeelement zu verschieben.
•[DABCL-560] In den Color-Einstellungen gibt es eine Eigenschaft "BackcolorPriority" (Group oder Type) die festlegt, ob die Gruppen- oder die Typenfarbe Priorität hat.
•[DABCL-567] UpdateObject-Methode wurde um den optionalen Parameter List<string> propertiesToUpdate erweitert, wo die Felder mitgegeben werden können, die aktualisiert werden sollen (alle anderen werden nicht angepasst).
•[DABCL-573] Implementierung von FilteredDataView als Spezialisierung von System.Data.DataView. Anders als die System.Data.DataView, löst FilteredDataView nur OnListChanged Ereignisse aus, wenn tatsächlich relevante Änderungen in der gefilterten Ansicht stattgefunden haben. Was relevant ist und was nicht, kann mittels Delegate selber bestimmt werden.
•[DABCL-579] TransferJob: HttpRequestAction wurde um die Eigenschaften Username und Password erweitert. Damit wird die BASIC Authentication unterstützt.
•[DABCL-581] Sohard.Dabis.Commons.Utils.Placeholder.cs stellt verschiedene Klassen zur Verfügung, welche verwendet werden können um Platzhalter mit und ohne (Format-)Parameter zu Parsen und zu Ersetzen. Für weitere Infos siehe Beschreibung der Klassen Placeholder, Placeholders und PlaceholderList.
•[DABCL-539] Remoting/Socket/Server: SetConnectionName gibt neu auch die Serverversion zurück. Im RemoteSessionHandler wird neu die Server- und die Clientversion der Verbindung gespeichert.
•[DABCL-540] SmartMix Funktionen "Automatisches Crossfade" gemäss Anforderungen aus dem Dokument SmartMix_V0.2.docx Kapitel 3 implementiert. Zusätzlich wurde die Ducking-Funktion für ein automatisches Ducking implementiert.
•[DABCL-541] [Editor(typeof(SendeelementPropertyListEditor), typeof(UITypeEditor))] stellt für die Settings einen Editor zur Verfügung, der die Properties des Typs Sendeelement als Combobox darstellt.
•[DABCL-510] Modulinstanzen können nun in den Settings programmatisch erzeugt werden.
•[DABCL-514] Im PermissionSet gibt es jetzt ein Recht IMPORT_WERBUNG und IMPORT_MUSIK, die von den alten Rechten AGIMPW bzw AGIMPM abhängen.
•[DABCL-522] AnwendergruppeUiEditor Klasse erstellt zum Auswählen von Benutzergruppen in PropertyGrids (z.B. SettingsDialog)
•[DABCL-523] Benutzer Klasse mit Property "Settings" erweitert. "Settings" ist ein Key(string)/Value(string) Property für Benutzereinstellungen
•[DABCL-527] Neue Option "ReturnLastFoundParent" in der Enumeration FachSearchOption hinzugefügt, mit der die Funktion GetFachByPath das letzte im Fachpfad gefundene Parent-Fach zurückgibt, wenn das im Fachpfad angegebene Fach nicht existiert.
•[DABCL-528] Suchdialog für die DabisRichTextBox implementiert. Der Suchdialog kann über die Methode ShowSearchDlg() oder das Kontextmenu (Ctrl+F) aufgerufen werden.
•[DABCL-529] Rückgabewert der Methode GetTitelListPaged wurde auf TitelSearchResult geändert. Die Klasse TitelSearchResult beinhaltet die zwei Properties {code}List<Titel> ResultList {code} und {code} bool HasMoreResults {code}.
•[DABCL-530] Standard Sortierkriterium in der Klasse EventBaseSearchConfig hinzugefügt
•[DABCL-531] DevExpress Upgrade auf V15.1.6
•[DABCL-532] Beim MultiStreamOutputChannel kann nun ein VST® Plugin (32 Bit) verwendet werden.
•[DABCL-534] Klasse AudioLevelManager erweitert um Hüllkurven (auf Levelpunkten basierend) zu ändern/ersetzen.
•[DABCL-536] Der DabisLoggerProvider stellt jetzt einen sogenannten "ServerLogger" zur Verfügung, der mit GetServerLogger() geholt werden kann. Dieser Logger wird intern in den CoreLibs verwendet. Das ist auch ein DabisLog4NetLogger. Er wird genau gleich wie der bisherige Logger verwendet. Einem DabisLog4NetLogger (zum Beispiel dem neuen ServerLogger) kann man jetzt mit MapLogLevel(from, to) pro DabisLogLevel ein Ziel-Loglevel vorgeben. MapLogLevel(INFO_1, DEBUG) bewirkt beispielsweise, dass alle Logeinträge, welche die CoreLibs auf Level INFO_1 loggen, auf DEBUG umgebogen werden. Standardmässig findet kein Mapping von Logleveln statt. Normaler Loggger und ServerLogger loggen mit denselben Appendern in dieselben Files.