USP_ADDBATCHWORKFLOWTASK_ADDENTRY

Adds/update batch workflow tasks table

Parameters

Parameter Parameter Type Mode Description
@XML xml IN
@CHANGEAGENTID uniqueidentifier IN
@WORKFLOWID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_ADDBATCHWORKFLOWTASK_ADDENTRY(
  @XML xml
  , @CHANGEAGENTID uniqueidentifier = NULL
  , @WORKFLOWID uniqueidentifier = NULL
)
as
begin
  declare @CHANGEDATE datetime;

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

set @CHANGEDATE = getdate(); 

if exists (select COUNT(NAME) from dbo.UFN_BATCHWORKFLOWTASK_FROMITEMLISTXML(@XML) group by NAME having COUNT(NAME)>1)
raiserror('ERR_TASKNAME_DUPLICATE',13,1);

if (select COUNT(NAME) from dbo.UFN_BATCHWORKFLOWTASK_FROMITEMLISTXML(@XML) WHERE BATCHWORKFLOWSTATEID = NEXTBATCHWORKFLOWSTATEID) > 0
raiserror('ERR_WORKFLOWTASK_SAMETOFROM',13,1);



merge dbo.BATCHWORKFLOWTASK as T
using dbo.UFN_BATCHWORKFLOWTASK_FROMITEMLISTXML(@XML) S
on (T.ID = S.ID)
when not matched by target then
  insert (
    ID
    , BATCHWORKFLOWSTATEID
    , NAME
    , NEXTBATCHWORKFLOWSTATEID
    , BATCHWORKFLOWID
    , ADDEDBYID
    , CHANGEDBYID
    , DATEADDED
    , DATECHANGED
  )
  values (
    newid()
    , S.BATCHWORKFLOWSTATEID
    , S.NAME
    , S.NEXTBATCHWORKFLOWSTATEID
    , @WORKFLOWID
    , @CHANGEAGENTID
    , @CHANGEAGENTID
    , @CHANGEDATE
    , @CHANGEDATE
  )
when matched then
  update set 
    T.BATCHWORKFLOWSTATEID = S.BATCHWORKFLOWSTATEID
    , T.NAME = S.NAME
    , T.NEXTBATCHWORKFLOWSTATEID = S.NEXTBATCHWORKFLOWSTATEID
    , T.CHANGEDBYID = @CHANGEAGENTID
    , T.DATECHANGED = @CHANGEDATE
when not matched by source and T.BATCHWORKFLOWID= @WORKFLOWID then delete ;

end;