USP_BUSINESSPROCESSSTATUS_ADDPROCESS

Creates a BUSINESSPROCESSSTATUS record.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@BUSINESSPROCESSCATALOGID uniqueidentifier IN
@PARAMETERSETID uniqueidentifier IN
@STATUSTABLENAME nvarchar(120) IN
@STARTEDBYUSERID uniqueidentifier IN
@SERVERNAME nvarchar(255) IN
@CHANGEAGENTID uniqueidentifier IN
@STATUSCODE tinyint IN
@ENQUEUEDJOBID bigint IN

Definition

Copy


      CREATE procedure [dbo].[USP_BUSINESSPROCESSSTATUS_ADDPROCESS]
          @ID uniqueidentifier,
          @BUSINESSPROCESSCATALOGID uniqueidentifier,
          @PARAMETERSETID uniqueidentifier,                                
          @STATUSTABLENAME nvarchar(120),
          @STARTEDBYUSERID uniqueidentifier, 
          @SERVERNAME    nvarchar(255),
          @CHANGEAGENTID uniqueidentifier,
          @STATUSCODE tinyint = 1,
          @ENQUEUEDJOBID bigint = 0
        with execute as caller                
        as
        begin
          set nocount on;

          declare @CURRENTDATE datetime;
          set @CURRENTDATE = getdate();

          if @ID is null
            set @ID = newid();

          if @STATUSCODE is null
            set @STATUSCODE = 1;

          if @ENQUEUEDJOBID is null
            set @ENQUEUEDJOBID = 0;

          if @CHANGEAGENTID is null                    
            exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;                    

          declare @SQL nvarchar(500);

          -- BusinessProcessRecentStatusView checks this temp table if there is a row in the status table

          -- so we create the temp table before inserting the status row to prevent a race condition

          declare @TABLENAME nvarchar(100);
          declare @DEFAULTMESSAGE nvarchar(1000) = 'Process started...';
          if @STATUSCODE = 4
            set @DEFAULTMESSAGE = 'Process enqueued...';

          set @TABLENAME = '##BUSINESSPROCESSSTATUS_' + replace(cast(@ID AS nvarchar(36)),'-','_');

          set @SQL = 'create table ' + @TABLENAME + '(STATUSMESSAGE nvarchar(1000))';
          exec sp_executesql @SQL;

          set @SQL = 'insert into ' + @TABLENAME + ' (STATUSMESSAGE) values (@DEFAULTMESSAGE)';
          exec sp_executesql @SQL, N'@DEFAULTMESSAGE nvarchar(1000)', @DEFAULTMESSAGE = @DEFAULTMESSAGE;

          insert into dbo.[BUSINESSPROCESSSTATUS]
            (ID, BUSINESSPROCESSCATALOGID, STATUSCODE,  STARTEDON, STARTEDBYUSERID, SERVERNAME, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BUSINESSPROCESSPARAMETERSETID, ENQUEUEDJOBID )
          values
            (@ID, @BUSINESSPROCESSCATALOGID, @STATUSCODE, GetDate(), @STARTEDBYUSERID, @SERVERNAME, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @PARAMETERSETID, @ENQUEUEDJOBID)                                    

          if len(@STATUSTABLENAME)>0
          begin
            set @SQL = 'insert into ' + @STATUSTABLENAME +
                     '(ID, PARAMETERSETID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                  values
                    (@DYNID, @DYNPARAMETERSETID, @DYNCHANGEAGENTID, @DYNCHANGEAGENTID, @DYNCURRENTDATE, @DYNCURRENTDATE)'

            exec sp_executesql @SQL, N'@DYNID uniqueidentifier, @DYNPARAMETERSETID uniqueidentifier, @DYNCHANGEAGENTID uniqueidentifier, @DYNCURRENTDATE datetime'
                          @DYNID = @ID, @DYNPARAMETERSETID = @PARAMETERSETID, @DYNCHANGEAGENTID = @CHANGEAGENTID, @DYNCURRENTDATE = @CURRENTDATE;
          end

        end