using Microsoft.Xrm.Sdk.Workflow;
namespace Xrm.F5D365CERecruitment.Solution.WFActivities
public class CalculateAge : CodeActivity
public ITracingService tracingService;
public IWorkflowContext wfcontext;
public IOrganizationServiceFactory serviceFactory;
public IOrganizationService service;
public InArgument<DateTime> DOB { get; set; }
[Input("DateTimeNowUTC")]
public InArgument<DateTime> DateTimeNowUTC { get; set;}
public OutArgument<double> Age { get; set; }
public OutArgument<DateTime> NextBirthday { get; set; }
protected override void Execute(CodeActivityContext context)
tracingService = context.GetExtension<ITracingService>();
wfcontext = context.GetExtension<IWorkflowContext>();
serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
service = serviceFactory.CreateOrganizationService(wfcontext.UserId);
DateTime dob = DOB.Get(context);
DateTime dateTimeNowUTC = DateTimeNowUTC.Get(context);
namespace System.Activities
public sealed class InArgument<T>
public InArgument(T constValue){}
public InArgument(Activity<T> expression){}
public T Get(ActivityContext context){ return val;}
public sealed class OutArgument<T>
public OutArgument(T constValue){}
public OutArgument(Activity<T> expression){}
public void Set(ActivityContext context, T value){}
public sealed class RequiredArgumentAttribute : Attribute
public RequiredArgumentAttribute(){}
public abstract class CodeActivity : Activity
protected CodeActivity(){}
protected abstract void Execute(CodeActivityContext context);
public class Activity<T>: Activity{
public class CodeActivityContext : ActivityContext
public class ActivityContext{
public T GetExtension<T>() where T : class{
return (T)Activator.CreateInstance(typeof(T));