USP_BBWORKFLOW_SERVICE_SENDMESSAGE_TERMINATEWORKFLOW

Sends a TermianteWorkflowRequest message to the workflow service message queue.

Parameters

Parameter Parameter Type Mode Description
@BBWORKFLOWINSTANCEINFOID uniqueidentifier IN
@REASON nvarchar(500) IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE PROCEDURE dbo.USP_BBWORKFLOW_SERVICE_SENDMESSAGE_TERMINATEWORKFLOW

@BBWORKFLOWINSTANCEINFOID uniqueidentifier,
@REASON nvarchar(500),
@CHANGEAGENTID uniqueidentifier = null,

@CURRENTAPPUSERID uniqueidentifier = null


AS

    IF @BBWORKFLOWINSTANCEINFOID IS NULL
    BEGIN
        RAISERROR ('@BBWORKFLOWINSTANCEINFOID parameter value is required to have a value in dbo.USP_BBWORKFLOW_SERVICE_SENDMESSAGE_TERMINATEWORKFLOW', 16,11);
        RETURN 111;
    END

    DECLARE @msg xml;

    SELECT @msg=dbo.UFN_BBWORKFLOW_SERVICE_BUILDMESSAGE_TERMINATEWORKFLOW(@BBWORKFLOWINSTANCEINFOID, @CHANGEAGENTID, @CURRENTAPPUSERID, @REASON);

    IF @msg IS NULL
    BEGIN
        RAISERROR ('dbo.UFN_BBWORKFLOW_SERVICE_BUILDMESSAGE_TERMINATEWORKFLOW returned a null value', 16,22);
        RETURN 222;
    END

    /* Log attempt to start */
    DECLARE @LOGID uniqueidentifier=NEWID();
    DECLARE @LOGMSG nvarchar(100) = N'Termination requested.';

    EXEC dbo.USP_BBWORKFLOW_ADD_LOG_MESSAGE @LOGID, @CHANGEAGENTID, @BBWORKFLOWINSTANCEINFOID, 0, @LOGMSG, 1;


    BEGIN TRY

          /* Send message to Queue */      
      DECLARE @TARGETSERVICENAME nvarchar(128);

      select @TARGETSERVICENAME = dbo.UFN_BBWORKFLOW_SERVICE_GET_SERVICE_NAME_FOR_SEND(@BBWORKFLOWINSTANCEINFOID);

          DECLARE @CONVERSATIONID uniqueidentifier;

          BEGIN DIALOG CONVERSATION @CONVERSATIONID

            FROM SERVICE BBAPPFX_WORKFLOW_MESSAGE_INITIATOR_SERVICE 

            TO SERVICE @TARGETSERVICENAME  -- 'BBAPPFX_WORKFLOW_MESSAGE_TARGET_SERVICE'


            ON CONTRACT BBAPPFX_WORKFLOW_MESSAGE_CONTRACT

            /* Use the internal BBWORKFLOWINSTANCEINFO table ID as the conversation group lock id. */        
            WITH RELATED_CONVERSATION_GROUP = @BBWORKFLOWINSTANCEINFOID ;


          SEND ON CONVERSATION @CONVERSATIONID MESSAGE TYPE  [BBAPPFX_WORKFLOW_TERMINATEWORKFLOW_MESSAGE] (@msg);

          SET @LOGMSG = N'Terminate msg sent';
          SET @LOGID= NEWID();

          EXEC dbo.USP_BBWORKFLOW_ADD_LOG_MESSAGE @LOGID, @CHANGEAGENTID, @BBWORKFLOWINSTANCEINFOID, 0, @LOGMSG, 1;

    END TRY
    BEGIN CATCH

          EXEC dbo.USP_RAISE_ERROR;

          SET @LOGMSG = N'Terminate msg failed';
          SET @LOGID= NEWID();

          EXEC dbo.USP_BBWORKFLOW_ADD_LOG_MESSAGE @LOGID, @CHANGEAGENTID, @BBWORKFLOWINSTANCEINFOID, 0, @LOGMSG, 3;

          RETURN 10;

    END CATCH