微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将Kentico 12 XP与PIM系统集成

如何解决如何将Kentico 12 XP与PIM系统集成

需要将Kentico 12 XP与外部PIM系统集成在一起。 我希望能够在计划的作业中处理PIM收到的信息,以便在Kentico中创建或更新元素。 我尝试使用本机Integration Bus并在Kentico中创建自定义计划任务来实现POC。根据我对文档的了解,可以通过扩展BaseIntegrationConnector基类并覆盖PrepareInternalObject方法来进入总线集成管道:

public override ICMSObject PrepareInternalObject(object obj,TaskTypeEnum taskType,TaskDataTypeEnum dataType,string siteName)
{
    var pimObj = (dynamic)obj;
    var node = new Product
    {
        DocumentName = pimObj.Name,DocumentCulture = "en-us",Name = pimObj.Name,Family = pimObj.Family,NodeParentID = 2
    };
            
    return node;
}

首先,我实现了一个连接器并覆盖了上述方法,以便在通过其API从PIM读取数据后,它可以创建一个新的Product实例。

最后一步,我创建了一个自定义任务,如下所示:

public class CustomSyncTask : CMS.Scheduler.ITask
{
    public string Execute(TaskInfo task)
    {

       ...

       try
       {
           IntegrationHelper.ProcessExternalTask("CustomIntegrationConnector",pimObject,IntegrationProcesstypeEnum.SkipOnError,TaskTypeEnum.CreateDocument,TaskDataTypeEnum.Simple,SiteContext.CurrentSite.SiteName);
                
       }
       catch (Exception ex) {
           return ex.Message;
       }

       return null;
    }
}

我没想到会有任何特定的错误,因为实现非常简单,但是不幸的是,运行任务时我总是会遇到相同的错误

Message: Object reference not set to an instance of an object.

Exception type: System.NullReferenceException
Stack trace:
at CMS.DataEngine.TranslationHelper.RegisterRecord(BaseInfo infoObject)
at CMS.DocumentEngine.DocumentSynchronizationHelper.GetDocumentDataSet(TreeNode node,TranslationHelper th,TaskParameters taskParams,String siteName)
at CMS.DocumentEngine.DocumentSynchronizationHelper.GetDocumentXML(TreeNode node,TreeProvider tree,String siteName)
at CMS.DocumentEngine.DocumentSynchronizationHelper.LogExternalIntegration(TreeNode node,IntegrationProcesstypeEnum result,String connectorName,String siteName)

我对Kentico源代码进行了深入研究,发现在尝试调用RegisterRecord时,将Site属性(null)作为参数传递。在Kentico中创建“产品”项时,将设置“站点属性。因此存在矛盾:如果意图创建对象,那么该对象应该如何被创建?难道我做错了什么?我是否误解了整个过程?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。