Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.40 KB | None | 0 0
  1. USE [AMS]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[Action_Cleaner] Script Date: 07/27/2017 11:19:23 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER procedure [dbo].[Action_Cleaner]
  9. AS
  10. BEGIN
  11. SET NOCOUNT ON ;
  12.  
  13. DECLARE @RC INT
  14. SET @RC = 0
  15.  
  16. SET TRANSACTION ISOLATION LEVEL READ COMMITTED ;
  17.  
  18. BEGIN TRANSACTION
  19.  
  20. CREATE TABLE #WorkflowActionDataProcessing
  21. (
  22. OrderItemGuid UNIQUEIDENTIFIER
  23. )
  24. SET @RC = @@ERROR
  25.  
  26. IF @RC = 0
  27. BEGIN
  28. UPDATE dbo.WorkflowActionData
  29. SET Deleted = 1
  30. OUTPUT INSERTED.OrderItemGuid
  31. INTO #WorkflowActionDataProcessing ( OrderItemGuid )
  32. FROM dbo.WorkflowActionData wad WITH ( READPAST )
  33. INNER JOIN dbo.ProductOrderItem POI WITH ( ROWLOCK, XLOCK, READPAST ) ON wad.OrderItemGuid = POI.OrderItemGUID
  34. OUTER APPLY dbo.Metadata_GetValueAsString(POI.OrderItemGUID,
  35. 'IngestAssetGuid') IngestAssetGuid
  36. LEFT OUTER JOIN dbo.WorkflowDecision ON POI.OrderItemGUID = dbo.WorkflowDecision.NextWorkflowActionID
  37. LEFT OUTER JOIN dbo.ProductOrderItem ParentPOI ON ParentPOI.OrderItemGuid = WorkflowDecision.PreviousWorkflowActionID
  38. LEFT OUTER JOIN dbo.zstatus ParentPOIStatus ON ( ParentPOI.Status = ParentPOIStatus.StatusID )
  39. LEFT OUTER JOIN dbo.zSubStatus ON POI.SubStatusCode = dbo.zSubStatus.SubStatusCode
  40. INNER JOIN dbo.Asset A WITH ( READPAST ) ON POI.AssetGUID = A.AssetGUID
  41. INNER JOIN dbo.zStatus AStatus ON A.StatusID = AStatus.StatusID
  42. LEFT OUTER JOIN dbo.Asset DA ON POI.DeliverableAssetGUID = DA.AssetGUID
  43. LEFT OUTER JOIN dbo.zStatus DAStatus ON DA.StatusID = DAStatus.StatusID
  44. WHERE POI.IsBasket = 0
  45. AND wad.Deleted = 0
  46. AND A.Deleted = 0
  47. AND A.Basket = 0
  48. AND A.Cancelled = 0
  49. AND ISNULL(ParentPOI.IsBasket, 0) = 0
  50. AND ISNULL(ParentPOIStatus.StatusCompleted, 1) = 1 -- parentPOI must be completed
  51. AND (
  52. /* 24 - Transcoding */ ( POI.OrderItemTypeID = 24
  53. AND AStatus.StatusCompleted = 1
  54. )
  55. OR (
  56. /* 1 - Yadn Ingest */ POI.OrderItemTypeID IN (1,30,34,35)
  57. AND POI.Status = 1000 -- New
  58. AND A.StatusID IN ( 4 )
  59. AND a.FileExists = 1
  60. )
  61. OR (
  62. /* 1 - Move to adbank */ POI.OrderItemTypeID = 1
  63. AND A.StatusID = 2 -- Awating Type
  64. AND IngestAssetGuid.Value IS NOT NULL
  65. AND EXISTS(SELECT * FROM dbo.Asset WHERE AssetGUID = CAST(IngestAssetGuid.Value AS UNIQUEIDENTIFIER) AND FileID IS NOT NULL)
  66. )
  67. OR (
  68. /* 1 - Yadn Delivery */ POI.OrderItemTypeID = 2
  69. AND POI.Status = 411 -- Awaiting YADN Transfer
  70. AND A.FileID IS NOT NULL
  71. )
  72. OR (
  73. /* 1 - GDN MG Delivery */ POI.OrderItemTypeID = 2
  74. AND POI.Status IN (12, 206, 45)
  75. AND A.FileID IS NOT NULL
  76. AND dbo.IsGdnDelivery(POI.OrderItemGUID) = 1
  77. )
  78. OR (
  79. /* 31, 33 - Delete Asset, Reset and Terminate ODT */ POI.OrderItemTypeID IN (
  80. 31, 32, 33 ) -- Delete Asset And Terminate
  81. )
  82. OR ( POI.OrderItemTypeID NOT IN ( 24, 1, 2 )
  83. AND (
  84. /* 26 - RequestUpload */ ( DAStatus.StatusCompleted IS NOT NULL
  85. AND ( DAStatus.StatusCompleted = 1
  86. OR POI.OrderItemTypeID = 26
  87. )
  88. )
  89. OR ( DAStatus.StatusCompleted IS NULL
  90. AND AStatus.StatusCompleted = 1
  91. )
  92. )
  93. )
  94. )
  95.  
  96. -- Lock ProductOrderItem prior to locking WorkflowActionDataProcessing to aviod deadlocks
  97. IF EXISTS(SELECT 1 FROM #WorkflowActionDataProcessing wadp
  98. INNER JOIN dbo.ProductOrderItem WITH(ROWLOCK, HOLDLOCK, XLOCK) ON wadp.OrderItemGuid = dbo.ProductOrderItem.OrderItemGUID)
  99. BEGIN
  100.  
  101. IF EXISTS(SELECT 1 FROM dbo.WorkflowActionDataProcessing wadp
  102. WHERE EXISTS(SELECT 1 FROM #WorkflowActionDataProcessing t WHERE t.OrderItemGuid = wadp.OrderItemGuid ))
  103. BEGIN
  104. UPDATE dbo.WorkflowActionDataProcessing
  105. SET
  106. Priority = dbo.Action_GetDefaultPriority(t.OrderItemGuid),
  107. Lock = 0
  108. FROM dbo.WorkflowActionDataProcessing wadp
  109. INNER JOIN #WorkflowActionDataProcessing t ON wadp.OrderItemGuid = t.OrderItemGuid
  110. END
  111.  
  112. INSERT INTO dbo.WorkflowActionDataProcessing
  113. ( OrderItemGuid ,
  114. Lock ,
  115. Priority
  116. )
  117. SELECT DISTINCT
  118. OrderItemGuid ,
  119. 0 ,
  120. dbo.Action_GetDefaultPriority(OrderItemGuid)
  121. FROM #WorkflowActionDataProcessing t
  122. WHERE
  123. NOT EXISTS(
  124. SELECT 1 FROM dbo.WorkflowActionDataProcessing wadp
  125. WHERE wadp.OrderItemGuid = t.OrderItemGuid
  126. )
  127. END
  128.  
  129. DROP TABLE #WorkflowActionDataProcessing
  130.  
  131. SET @RC = @@ERROR
  132. END
  133.  
  134. IF @RC = 0
  135. BEGIN
  136. COMMIT
  137. SET @RC = @@ERROR
  138. END
  139. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement