2012-12-12 2 views
2

"프로젝트"템플릿, 해당 템플릿의 워크 플로우 "프로젝트 워크 플로우"및 프로젝트 템플릿에서 생성 된 많은 항목이 있습니다.워크 플로에 프로그래밍 방식으로 항목을 보내려면 어떻게합니까?

관리자가 아닌 사용자는 프로젝트 항목을 편집 할 때 워크 플로우로 전송됩니다. 관리자로 로그인하면 워크 플로를 무시하기 때문에 이런 일은 발생하지 않습니다. 내가 관리자로이 대량 가져 오기 코드를 실행하면

updateItem.Editing.BeginEdit(); 
updateItem.Versions.AddVersion(); 
updateItem.Fields["x"] = someVal; 
updateItem.Fields["y"] = someOtherVal; 
updateItem.Fields["z"] = yetAnotherVal; 
updateItem.Editing.EndEdit(); 

, 나는 인간이 포함되도록 내 항목은 워크 플로우를 통해 가고 싶은 :

나는 내가 Sitecore API를 통해 항목을 편집 대량 가져 오기 프로세스가 가져온 항목을 승인하거나 거부 할 때 -하지만 관리자 사용자가 워크 플로를 무시하기 때문에 발생하지 않습니다.

수정 한 항목을 프로그래밍 방식으로 워크 플로로 보내는 방법이 있습니까? Item.State.GetWorkflowState()가 있지만 해당 SetWorkflowState()가없는 것 같습니다.

+0

Sitecore 버전은 6.5.0이다 여기

내가 발견 코드입니다. – George

답변

4

콘텐츠 승인자의 승인없이 콘텐츠를 게시하는 것은 좋은 방법이 아닙니다.

나는 이것에 대해 100 % 확신하지 못했다. 나는 이것을 시도하지 않았기 때문이다. 게시

//add to workflow if requried and place it in start state and then execute the final stage 
Sitecore.Workflows.IWorkflow workflow = master.WorkflowProvider.GetWorkflow(newItem); 
workflow.Start(newItem); 
workflow.Execute(Config.AutoPublishCommandID, newItem, "auto approved", false); 

:

//publish to pre-defined targets and langugaes 
Database[] targetDBs = new Database[] {  Sitecore.Configuration.Factory.GetDatabase("web") }; 
Language[] languages = new Language[] { LanguageManager.GetLanguage("en") }; 
Sitecore.Publishing.PublishManager.PublishIncremental(master, targetDBs, languages); 
+1

그는 임포트 된 항목을 워크 플로우로 처리하기를 원한다는 점에 대해서는 언급하지 않았습니다. 그러나 제공하는 솔루션 (workflow.Execute)이이를 수행하는 올바른 방법입니다. –

+0

@RuudvanFalier의 요청에 따라 답변을 업데이트했습니다. –

+0

고마워요 @ PankajTiwari, 잘 작동하는 것 같습니다. 난 단지 워크 플로우까지 코드를 원했다. 시작() - 나는 여전히 승인을 남겨두고 실제 사용자에게 게시하고있다. 또한 워크 플로 상태를'updateItem.Fields [ "Workflow state"]. Value = "{123ABC -...}"'(즉, 수동으로 해당 필드의 값을 설정하는 것)으로 설정할 수 있지만, 훨씬 더 올바른 방법입니다. – George

관련 문제