Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.16 KB | None | 0 0
  1. namespace UrbanCherry.Net.SDLTridion.Workflow
  2. {
  3. public class ScheduleForPublish : ExternalActivity
  4. {
  5. /// <summary>
  6. ///
  7. /// </summary>
  8. protected override void Execute()
  9. {
  10. Utilities util = new Utilities(CoreServiceClient, ActivityInstance);
  11. string publishDateFieldSource = util.GetActivityParamValue("PublishDateFieldSource");//could be data or metadata
  12. string publishDateXPath = util.GetActivityParamValue("PublishDateXPath");
  13.  
  14. ComponentData workflowItem = (ComponentData)CoreServiceClient.Read(ActivityInstance.WorkItems[0].Subject.IdRef + "-v0", new ReadOptions());
  15.  
  16. XDocument sourceXml = new XDocument();
  17. if (publishDateFieldSource == "data")
  18. {
  19. sourceXml = XDocument.Parse(workflowItem.Content);
  20. }else
  21. {
  22. sourceXml = XDocument.Parse(workflowItem.Metadata);
  23. }
  24.  
  25.  
  26. ActivityFinishData finishData = new ActivityFinishData
  27. {
  28. //NextActivityDueDate = publishTime,
  29. Message = "Placing in Publishing Override Queue for default period, because no date or time was set, or it was in the past",
  30. NextActivityTitle = "Holding for default publish delay"
  31. };
  32.  
  33. XElement dateElement = sourceXml.XPathSelectElement(publishDateXPath);
  34.  
  35. if (dateElement != null)
  36. {
  37. DateTime enteredDateTime = DateTime.Parse(dateElement.Value);
  38. if (enteredDateTime > DateTime.Now)
  39. {
  40. //publishTime = enteredDateTime;
  41. finishData.Message = "Placing in Publishing Override Queue until:" + enteredDateTime;
  42. finishData.NextActivityDueDate = enteredDateTime;
  43. finishData.NextActivityTitle = "Holding for future publishing";
  44. }
  45. }
  46.  
  47.  
  48. CoreServiceClient.FinishActivity(ActivityInstance.Id, finishData, new ReadOptions());
  49.  
  50. }
  51. }
  52. }
  53.  
  54. using Tridion.ContentManager.CoreService.Client;
  55. using Tridion.ContentManager.CoreService.Workflow;
  56.  
  57.  
  58. namespace UrbanCherry.Net.SDLTridion.Workflow
  59. {
  60. public class PublishingExpirationHandler : ExternalActivity
  61. {
  62. /// <summary>
  63. /// This Expiration script should be to automatically finish a manual activity that expires
  64. /// the script will read what activity to assign to, and finish the current activity
  65. /// </summary>
  66. protected override void Expire()
  67. {
  68. //Create a Utility Class
  69. Utilities util = new Utilities(CoreServiceClient, ActivityInstance);
  70. string expirationActivity = util.GetActivityParamValue("ExpirationActivityName", Utilities.ScriptType.Expiration);
  71.  
  72. string uriNextActivity = util.GetActivityURI(expirationActivity, ProcessInstance.ProcessDefinition.IdRef);
  73. DecisionActivityFinishData decisionActivityFinishData = new DecisionActivityFinishData
  74. {
  75. NextActivity = new LinkToActivityDefinitionData { IdRef = uriNextActivity },
  76. Message = "Released for publishing by workflow at " + DateTime.Now
  77. };
  78.  
  79. CoreServiceClient.FinishActivity(ActivityInstance.Id, decisionActivityFinishData, null);
  80.  
  81. }
  82. }
  83.  
  84.  
  85. }
  86.  
  87. using System;
  88. using System.IO;
  89. using System.Collections.Generic;
  90. using System.Linq;
  91. using System.Text;
  92. using System.Threading.Tasks;
  93. using Tridion.ContentManager.CoreService.Client;
  94. using Tridion.ContentManager.CoreService.Workflow;
  95.  
  96.  
  97. namespace UrbanCherry.Net.SDLTridion.Workflow
  98. {
  99. public class Publish : ExternalActivity
  100. {
  101. /// <summary>
  102. ///
  103. /// </summary>
  104. protected override void Execute()
  105. {
  106. Utilities util = new Utilities(CoreServiceClient, ActivityInstance);
  107. string targetTypeName = util.GetActivityParamValue("TargetTypeName");
  108.  
  109. ActivityFinishData finishData = new ActivityFinishData
  110. {
  111.  
  112. Message = "Items placed in the queue for publishing"
  113.  
  114. };
  115. CoreServiceClient.FinishActivity(ActivityInstance.Id, finishData, new ReadOptions());
  116. util.PublishToTargetType(new string[] { ActivityInstance.WorkItems[0].Subject.IdRef }, targetTypeName);
  117. }
  118. }
  119. }
  120.  
  121.  
  122. public void PublishToTargetType(string[] publishItems, string TargetTypeName, PublishDirection direction = PublishDirection.Publish)
  123. {
  124. string uriTargetType = null;
  125.  
  126. TargetTypesFilterData filter = new TargetTypesFilterData();
  127.  
  128. IdentifiableObjectData[] targetTypes = _client.GetSystemWideList(filter);
  129. foreach (IdentifiableObjectData targetType in targetTypes)
  130. {
  131. if (targetType.Title == TargetTypeName)
  132. {
  133. uriTargetType = targetType.Id;
  134. }
  135. }
  136.  
  137. if (!string.IsNullOrEmpty(uriTargetType))
  138. {
  139. string[] targets = new String[] { uriTargetType };
  140.  
  141. RenderInstructionData renderInstruction = new RenderInstructionData();
  142. ResolveInstructionData resolveInstruction = new ResolveInstructionData();
  143.  
  144. if (direction == PublishDirection.UnPublish)
  145. {
  146. UnPublishInstructionData unpublishInstruction = new UnPublishInstructionData
  147. {
  148. ResolveInstruction = resolveInstruction,
  149. RollbackOnFailure = false,
  150. StartAt = DateTime.Now
  151. };
  152. _client.UnPublish(publishItems, unpublishInstruction, targets, PublishPriority.High, new ReadOptions());
  153. }
  154. else
  155. {
  156.  
  157. PublishInstructionData publishInstruction = new PublishInstructionData
  158. {
  159. DeployAt = DateTime.Now,
  160. MaximumNumberOfRenderFailures = 0,
  161. RenderInstruction = renderInstruction,
  162. ResolveInstruction = resolveInstruction,
  163. StartAt = DateTime.Now.AddSeconds(10)
  164.  
  165. };
  166. _client.Publish(publishItems, publishInstruction, targets, PublishPriority.Normal, new ReadOptions());
  167. }
  168. }
  169.  
  170.  
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement