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);
}
}
}