2015-11-09 49 views
1

我一直致力於在遠程門戶中創建JournalArticle。我成功創建了這篇文章。但是,當我嘗試通過Web內容顯示進行搜索時,它不可用。Liferay - 遠程創建JournalArticle不可用於顯示直到發佈

只有當我手動去遠程門戶發佈文章時它纔可用。

有沒有辦法讓文章可用於顯示而無需手動發佈?

請按照下面的圖像進行澄清。

新標題1是我在遠程portlet中創建的JournalArticle。下圖顯示了創建後的文章。

enter image description here

我儘量選擇這篇文章將網站內容的顯示。

enter image description here

enter image description here

enter image description here

正如你可以在上面看到,我無法找到的文章。 我回去手動發佈文章。

enter image description here

然後我可以找到網站內容搜索的文章。

enter image description here

這實在是痛苦的,因爲我們需要儘快,因爲它是在門戶網站創建找到那本雜誌。有誰知道爲什麼會出現這個問題?有什麼可以解決這個問題?

編輯:添加了在遠程門戶中創建JournalArticle的代碼。

journalArticleSoap = journalSoap.addArticle(
    remoteGroupId, 
    journalFolderSoap.getFolderId(), 
    article.getClassNameId(), 
    article.getClassPK(), 
    "", 
    true, 
    LocalizationUtil.getAvailableLanguageIds(article.getTitle()), 
    titleMapValues.toArray(new String[titleMapValues.size()]), 
    LocalizationUtil.getAvailableLanguageIds(article.getDescription()), 
    descriptionMapValues.toArray(new String[descriptionMapValues.size()]), 
    content, 
    article.getType(), 
    article.getStructureId(), 
    remoteTemplateKey, 
    article.getLayoutUuid(), 
    displayDate.get(Calendar.MONTH), 
    displayDate.get(Calendar.DAY_OF_MONTH), 
    displayDate.get(Calendar.YEAR), 
    displayDate.get(Calendar.HOUR), 
    displayDate.get(Calendar.MINUTE), 
    0, 0, 0, 0, 0, //expirationDate 
    article.getExpirationDate() == null, 
    0, 0, 0, 0, 0, 
    true, 
    article.isIndexable(), 
    article.getUrlTitle(), 
    serviceContext); 

journalSoap是JournalArticleServiceSoap對象的遠程門戶。 remoteGroupId是遠程門戶的全局組標識 journalFolderSoap是遠程創建的JournalFolderSoap對象文件夾。 article是本地門戶中的JournalArticle。 remoteTemplateKey是創建的遠程模板的templateKey。

+0

如何創建文章?你能告訴我們一些代碼嗎?這似乎是一個工作流程狀態問題,也許直到手動發佈文章處於Pending狀態? –

+0

@MarcoMercuri用代碼創建文章更新。 –

回答

2

我不明白爲什麼這個問題已在形成。但是當我執行管理控制面板下的「重新索引所有搜索索引」時,我發現問題得到解決。

所以我寫了一個代碼來自動執行它,如下所示。

try { 
    String[] companyIdArray = new String[1]; 
    companyIdArray[0] = ""+PortalUtil.getDefaultCompanyId(); 
    Indexer indexer=IndexerRegistryUtil.getIndexer(JournalArticle.class); 
    indexer.reindex(companyIdArray); 
} catch (PortalException e) { 
    e.printStackTrace(); 
} 

我在遠程portlet控制器中提供了上述代碼,並對其進行了REST調用。創建JournalArticle後,在遠程環境中執行此操作可解決問題。

3

試試這個:

journalArticleSoap = journalSoap.addArticle(
    //your code 
); 

journalSoap.updateStatus(journalArticleSoap.getGroupId(), 
    journalArticleSoap.getArticleId(), 1, WorkflowConstants.STATUS_APPROVED, 
    journalArticleSoap.getUrlTitle(), serviceContext); 
+0

它似乎正在工作..我會測試更多,並接受你的答案。謝謝:-) –

+0

很高興我可以幫忙! –

+0

嗨..我很抱歉,但它似乎不工作.. :-( –

相關問題