Diese Api dient dazu ein Fenster mit den DMS-Controls zu öffnen und zu steuern. Damit dies funktioniert muss auf dem System ein LCAS ab Version 7.4 installiert sein. Die eingebundene Api kommuniziert mit diesem per NamedPipes.
Die ClientApi-Facade für den DMS Client ist kompatibel mit NETStandard 2.0 und verfügbar für .Net Framework 4.6.1 und .Net Core 3.1. Diese Dokumentation bezieht sich auf die aktuelle Version 2024.01.93. Die Änderungen können in den Release Notes eingesehen werden.
Schnellstart
Hier eine Anleitung, wie man zu einem funktionierenden DMS-Client kommt. Zuerst muss das aktuellste NuGet-Paket in das Projekt installiert werden (DevOps Feed):
PM> Install-Package LEXolution.DMS.ClientApiCore
using STP.Ecm.ClientApiCore;
var dmsClient = new DmsClient();
var clientDelegate = new ClientDelegate(dmsClient);
var config = new DmsClientStartConfig("Example1");
config.StartHidden = false;
config.ConnectTimeout = TimeSpan.FromSeconds(2.0);
config.MinimalLogLevel = DmsClientLogLevel.Info;
config.MonitorCommandingApi = true;
var startResult = dmsClient.Start(config, clientDelegate);
if (!startResult.Success)
{
return; // exit example app
}
// Wait
Console.ReadLine();Dieses Codestück in der Main-Methode einer Console-Application startet ein DMS-Clientfenster, welches sich wieder schließt, wenn die Beispielanwendung beendet wird.
Die Klasse ClientDelegate muss selber implementiert
werden. Sie muss die Methoden aus IDmsClientDelegate
anbieten. Über dieses Objekt erhält die Anwendung Kenntnis über
Ereignisse und Log-Meldungen aus dem extern gestarteten DMS-Client.
Damit der DMS-Client genutzt werden kann, muss auf das Ereignis
DmsClientStarted() des ClientDelegate gewartet
werden. der DMS-Client steht erst vollständig zur Verfügung, wenn
DmsClientStarted() aufgerufen wurde.
public class ClientDelegate : IDmsClientDelegate
{
private readonly DmsClient dmsClient;
public ClientDelegate(DmsClient dmsClient) => this.dmsClient = dmsClient;
public void ClientGone() => Console.WriteLine("ClientGone");
public void ClientStarted() => Console.WriteLine("ClientStarted");
public void KeyPressed(ClientMessages.Keys key) => Console.WriteLine("KeyPressed");
public void Log(DmsClientLogLevel level, string message) => Console.WriteLine($"Log: {level}: {message}");
public void DmsClientStarted() => Console.WriteLine("DmsClientStarted");
}Dokument anzeigen/verbergen
private void DokumentAnzeigen(object sender, RoutedEventArgs e)
{
long documentId = 10005171834;
var dms = ((App)Application.Current).Dms;
dms.Commander.ShowDocumentWithContainer(documentId.ToGuid(), "Result Title");
dms.Window.Show();
}
private void DokumentVerbergen(object sender, RoutedEventArgs e)
{
var dms = ((App)Application.Current).Dms;
dms.Window.Hide();
}Dokument bearbeiten
var result = dmsClient.DocumentEdit.CheckoutDocumentById(id);Dokument mit der eingebener ID wird zur Bearbeitung ausgecheckt und gesperrt. Dokument wird gleichzeitig zur Bearbeitung geöffnet.
var config = new TalkMsg.DocumentContentEdit.DocumentDownloadConfig();
config.Format = TalkMsg.DocumentContentEdit.DocumentDownloadFormat.Original;
config.Version = TalkMsg.DocumentContentEdit.DocumentVersionIdentifier.Specific(1);
dmsClient.DocumentEdit.DownloadContent(id, targetFilename, config);Dokumentinhalt herunterladen. Mit Angabe des Formats in der DownloadConfig kann man jedes Dokument in ein PDF umwandeln und dann herunterladen.
var importedId = dmsClient.DocumentEdit.ImportDocument(targetFilename, title, containerId);Eine Datei als neues Dokument in eine Akte importieren.
Neue Interfaces ab Pro Client Version 8.7.2 und ClientApi Version 8.7.2
dmsClient.DocumentEdit.DocumentSelectionChanged = data =>
{
Console.WriteLine(JsonConvert.SerializeObject(data));
};Eine Event wird getriggert, sobald die Selektion in der Dokumentliste geändert wird. Als Parameter wird die Liste der ausgewählten Dokumente übergeben. Die Einträge sind vom Typ DmsDokumentData.
var data = dmsClient.DocumentEdit.GetSelectedDocuments();Die Liste der ausgewählten Dokumente kann auch explizit mit der obenstehenden Funktion abgerufen werden. Die Einträge sind hier auch vom Typ DmsDokumentData.
Verknüpfung mit