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