A complete example

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

The following samples show you how to create, approve, publish, reject, archive and delete a document. It uses the sample workflow created in chapter Managing workflow schema:

 

Edit -> Article Approval (custom step) -> Publish -> Archive

 

Creating a new document

 

[C#]

 

using CMS.SettingsProvider;

using CMS.CMSHelper;

using CMS.DataEngine;

using CMS.GlobalHelper;

using CMS.TreeEngine;

using CMS.SiteProvider;

using CMS.WorkflowEngine;

 

...

 

           // Prepare the TreeProvider (it must be initialized with user information

           // when editing content)

          UserInfo ui = UserInfoProvider.GetUserInfo("administrator");

          TreeProvider tree = new TreeProvider(ui);

 

          // Get the parent document

           CMS.TreeEngine.TreeNode parentNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, "/",              TreeProvider.ALL_CULTURES, true, null, false);

          if (parentNode != null)

           {

              // Create new document

               CMS.TreeEngine.TreeNode node = new CMS.TreeEngine.TreeNode("CMS.Article", tree);

               node.DocumentName = "TestingWorkflow";

               node.DocumentCulture = CMSContext.CurrentUser.PreferredCultureCode;

 

              // Set document fields

               node.SetValue("ArticleName", "Testing workflow");

               node.SetValue("ArticleTeaserText", "Testing article for workflow");

               node.SetValue("ArticleText", "Testing article for workflow text");

             

              // Although article contains the attachment field, the attachment can be added only                     // after the document has been created (see below)

 

              // Insert the document - DocumentHelper should be used when using workflow

              DocumentHelper.InsertDocument(node, parentNode.NodeID, tree);

 

              // Insert the attachment (image) to the document

              if (FileUpload.PostedFile != null)

               {

                  DocumentHelper.AddAttachment(node, "ArticleTeaserImage", FileUpload.PostedFile,

                     tree);

 

                  // Update the document

                  DocumentHelper.UpdateDocument(node, tree);

               }

           }      

 

Editing a document

 

