Workflow handler

  Previous topic Next topic JavaScript is required for the print function Mail us feedback on this topic! Mail us feedback on this topic!  

The workflow handler allows you to handle the following events:

 

•OnBeforeCheckOut - before document is checked out
•OnAfterCheckOut - after document is checked out
•OnBeforeCheckIn - before document is checked in
•OnAfterCheckIn - after document is checked in
•OnBeforeApprove - before document is approved
•OnAfterApprove - after document is approved
•OnBeforeReject - before document is rejected
•OnAfterReject - after document is rejected
•OnBeforePublish - before document is published
•OnAfterPublish - after document is published

 

When the document is published, the order of the events is following:

 

1.OnBeforeApprove
2.OnBeforePublish
3.OnAfterPublish
4.OnAfterApprove

 

Example

 

The following example shows how to send an e-mail with news document content when it's published:

 

1.Open the CustomWorkflowHandler class and put the following code at the beginning of the file. It adds the reference to the namespaces we will use to handle the event:

 
[C#]

 

using CMS.TreeEngine;

using CMS.GlobalHelper;

using CMS.EmailEngine;

using CMS.WorkflowEngine;

 

2.Put the following code inside the OnAfterPublish method:

 

[C#]

 

// type the document as TreeNode

TreeNode newsDoc = (TreeNode)treeNodeObj;

 

// handle the event only for news items

if (newsDoc.NodeClassName.ToLower() == "cms.news")

{

// get content of the inserted news item and send it by e-mail

 EmailMessage email = new EmailMessage();

 email.From = "admin@domain.com";

 email.Recipients = "admin@domain.com";

 email.Subject = ValidationHelper.GetString(newsDoc.GetValue("NewsTitle"), "");

 email.Body = ValidationHelper.GetString(newsDoc.GetValue("NewsSummary"), "");

 EmailSender.SendEmail(email);

}

 

3.Set the From and Recipients e-mail addresses to you e-mail address.
 
4.Compile and run the project.
 
5.Configure your project so that it uses workflow for news items and create and publish a news item. You should receive the content of the news item by e-mail.

 

Getting the workflow step name

 

If you need to get the name of the workflow step (for example in the OnAfterApprove event), you need to use code like this:

 

[C#]

 

CMS.WorkflowEngine.WorkflowStepInfo previousStep = (CMS.WorkflowEngine.WorkflowStepInfo) previousStepObj;

string stepCodeName = previousStep.StepName;

 

Page url: http://devnet.kentico.com/docs/5_5r2/devguide/index.html?workflow_handler.htm