如何将来自REST API或外部应用程序的Kentico更改与暂存任务组相关联

时间:2018-01-23 19:56:56

标签: console-application kentico

如何将来自REST API或外部应用程序(,如Windows控制台应用程序)的Kentico更改与暂存任务组相关联

static void Main ( string [ ] args )
{
    UserInfo userInfo = UserInfoProvider.GetUserInfo ( "User1" );
    using ( new CMSActionContext ( userInfo ) )
    {
        TreeProvider treeProvider = new TreeProvider ( userInfo );
        NodeSelectionParameters nodeSelectionParameters = new NodeSelectionParameters
        {
            AliasPath = "Path"
        };
        TreeNode parentPage = treeProvider.SelectSingleNode ( nodeSelectionParameters );

        TreeNode newPage = TreeNode.New ( "Class", treeProvider );
        newPage.DocumentName = "Test Title";
        newPage.DocumentCulture = "en-us";
        newPage.DocumentUrlPath = "Path";

        newPage.Insert ( parentPage );
    }
}

上面的代码正在使用用户上下文正确创建文档和登台任务。如何将此文档的登台任务与登台任务组关联?

2 个答案:

答案 0 :(得分:1)

首先,我要确保您要更改的对象位于内容暂存所支持的项目列表中。您可以在此处查看该列表:Content staging - What can be synchronized

只要您最终使用Kentico的API和Content Staging is enabled,那么Kentico应该为您创建这些任务。如果您在没有API的情况下直接更新Kentico数据库,您可能会遇到麻烦,可能需要手动创建暂存任务或use the API to perform synchronisation

答案 1 :(得分:0)

我们可以使用 SynchronizationActionContext 类将API更改与暂存任务组关联。

    static void Main ( string [ ] args )
    {
        List<TaskGroupInfo> taskGroups = TaskGroupInfoProvider.GetTaskGroups ( ).WhereEquals ( "TaskGroupCodeName", "MyTaskGroup" ).ToList ( );
        using ( new SynchronizationActionContext ( ) { TaskGroups = taskGroups } )
        {
            UserInfo userInfo = UserInfoProvider.GetUserInfo ( "User1" );
            using ( new CMSActionContext ( userInfo ) )
            {
                TreeProvider treeProvider = new TreeProvider ( userInfo );
                NodeSelectionParameters nodeSelectionParameters = new NodeSelectionParameters
                {
                    AliasPath = "Path"
                };
                TreeNode parentPage = treeProvider.SelectSingleNode ( nodeSelectionParameters );

                TreeNode newPage = TreeNode.New ( "Class", treeProvider );
                newPage.DocumentName = "Test Title";
                newPage.DocumentCulture = "en-us";
                newPage.DocumentUrlPath = "Path";

                newPage.Insert ( parentPage );
            }
        }
    }