2

「プロジェクト」テンプレート、そのテンプレートのワークフロー「プロジェクトワークフロー」、およびプロジェクトテンプレートから作成された多くのアイテムがあります。

管理者以外のユーザーとして、プロジェクトアイテムを編集すると、ワークフローに送信されます。管理者ユーザーはワークフローを無視するため、管理者としてログインしている場合は発生しません。

SitecoreAPIを介してアイテムを編集する一括インポートプロセスがあります。

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

この一括インポートコードを管理者として実行するときは、アイテムにワークフローを実行させて、インポートされたアイテムの承認または拒否に人間が関与するようにします。ただし、管理者ユーザーはワークフローを無視するため、これは行われません。

変更したアイテムをプログラムでワークフローに送信する方法はありますか?Item.State.GetWorkflowState()がありますが、対応するSetWorkflowState()がないようです。

4

1 に答える 1

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);
于 2012-12-12T06:23:26.963 に答える