Comarch DMS bietet Prozeduren (Trigger), die die Funktionalität der Prozessmodellierung um die Möglichkeit erweitern, zusätzliche Aktionen auszuführen, die durch ein bestimmtes Ereignis ausgelöst werden, das während der Arbeit mit der Anwendung auftritt.
Comarch DMS ist unter anderem mit den folgenden Triggern ausgestattet:
Datenbank Comarch DMS In jeder der Prozeduren (Trigger) wurden Ausnahmen (Try-Catch) unterstützt mit der Möglichkeit, Informationen als Nachricht (MessageBox) an die Anwendung zu übergeben. Darüber hinaus wird die von der THROW-Anweisung zurückgegebene Ausnahme die Transaktion rückgängig machen. Diese Möglichkeit kann beispielsweise genutzt werden, um die Übergabe eines Dokuments in die nächste Stufe (OnDocumentPropagation-Prozedur) zu stoppen, wenn die Weiterleitungsbedingung nicht erfüllt ist. Das Klicken auf „Zur nächsten Phase“ kann dazu führen, dass die in der Prozedur definierte Meldung angezeigt und die Weiterleitungsaktion gestoppt wird. Konstruktion von Prozeduren (Triggern), die die Funktionalität der Prozessmodellierung erweitern (die Konstruktion der Prozedur wird nach einem Klick auf den Namen angezeigt): Die Prozedur wird aufgerufen, wenn das Dokument in die nächste Stufe weitergeleitet wird. CREATE PROCEDURE do.OnDocumentPropagation @WorkflowId as int = NULL, @StageId as int = NULL, @DocumentId as int = NULL, @PropagatedById as int = NULL, @DocumentOwnerId as int = NULL, @IsAutomaticPropagation as bit = NULL AS BEGIN declare @test int — Hier können zusätzliche Benutzeraktionen behandelt werden. END Beschreibung der Argumente: Die Prozedur wird ausgeführt, wenn das Dokument gespeichert wird. CREATE PROCEDURE do.OnAfterDocumentSave @DocumentId as int = NULL, — DWD_ID aus der Tabelle DF_Work @SavedBy as int = NULL — DCD_ID aus der Tabelle DF_ConfOSDictionary AS BEGIN declare @test int; — Hier können zusätzliche Benutzeraktionen behandelt werden. END Beschreibung der Argumente: Die Prozedur wird beim Speichern eines neuen Dokuments durchgeführt. CREATE PROCEDURE do.OnAfterDocumentCreated @DocumentId as int = NULL, — DWD_ID aus der Tabelle DF_Work @SavedBy as int = NULL — DCD_ID aus der Tabelle DF_ConfOSDictionary AS BEGIN declare @test int; — Hier können zusätzliche Benutzeraktionen behandelt werden. END Beschreibung der Argumente: Beispiel: Anwendungsbeispiel der Prozedur do.OnAfterDocumentCreated Das Beispiel verwendet die Skalarfunktion do.ModWorkflowName, die den Namen des Workflow-Typs zurückgibt. Im do.OnAfterDocumentCreated-Prozedur wurde eine Bedingung hinzugefügt, die den Aufruf der Prozedur auf den Namen des Workflow-Typs beschränkt. Das bedeutet, dass die Prozedur jedes Mal gestartet wird, wenn innerhalb des angegebenen Workflow-Typs ein neues Dokument erstellt und versucht wird, es in der Datenbank zu speichern. Wenn das Steuerelement mit der in der Prozedur angegebenen ID einen abgeschlossenen Wert hat, wird das Dokument gespeichert. Wenn das Steuerelement mit der in der Prozedur angegebenen IDs den Wert nicht vervollständigt, wird das Dokument nicht gespeichert und eine Nachricht mit dem Inhalt angezeigt, der im THROW-Befehl in der Prozedur angegeben ist. USE [Name_Datenbank_DMS]
GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [do].[OnAfterDocumentCreated]
@DocumentId as int = NULL, — DWD_ID aus der Tabelle DF_Work @SavedBy as int = NULL — DCD_ID aus der Tabelle DF_ConfOSDictionary AS BEGIN BEGIN TRY declare @string varchar(max)=”; if do.ModWorkflowName (@DocumentId)=’Name_Workflow_Typs’ /*Name des Workflow-Typs, in dem die Sperre erfolgt */ Begin select @string= isnull (w.DWC_ValueString,”) from do.DF_Work d join do.DF_ConfDSHead i on d.DWD_DSHId=i.DSH_ID join do.DF_ConfCFCardDokFlow k on k.DKO_DSHId=i.DSH_ID join do.DF_WorkCF w on w.DWC_DKOId = k.DKO_ID where DWD_ID=@DocumentId and k.DKO_Name=’ID’ /* ID des Steuerelements, für das die Wertvervollständigung erforderlich ist*/ if @string =” THROW 50001, 'Dokumentenfeld ist erforderlich’ ,1; — Inhalt der angezeigten Meldung End END TRY BEGIN CATCH DECLARE @ErrorMessage varchar(max) = ERROR_MESSAGE(); –THROW 50001, @ErrorMessage ,1; declare @ErrorSeverity int = ERROR_SEVERITY(), @ErrorState int = ERROR_STATE() raiserror (@ErrorMessage, @ErrorSeverity, @ErrorState); end catch END Die Prozedur wird ausgeführt, bevor die Details des DMS-Dokuments angezeigt werden CREATE PROCEDURE do.OnBeforeDocumentShow @documentId as int = NULL, — DWD_ID aus der Tabelle DF_Work @workflowId as int = NULL, — DFH_ID aus der Tabelle DF_HeadDokumentFlow @userId as int = NULL — DCD_ID aus der Tabelle DF_ConfOSDictionary AS BEGIN begin try declare @test int — Hier können zusätzliche Benutzeraktionen behandelt werden. end try begin catch DECLARE @ErrorMessage varchar(max) = 'In der Prozedur do.OnBeforeDocumentShow ist ein Fehler aufgetreten: ’ + ERROR_MESSAGE(); –THROW 50001, @ErrorMessage ,1; declare @ErrorSeverity int = ERROR_SEVERITY(), @ErrorState int = ERROR_STATE() raiserror (@ErrorMessage, @ErrorSeverity, @ErrorState); end catch END Beschreibung der Argumente: