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