External Activity samples
Some simple sample implementations of External Activities.
- Stub
-
This stub implementation only logs a message.
using System.IO; using Tridion.ContentManager.CoreService.Client; using Tridion.ContentManager.CoreService.Workflow; namespace ExternalClassLibrary { public class MyClass : ExternalActivity { protected override void Execute() { CoreServiceClient.FinishActivity(ActivityInstance.Id, new ActivityFinishData { Message = "Finished" }, null); } } } - One-day delay
-
This stub implementation delays finishing the Activity for one day.
using System; using Tridion.ContentManager.CoreService.Client; using Tridion.ContentManager.CoreService.Workflow; namespace ExternalAssemblyOverrideMethods { public class MyClass : ExternalActivity { protected override void Resume() { CoreServiceClient.FinishActivity(ActivityInstance.Id, new ActivityFinishData(), null); } protected override void Execute() { CoreServiceClient.SuspendActivity(ActivityInstance.Id, "Reason", DateTime.Now.AddDays(1), "ResumeBookmark", null); } } } - Passing a variable
-
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Tridion.ContentManager.CoreService.Client; using Tridion.ContentManager.CoreService.Workflow; namespace ExternalAssemblyProperties { public class MyClass : ExternalActivity { protected override void Execute() { ProcessInstance.Variables.Add("SomeActivityFinished", true.ToString()); CoreServiceClient.FinishActivity(ActivityInstance.Id, new ActivityFinishData { Message = "Finished" }, null); } } } - Publishing content
-
This class publishes content to a target. (Both the content and the Target Type are presented as hardcoded Content Manager URIs.)
using System; using Tridion.ContentManager.CoreService.Client; using Tridion.ContentManager.CoreService.Workflow; namespace ExternalAssemblyProperties { public class MyClass : ExternalActivity { protected override void Execute() { PublishInstructionData publishInstruction = new PublishInstructionData(); publishInstruction.ResolveInstruction = new ResolveInstructionData(); publishInstruction.RenderInstruction = new RenderInstructionData(); String[] itemsToPublish = new [] { "tcm:1-45" }; String[] targets = new [] { "tcm:0-1-65537" }; PublishTransactionData[] publishTransactions = CoreServiceClient.Publish(itemsToPublish, publishInstruction, targets, PublishPriority.Normal, null); ProcessInstance.Variables.Add("PublishTransaction", publishTransactions[0].Id); CoreServiceClient.FinishActivity(ActivityInstance.Id, new ActivityFinishData { Message = "Finished" }, null); } } } - Undoing a publish transaction
-
This implementation undoes a publish transaction. This functionality is preferably used in a Workflow Process Definition, where the chances of achieving a successful undo are optimal. This code sample assumes a variable called "PublishTransaction", as introduced in the code sample above.
using System; using Tridion.ContentManager.CoreService.Client; using Tridion.ContentManager.CoreService.Workflow; namespace ExternalAssemblyProperties { public class MyClass : ExternalActivity { protected override void Execute() { String publishTransactionId = ProcessInstance.Variables["PublishTransaction"]; CoreServiceClient.UndoPublishTransaction(publishTransactionId, QueueMessagePriority.Normal, null); CoreServiceClient.FinishActivity(ActivityInstance.Id, new ActivityFinishData { Message = "Finished" }, null); } } }