Prozeduren

image_pdfimage_print

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.

 

Achtung
In Version 2022.0 wurde der Prozedur pOnAfterUserAdded.sql der @Mode-Parameter hinzugefügt. Beim Update der Comarch DMS-Version wird die Prozedur durch eine neue mit dem Parameter ersetzt.

Wenn der Benutzer in der bisherigen Prozedur einen eigenen zusätzlichen Code hatte, sollte er ihn nach dem Update erneut hinzufügen.

 

Comarch DMS ist unter anderem mit den folgenden Triggern ausgestattet:

Datenbank Comarch DMS

  • do.OnAfterDocumentCreated – Prozedur, die nach jeder Erstellung eines Dokuments in Comarch DMS gestartet wird.
  • do.OnAfterDocumentSave – Prozedur, die nach jeder Aktualisierung des Comarch DMS-Dokuments gestartet wird:
    • nachdem Sie auf das Speichern-Symbol geklickt haben,
    • Wenn für den Workflow-Typ das automatische Speichern nach Dokumenteninitiierung eingestellt ist,
    • Nachdem Sie auf „Erstelle“ geklickt haben, um ein Dokument im Massenscan zu erstellen,
    • Nachdem Sie auf „Generiere“ geklickt haben, um das Dokument in den Punkten ACD zu generieren,
    • wenn Sie versuchen, ein im Umlauf befindliches Dokument zu speichern, das auf der Ebene der Spalte des Typs „Dokumente im Workflow“ im Steuerelement des Typs tabellarische Daten erstellt wurde
  • do.OnBeforeDocumentShow – Prozedur wird gestartet, bevor die Details des Dokuments Comarch DMS angezeigt werden
    • beim Erstellen eines neuen Dokuments über das Symbol ,
    • wenn ein vorhandenes Dokument angezeigt wird,
    • Nachdem Sie auf „Erstelle“ geklickt haben, um ein Dokument im Massenscan zu erstellen,
    • Nachdem Sie auf „Generiere“ geklickt haben, um das Dokument in den Punkten ACD zu generieren,
  • do.OnDocumentPropagation – Prozedur wird jedes Mal ausgeführt, wenn das Dokument in die nächste Stufe weitergeleitet wird

 

Achtung
Die CDN.OnDocumentPropagation-Prozedur auf den Datenbanken von Comarch ERP-Systemen wird nur in einer Einzelfirmeninstallation durchgeführt.

 

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):

 

„do.OnDocumentPropagation“

 

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:

  • @WorkflowId – int, Dokumenten-Workflow-ID (DSH_Id),
  • @StageId – int, Phase-ID (DDS_Id),
  • @DocumentId – int, Dokument-ID (DWD_ID),
  • @PropagatedById – int, ID des Benutzers, der das Dokument weiterleitet (DCD_Id),
  • @DocumentOwnerId int, ID des Dokumenteigentümers (DCD_Id) – nimmt immer den Wert 0 an,
  • @IsAutomaticPropagation bit, richtiger Wert, wenn das Dokument die Zeitübertragung durchlaufen hat.

 

„do.OnAfterDocumentSave“

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:

  • @DocumentId – Dokument-ID (DWD_ID),
  • @SavedBy – ID des Benutzers, der das Dokument speichert (DCD_Id).

 

„do.OnAfterDocumentCreated“

 

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:

  • @DocumentId – Dokument-ID (DWD_ID),
  • @SavedBy – ID des Benutzers, der das Dokument speichert (DCD_Id).

 

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

 

„do.OnBeforeDocumentShow“

 

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:

  • @DocumentId – Dokument-ID (DWD_Id),
  • @WorkflowId – Workflow-Typ-ID (DFH_Id),
  • @UserId – ID des Betreibers (DCD_Id).

Czy ten artykuł był pomocny?