如何将来自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 );
}
}
上面的代码正在使用用户上下文正确创建文档和登台任务。如何将此文档的登台任务与登台任务组关联?
答案 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 );
}
}
}