External Activity sample implementation

This topic contains a sample implementation of an External Activity through a class called MyExternalActivity, which extends the SDL Tridion Sites base class ExternalActivity. This implementation updates the binary content of a Multimedia Component.

using System.IO;
using Tridion.ContentManager.CoreService.Client;
using Tridion.ContentManager.CoreService.Workflow;

namespace ExternalUploadClassLibrary
{
	public class UploadClass : ExternalActivity
	{
		protected override void Execute()
		{
			var component = (ComponentData) CoreServiceClient.Read(ProcessInstance.Variables["itemId"], null);

			CoreServiceClient.CheckOut(component.Id, false, new ReadOptions());
			string saveTo = ProcessInstance.Variables["fileName"];
			StreamReader reader = new StreamReader(saveTo);
			UploadRequest request = new UploadRequest()
			{
				FileName = saveTo,
				UploadContent = reader.BaseStream
			};
			component.BinaryContent.IsExternal = false;
			component.BinaryContent.UploadFromFile = StreamUploadClient.UploadBinaryContent(request).FilePath;
			component.BinaryContent.Filename = saveTo;

			component = (ComponentData) CoreServiceClient.Save(component, new ReadOptions());
			CoreServiceClient.CheckIn(component.Id, new ReadOptions());

			ActivityFinishData finishData = new ActivityFinishData { Message = "Done" };

			CoreServiceClient.FinishActivity(ActivityInstance.Id, finishData, null);
		}
	}
}