| AgileExtender Framework | |
Runtime behavior occurs on the AgilePoint Server as the process model is running. The runtime class is inherited from WFProcessPluggableAdapter.
The Typical Constructor will look as follows :
using System;
using System.ComponentModel;
using System.Collections;
using Ascentn.Workflow.Base;
namespace Ascentn.AgileExtender.Sample
{
/// <summary>
/// This class is AgileExtender runtime class that will be
/// invoked by AgilePoint Server.
/// </summary>
[AgileExtender("{305F5DC5-14F3-4151-946E-2D594DA695E5}",
"AgileExtender Event", typeof(MyAgileExtenderDescriptor))]
public class MyAgileExtender : WFProcessPluggableAdapter
{
#region Constructor
public MyAgileExtender(WFProcessInstance instance)
: base(instance)
{
base.AssignWorkItem += new
EventHandler(OnAssignWorkItem);
base.CancelWorkItem += new
EventHandler(OnCancelWorkItem);
base.CompleteWorkItem += new
EventHandler(OnCompleteWorkItem);
base.EnterActivityInstance += new
EventHandler(OnEnterActivityInstance);
base.LeaveActivityInstance += new
EventHandler(OnLeaveActivityInstance);
base.ReassignWorkItem += new
EventHandler(OnReassignWorkItem);
base.WorkItemOverdue += new
EventHandler(OnWorkItemOverdue);
base.WorkItemAssigned += new
EventHandler(OnWorkItemAssigned);
base.ResolvingPoolMembers += new
EventHandler(OnResolvingPoolMembers);
base.CancelProcessInstance += new
EventHandler(OnCancelProcessInstance);
base.CompleteProcedure += new
EventHandler(OnCompleteProcedure);
base.CreateProcessInstance += new
EventHandler(OnCreateProcessInstance);
base.DeliverNotification += new
EventHandler(OnDeliverNotification);
base.ProcessInstanceFaulting += new
EventHandler(OnProcessInstanceFaulting);
base.ResumeProcessInstance += new
EventHandler(OnResumeProcessInstance);
base.SuspendProcessInstance += new
EventHandler(OnSuspendProcessInstance);
base.StopProcessInstance += new
EventHandler(OnStopProcessInstance);
base.StartProcessInstance += new
EventHandler(OnStartProcessInstance);
base.ScheduledItemTimeout += new
EventHandler(OnScheduledItemTimeout);
base.UpdateCustomAttributes += new
EventHandler(OnUpdateCustomAttributes);
base.RollbackProcessInstance += new
EventHandler(OnRollbackProcessInstance);
base.MigrateProcessInstance += new
EventHandler(OnMigrateProcessInstance);
base.CompletingWorkItem += new
EventHandler(OnCompletingWorkItem);
base.CancallingWorkItem += new
EventHandler(OnCancellingWorkItem);
}
#endregion
#region Event Handlers
private void OnMigrateProcessInstance(Object sender,
System.EventArgs e)
{
WFMigrateProcessInstanceEventArgs args = e as
WFMigrateProcessInstanceEventArgs;
Logger.WriteLine("MyAgileExtender.OnMigrateProcessInstance,
{0}", args.MigrationInstruction);
//Put your code here
}
private void OnRollbackProcessInstance(Object sender,
System.EventArgs e)
{
WFRollbackProcessInstanceEventArgs args = e as
WFRollbackProcessInstanceEventArgs;
//Put your code here
Logger.WriteLine("MyAgileExtender.OnRollbackProcessInstance,
target activity instance ID='{0}'",
args.ActivityInstanceID);
}
private void OnUpdateCustomAttributes(Object sender,
System.EventArgs e)
{
WFUpdateCustomAttributesEventArgs args = e as
WFUpdateCustomAttributesEventArgs;
Logger.WriteLine("MyAgileExtender.OnUpdateCustomAttributes,
ModifiedDate={0}, ModifiedBy={1}, before={2},
after={3}", args.SentDate, args.ModifiedBy,
args.BeforeUpdate.AttrXml, args.AfterUpdate.AttrXml);
//Put your code here
}
private void OnScheduledItemTimeout(Object sender,
System.EventArgs e)
{
WFScheduleItemTimeoutEventArgs args = e as
WFScheduleItemTimeoutEventArgs;
Logger.WriteLine("MyAgileExtender.OnScheduledItemTimeout,
ItemID={0}, Parameter={1}", args.ItemID,
args.Parameter);
//Put your code here
}
private void OnStartProcessInstance(Object sender,
System.EventArgs e)
{
System.Xml.XmlDocument config = base.Configuration;
Logger.WriteLine("MyAgileExtender.OnStartProcessInstance,
config={0}", config.OuterXml);
//Put your code here
}
private void OnStopProcessInstance(Object sender,
System.EventArgs e)
{
Logger.WriteLine("MyAgileExtender.OnStopProcessInstance");
//Put your code here
}
private void OnSuspendProcessInstance(Object sender,
System.EventArgs e)
{
Logger.WriteLine("MyAgileExtender.OnSuspendProcessInstance");
//Put your code here
}
private void OnResumeProcessInstance(Object sender,
System.EventArgs e)
{
Logger.WriteLine("MyAgileExtender.OnResumeProcessInstance");
//Put your code here
}
private void OnProcessInstanceFaulting(Object sender,
System.EventArgs e)
{
WFProcessInstanceFaultingEventArgs args = e as
WFProcessInstanceFaultingEventArgs;
Logger.WriteLine("MyAgileExtender.OnProcessInstanceFaulting,
{0}", args.FaultingException);
//Put your code here
}
private void OnDeliverNotification(Object sender,
System.EventArgs e)
{
Logger.WriteLine("MyAgileExtender.OnDeliverNotification");
//Put your code here
}
private void OnCompleteProcedure(Object sender,
System.EventArgs e)
{
Logger.WriteLine("MyAgileExtender.OnCompleteProcedure");
}
private void OnCreateProcessInstance(Object sender,
System.EventArgs e)
{
Logger.WriteLine("MyAgileExtender.OnCreateProcessInstance");
//Put your code here
}
private void OnCancelProcessInstance(Object sender,
System.EventArgs e)
{
Logger.WriteLine("MyAgileExtender.OnCancelProcessInstance");
//Put your code here
}
private void OnResolvingPoolMembers(Object sender,
System.EventArgs e)
{
WFActivityInstanceEventArgs args = e as
WFActivityInstanceEventArgs;
Logger.WriteLine("MyAgileExtender.OnResolvingPoolMembers,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnEnterActivityInstance(Object sender,
System.EventArgs e)
{
WFActivityInstanceEventArgs args = e as
WFActivityInstanceEventArgs;
Logger.WriteLine("MyAgileExtender.OnEnterActivityInstance,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnAssignWorkItem(Object sender,
System.EventArgs e)
{
WFGenerateManualWorkItemEventArgs args = e as
WFGenerateManualWorkItemEventArgs;
Logger.WriteLine("MyAgileExtender.OnAssignWorkItem,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnCancelWorkItem(Object sender,
System.EventArgs e)
{
WFManualWorkItemEventArgs args = e as
WFManualWorkItemEventArgs;
Logger.WriteLine("MyAgileExtender.OnCancelWorkItem,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnCompleteWorkItem(Object sender,
System.EventArgs e)
{
WFManualWorkItemEventArgs args = e as
WFManualWorkItemEventArgs;
Logger.WriteLine("MyAgileExtender.OnCompleteWorkItem,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnLeaveActivityInstance(Object sender,
System.EventArgs e)
{
WFActivityInstanceEventArgs args = e as
WFActivityInstanceEventArgs;
Logger.WriteLine("MyAgileExtender.OnLeaveActivityInstance,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnReassignWorkItem(Object sender,
System.EventArgs e)
{
WFManualWorkItemEventArgs args = e as
WFManualWorkItemEventArgs;
Logger.WriteLine("MyAgileExtender.OnReassignWorkItem,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnWorkItemAssigned(Object sender,
System.EventArgs e)
{
WFManualWorkItemEventArgs args = e as
WFManualWorkItemEventArgs;
Logger.WriteLine("MyAgileExtender.OnWorkItemAssigned,
Activity Instance={0}, {1} workitem(s) assigned",
args.ActivityInstance, args.WorkItems.Length);
//Put your code here
}
private void OnWorkItemOverdue(Object sender,
System.EventArgs e)
{
WFOverdueWorkItemEventArgs args = e as
WFOverdueWorkItemEventArgs;
WFManualWorkItem workItem = args.WorkItem as
WFManualWorkItem;
Logger.WriteLine("MyAgileExtender.OnWorkItemOverdue,
Activity Instance={0}, {1} is about to overdue",
args.ActivityInstance, workItem.Name);
//Put your code here
}
private void OnCompletingWorkItem (Object sender,
EventArgs e)
{
WFManualWorkItemEventArgs args = e as
WFManualWorkItemEventArgs;
Logger.WriteLine("AgileExtender.OnCompleteWorkItem,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
private void OnCancellingWorkItem (Object sender,
EventArgs e)
{
WFCancellingManualWorkItemEventArgs args =
e as WFCancellingManualWorkItemEventArgs;
Logger.WriteLine("AgileExtender.OnCancellingWorkItem,
Activity Instance={0}",
args.ActivityInstance.DisplayName);
//Put your code here
}
#endregion
}
}