Zastosowanie
Poniższy przykład przedstawia, jak za pomocą procedury On.AfterDocumentDeleted w bazie danych Comarch BPM zapisywać informacje o tym, kto, kiedy i jaki dokument usunął z obiegu.
Zawartość przykładu
- Zmodyfikowana procedura do.OnAfterDocumentDeleted, która jest wywoływana automatycznie podczas usuwania dokumentu.
- Tabelka wdrożeniowa do.WDR_DeletedDocumentsLog, w której są zapisywane informacje kto i kiedy usunął dany dokument.
Kliknij tutaj, aby pobrać przykład
Zasada działania
Procedura do.OnAfterDocumentDeleted dodaje do tabelki wdrożeniowej do.WDR_DeletedDocumentsLog informacje o usunięciu dokumentu (ID dokumentu, ID użytkownika usuwającego oraz datę i czas operacji).
- Parametry wejściowe: Procedura wykorzystuje dwa parametry wejściowe:
- @documentId: Zawiera ID dokumentu (DWD_ID) z tabeli do.DF_Work.
- @userId: Zawiera ID operatora (DCD_ID) z tabeli do.DF_ConfOSDictionary.
- Pobieranie Pełnego Numeru Dokumentu: Mimo że pełny numer dokumentu (DWD_FullNumber) nie jest parametrem wejściowym, procedura pobiera go bezpośrednio z tabeli nagłówkowej dokumentu do.DF_Work, używając jako klucza przekazanego @documentId.
- Tabela do.DF_ConfOSDictionary: Używamy jej do pobrania loginu operatora (DCD_Login), co czyni log bardziej czytelnym niż samo ID.
- Funkcja GETDATE(): Zapewnia dokładną datę i czas, kiedy operacja usunięcia została wykonana.
- Instrukcja INSERT INTO: Wstawia zebrane dane do tabeli wdrożeniowej do.WDR_DeletedDocumentsLog.
Konfiguracja przykładu
1.
Utworzono w bazie danych BPM w schemacie do. własną tabelę o nazwie do.WDR_DeletedDocumentsLog, w ktorej będą zapisywane informacje dotyczące usunięć dokumentów.
Przyklad
Przykład tabeli:
CREATE TABLE do.WDR_DeletedDocumentsLog (
DDL_Id INT IDENTITY(1,1) PRIMARY KEY,
DDL_DocumentId INT NOT NULL, /*ID usuniętego dokumentu (DWD_ID z do.DF_Work)*/
DDL_FullNumber VARCHAR(50) NULL, /*Numer dokumentu (DWD_FullNumber z do.DF_Work)*/
DDL_DeletedByUserId INT NULL, /*ID użytkownika, który usunął dokument (DCD_ID z do.DF_ConfOSDictionary)*/
DDL_UserName VARCHAR(255) NULL, /*Login użytkownika*/
DDL_DeleteDate DATETIME NOT NULL /*Data i czas operacji*/
);
- W procedurze do.OnAfterDocumentDeleted dodano kod:
/* Deklaracja zmiennych */
DECLARE @userLogin VARCHAR(100);
DECLARE @fullNumber VARCHAR(50); --z do.DF_Work (DWD_FullNumber)
/* 1. Pobranie loginu użytkownika z tabeli do.DF_ConfOSDictionary - Tabela słownika działów i pracowników */
IF @userId IS NOT NULL
BEGIN
SELECT @userLogin = DCD_Login
FROM do.DF_ConfOSDictionary
WHERE DCD_ID = @userId;
END
/* 2. Pobranie pełnego numeru dokumentu z tabeli do.DF_Work (Tabela nagłówkowa dokumentu) */
IF @documentId IS NOT NULL
BEGIN
SELECT @fullNumber = DWD_FullNumber
FROM do.DF_Work
WHERE DWD_ID = @documentId;
END
/* 3. Dodanie informacji o usunięciu dokumentu do tabeli wdrożeniowej */
INSERT INTO do.WDR_DeletedDocumentsLog (
DDL_DocumentId,
DDL_FullNumber,
DDL_DeletedByUserId,
DDL_UserName,
DDL_DeleteDate
)
VALUES (
@documentId,
@fullNumber,
@userId,
@userLogin,
GETDATE()
);
- Zmodyfikowana procedura wygląda następująco:
ALTER PROCEDURE [do].[OnAfterDocumentDeleted]
@documentId as int = NULL, -- DWD_ID from DF_Work table
@userId as int = NULL -- DCD_ID from DF_ConfOSDictionary table, the user who deleted the document
AS
BEGIN
begin try
/* Deklaracja zmiennych */
DECLARE @userLogin VARCHAR(100);
DECLARE @fullNumber VARCHAR(50); --z do.DF_Work (DWD_FullNumber)
/* 1. Pobranie loginu użytkownika z tabeli do.DF_ConfOSDictionary - Tabela słownika działów i pracowników */
IF @userId IS NOT NULL
BEGIN
SELECT @userLogin = DCD_Login
FROM do.DF_ConfOSDictionary
WHERE DCD_ID = @userId;
END
/* 2. Pobranie pełnego numeru dokumentu z tabeli do.DF_Work (Tabela nagłówkowa dokumentu) */
IF @documentId IS NOT NULL
BEGIN
SELECT @fullNumber = DWD_FullNumber
FROM do.DF_Work
WHERE DWD_ID = @documentId;
END
/* 3. Dodanie informacji o usunięciu dokumentu do tabeli wdrożeniowej */
INSERT INTO do.WDR_DeletedDocumentsLog (
DDL_DocumentId,
DDL_FullNumber,
DDL_DeletedByUserId,
DDL_UserName,
DDL_DeleteDate
)
VALUES (
@documentId,
@fullNumber,
@userId,
@userLogin,
GETDATE()
);
end try
begin catch
DECLARE @ErrorMessage varchar(max) = 'W procedurze do.OnAfterDocumentDeleted wystąpił błąd: ' + ERROR_MESSAGE();
--THROW 50001, @ErrorMessage ,1;
declare @ErrorSeverity int = ERROR_SEVERITY(), @ErrorState int = ERROR_STATE()
raiserror (@ErrorMessage, @ErrorSeverity, @ErrorState);
end catch
END
Uzupełniona tabela do.WDR_DeletedDocumentsLog
Po usunięciu dokumentu w Comarch BPM za pomocą ikony kosza, w tabeli wdrożeniowej pojawia się wpis:

Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?