Automatic Activity C# sample scripts
Some simple sample C# scripts of Automatic Activities.
- Stub script
-
This stub script only logs a message.
ActivityFinishData finishData = new ActivityFinishData() { Message = "Finished" }; SessionAwareCoreServiceClient.FinishActivity(CurrentActivityInstance.Id, finishData, null); - One-day delay
-
This stub script delays finishing the Activity for one day. The script is reached in two situations:
- when the Activity has just started (the
ifclause) - when the Activity has been resumed after being suspended (the
elseclause)
if (string.IsNullOrEmpty(ResumeBookmark)) { SessionAwareCoreServiceClient.Suspend(CurrentActivityInstance.Id, "Temporary suspension", DateTime.Now.AddDays(1), "TempBookmark", null); } else if (ResumeBookmark == "TempBookmark") { ActivityFinishData finishData = new ActivityFinishData() { Message = "Finished" }; SessionAwareCoreServiceClient.FinishActivity(CurrentActivityInstance.Id, finishData, null); } - when the Activity has just started (the
- Passing a variable
-
The first Activity script (for an Activity called
SomeActivity) sets a variable whose presence and value oftrueis used as a precondition for the second Activity script.Script for
SomeActivity:ActivityFinishData finishData = new ActivityFinishData() { Message = "Finished" }; SessionAwareCoreServiceClient.FinishActivity(CurrentActivityInstance.Id, finishData, null); ProcessInstance.Variables.Add("SomeActivityFinished", true.ToString());Script for the other Activity:
if (!ProcessInstance.Variables.ContainsKey("SpecificActivityFinished")) || !bool.Parse(ProcessInstance.Variables["SpecificActivityFinished"])) { throw new Exception("Incorrect Activity was executed"); } ActivityFinishData finishData = new ActivityFinishData() { Message = "Finished" }; SessionAwareCoreServiceClient.FinishActivity(CurrentActivityInstance.Id, finishData, null); - Defining a method
-
This script the
FinishedMessagemethod. Note that if the assembly and namespace being added here are supposed to be available in every C# script fragment you create, you can configure them in the Content Manager configuration file, Tridion.ContentManager.config, instead of mentioning them here.<%@Assembly Name="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"%> <%@ Import Namespace="System.ServiceModel"%> <%! private string FinishedMessage() { return "Finished " + BasicHttpSecurityMode.Message.ToString(); } %> Logger.Verbose("Executing C# script"); ActivityFinishData finishData = new ActivityFinishData() { Message = "Finished" }; SessionAwareCoreServiceClient.FinishActivity(CurrentActivityInstance.Id, finishData, null); - Publishing content
-
This script publishes content to a target. (Both the content and the Target Type are presented as hardcoded Content Manager URIs.)
PublishInstructionData publishInstruction = new PublishInstructionData(); publishInstruction.ResolveInstruction = new ResolveInstructionData(); publishInstruction.RenderInstruction = new RenderInstructionData(); String [] itemsToPublish = new String[] {"tcm:6-20-8192"}; String [] targets = new String[] {"tcm:0-1-65537"}; PublishTransactionData[] publishTransactions = SessionAwareCoreServiceClient.Publish(itemsToPublish, publishInstruction, targets, PublishPriority.Normal, null); ProcessInstance.Variables.Add("PublishTransaction", publishTransactions[0].Id); ActivityFinishData finishData = new ActivityFinishData() { Message = "Finished" }; SessionAwareCoreServiceClient.FinishActivity(CurrentActivityInstance.Id, finishData, null); - Undoing a publish transaction
-
This script 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.
String publishTransactionId = ProcessInstance.Variables["PublishTransaction"]; SessionAwareCoreServiceClient.UndoPublishTransaction(publishTransactionId, QueueMessagePriority.Normal, null); ActivityFinishData finishData = new ActivityFinishData() { Message = "Finished" }; SessionAwareCoreServiceClient.FinishActivity(CurrentActivityInstance.Id, finishData, null);