USP_BBWORKFLOW_SERVICE_SENDMESSAGE_TASKCOMPLETED

Sends a TASKCOMPLETEDRequest message to the workflow service message queue.

Parameters

Parameter Parameter Type Mode Description
@TASKID uniqueidentifier IN
@COMPLETEDBY_APPUSERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@COMPLETIONSTATUSCODE tinyint IN

Definition

Copy


CREATE PROCEDURE dbo.USP_BBWORKFLOW_SERVICE_SENDMESSAGE_TASKCOMPLETED

@TASKID uniqueidentifier,
@COMPLETEDBY_APPUSERID uniqueidentifier ,                --    the user completing this task

@CHANGEAGENTID uniqueidentifier = null,
@COMPLETIONSTATUSCODE tinyint = 1 -- 1:Completed, 2:Canceled


AS

    IF @TASKID IS NULL
    BEGIN
        RAISERROR ('@TASKID parameter value is required to have a value in dbo.USP_BBWORKFLOW_SERVICE_SENDMESSAGE_TASKCOMPLETED', 16,12);
        RETURN 112;
    END



  DECLARE @BBWORKFLOWINSTANCEINFOID uniqueidentifier;
  SELECT @BBWORKFLOWINSTANCEINFOID=BBWORKFLOWINSTANCEINFOID from dbo.BBWORKFLOWTASK WHERE ID = @TASKID;

    IF @BBWORKFLOWINSTANCEINFOID IS NULL
    BEGIN
        RAISERROR ('No dbo.BBWORKFLOWTASK row was found with an ID that matches the @TASKID parameter passed to dbo.USP_BBWORKFLOW_SERVICE_SENDMESSAGE_TASKCOMPLETED', 16,13);
        RETURN 113;
    END

    DECLARE @msg xml;

  DECLARE @ISCANCELLED bit;
  if @COMPLETIONSTATUSCODE = 2
    set @ISCANCELLED=1;
  else
    set @ISCANCELLED=0;

    SELECT @msg=dbo.UFN_BBWORKFLOW_SERVICE_BUILDMESSAGE_TASKCOMPLETED(@TASKID, @CHANGEAGENTID, @COMPLETEDBY_APPUSERID, @ISCANCELLED);

    IF @msg IS NULL
    BEGIN
        RAISERROR ('dbo.UFN_BBWORKFLOW_SERVICE_BUILDMESSAGE_TASKCOMPLETED returned a null value', 16,23);
        RETURN 223;
    END


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

  DECLARE @COMPLETEDATE datetimeoffset = SYSDATETIMEOFFSET();


    DECLARE @LOGID uniqueidentifier=NEWID();

    DECLARE @LOGMSG nvarchar(100) = N'Updating task to completed';


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

  UPDATE dbo.BBWORKFLOWTASK SET DATECOMPLETED=@COMPLETEDATE, TASKSTATUSCODE=@COMPLETIONSTATUSCODE, COMPLETEDBY_APPUSERID = @COMPLETEDBY_APPUSERID WHERE ID=@TASKID;


    /* Log attempt to send task msg */

      SET @LOGMSG = N'Sending task complete msg.';
      SET @LOGID= NEWID();

       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_TASKCOMPLETED_MESSAGE (@msg);

          SET @LOGMSG = N'Task complete 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'Task complete msg failed';
          SET @LOGID= NEWID();

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

          RETURN 9;

    END CATCH