[C#]

 

using CMS.SettingsProvider;

using CMS.CMSHelper;

using CMS.DataEngine;

using CMS.GlobalHelper;

using CMS.TreeEngine;

using CMS.SiteProvider;

using CMS.WorkflowEngine;

 

...

 

          // Prepare the TreeProvider (it must be initialized with user information when editing

           // document structure)

          UserInfo ui = UserInfoProvider.GetUserInfo("administrator");

          TreeProvider tree = new TreeProvider(ui);

 

          // Get the document (current culture)

           CMS.TreeEngine.TreeNode node = tree.SelectSingleNode(CMSContext.CurrentSiteName,

              "/TestingWorkflow", CMSContext.CurrentUser.PreferredCultureCode, false, null, false);

          if (node != null)

           {

              // Get the latest version of the document (always use DocumentHelper when using

               // workflow)

               node = DocumentHelper.GetDocument(node, tree);

 

              // Check out the document

              VersionManager vm = new VersionManager(tree);

               vm.CheckOut(node);

 

              // Update the document fields the regular way

               node.SetValue("ArticleName", "Edited testing workflow");

               node.SetValue("ArticleTeaserText", "Edited testing article for workflow");

               node.SetValue("ArticleText", "Edited testing article for workflow text");

             

              // Update the attachment if present

              if (FileUpload.PostedFile != null)

               {

                  // Add the attachment

                  DocumentHelper.AddAttachment(node, "ArticleTeaserImage", FileUpload.PostedFile,

                     tree);

               }

             

              // Update the document

              DocumentHelper.UpdateDocument(node, tree);

 

              // Check in the document

               vm.CheckIn(node, null, null);

           }      

 

Approving the document

 

[C#]

 

using CMS.SettingsProvider;

using CMS.CMSHelper;

using CMS.DataEngine;

using CMS.GlobalHelper;

using CMS.TreeEngine;

using CMS.SiteProvider;

using CMS.WorkflowEngine;

 

...

 

          // Prepare the TreeProvider (it must be initialized with user information when editing

           // document structure)

          UserInfo ui = UserInfoProvider.GetUserInfo("administrator");

          TreeProvider tree = new TreeProvider(ui);

 

          // Get the document (current culture)

           CMS.TreeEngine.TreeNode node =  tree.SelectSingleNode(CMSContext.CurrentSiteName,

              "/TestingWorkflow", CMSContext.CurrentUser.PreferredCultureCode, false, null, false);

          if (node != null)

           {

              // Get the latest version of the document (always get the document with DocumentHelper

               // when using workflow)

               node = DocumentHelper.GetDocument(node, tree);

 

              // Move the document to the next step (approve)

              WorkflowManager wm = new WorkflowManager(tree);

               wm.MoveToNextStep(node, "");

           }      

 

Rejecting the document

 

[C#]

 

using CMS.SettingsProvider;

using CMS.CMSHelper;

using CMS.DataEngine;

using CMS.GlobalHelper;

using CMS.TreeEngine;

using CMS.SiteProvider;

using CMS.WorkflowEngine;

 

...

 

          // Prepare the TreeProvider (it must be initialized with user information when editing

           // document structure)

          UserInfo ui = UserInfoProvider.GetUserInfo("administrator");

          TreeProvider tree = new TreeProvider(ui);

 

          // Get the document (current culture)

           CMS.TreeEngine.TreeNode node =  tree.SelectSingleNode(CMSContext.CurrentSiteName,

              "/TestingWorkflow", CMSContext.CurrentUser.PreferredCultureCode, false, null, false);

          if (node != null)

           {

              // Get the latest version of the document (always get the document with DocumentHelper

               // when using workflow)

               node = DocumentHelper.GetDocument(node, tree);

 

              // Move the document to the next step (approve)

              WorkflowManager wm = new WorkflowManager(tree);

               wm.MoveToPreviousStep(node, "");

           }

 

Publish the document

 

[C#]

 

using CMS.SettingsProvider;

using CMS.CMSHelper;

using CMS.DataEngine;

using CMS.GlobalHelper;

using CMS.TreeEngine;

using CMS.SiteProvider;

using CMS.WorkflowEngine;

 

...

 

           // Prepare the TreeProvider (it must be initialized with user information when editing

           // document structure)

          UserInfo ui = UserInfoProvider.GetUserInfo("administrator");

          TreeProvider tree = new TreeProvider(ui);

 

          // Get the document (current culture)

           CMS.TreeEngine.TreeNode node =  tree.SelectSingleNode(CMSContext.CurrentSiteName,

              "/TestingWorkflow", CMSContext.CurrentUser.PreferredCultureCode, false, null, false);

          if (node != null)

           {

              // Get the latest version of the document (always get the document with DocumentHelper

               // when using workflow)

               node = DocumentHelper.GetDocument(node, tree);

 

              // Move the document to the next step (approve)

              WorkflowManager wm = new WorkflowManager(tree);

 

              // Approve until the step is publish

              WorkflowStepInfo currentStep = wm.GetStepInfo(node);

              while ((currentStep != null) && (currentStep.StepName.ToLower() != "published"))

               {

                   currentStep = wm.MoveToNextStep(node, "");

               }

            }

 

Archive the document

 

[C#]

 

using CMS.SettingsProvider;

using CMS.CMSHelper;

using CMS.DataEngine;

using CMS.GlobalHelper;

using CMS.TreeEngine;

using CMS.SiteProvider;

using CMS.WorkflowEngine;

 

...

 

           // Prepare the TreeProvider (it must be initialized with user information when editing

           // document structure)

          UserInfo ui = UserInfoProvider.GetUserInfo("administrator");

          TreeProvider tree = new TreeProvider(ui);

 

          // Get the document (current culture)

           CMS.TreeEngine.TreeNode node =  tree.SelectSingleNode(CMSContext.CurrentSiteName,

              "/TestingWorkflow", CMSContext.CurrentUser.PreferredCultureCode, false, null, false);

          if (node != null)

           {

              // Get the latest version of the document (always get the document with DocumentHelper

               // when using workflow)

               node = DocumentHelper.GetDocument(node, tree);

 

              // Archive the document

              WorkflowManager wm = new WorkflowManager(tree);

               wm.ArchiveDocument(node, "");

           }

 

Delete (destroy) the document

 

[C#]

 

using CMS.SettingsProvider;

using CMS.CMSHelper;

using CMS.DataEngine;

using CMS.GlobalHelper;

using CMS.TreeEngine;

using CMS.SiteProvider;

using CMS.WorkflowEngine;

 

...

 

          // Prepare the TreeProvider (it must be initialized with user information when editing

           // document structure)

          UserInfo ui = UserInfoProvider.GetUserInfo("administrator");

          TreeProvider tree = new TreeProvider(ui);

         

          // Get the document (current culture)

           CMS.TreeEngine.TreeNode node = tree.SelectSingleNode(CMSContext.CurrentSiteName,

              "/TestingWorkflow", CMSContext.CurrentUser.PreferredCultureCode, false, null, false);

 

          if (node != null)

           {

              // Always delete the document with DocumentHelper, it handles all the dependencies

              DocumentHelper.DeleteDocument(node, tree, true, true, true);

           }

 

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