2012-06-20 20 views
8

今、私はsitecoreワークフローに問題があります。問題は次のとおりです。sitecoreワークフローと標準値継承の厄介な問題

私のテンプレートの標準値によって、ワークフローおよびデフォルトのワークフローフィールドが設定されています。ワークフローの状態は下書きに設定されています。しかし、このテンプレートからアイテムを作成するたびにワークフローセクションのフィールドが継承されず、すべてが空です。

ワークフローとワークフローの状態を手動で設定すると、最終状態まで期待通りに機能します。ただし、コンテンツ作成者がアイテムを編集すると、新しいバージョンが作成されますが、ワークフローのフィールド値のみが保持されますが、ワークフローの状態は再び空です。

私は間違っているのですか?なぜこうなった?私はsitecore 6.5.0を使用しています

答えて

20

あなたのテンプレートの__Standard ValuesDefault workflowフィールドセットを持つ必要があります。 __Standard Valuesの項目のWorkflowフィールドに、__Standard Valuesという項目がワークフロー内にあることを暗示するように設定しないでください。同様に、__Standard ValuesアイテムにStateフィールドを設定しないでください。つまり、__Standard Valuesアイテムがその状態になっているということです。

ワークフローアイテムには、そのアイテムがそのワークフローを使用すると仮定して、アイテムが入る初期状態を定義するフィールドがInitial Stateにあります。

アイテムを作成し、その項目はDefault Workflow分野におけるワークフローと__Standard Valueを持って、その項目はそのWorkflowフィールドは、その__Standard ValuesDefault Workflowフィールドと同じに設定されています。項目が入っている状態は、前記ワークフローで定義されているようにInitial Stateになります。

+1

私たちは、まさにこのやっている、と我々は理解することはできません何かを見て:、あなたが説明するように、この作品UIからアイテムを作成するが、コードから作成します(item.Addは、アイテムがコンテンツフォルダである__スタンダード値のデフォルトのワークフローセットを持つテンプレートを指定します)、ワークフロー内に作成されたアイテムを設定しません(ワークフローフィールドは空のままです)。私たちは、それを引き起こす可能性のあるものについては困惑しています。 – Legolas

2

あなたは、具体的に明示的なワークフローと状態を設定する必要がありますように見えるAPIを経由してアイテムを作成する場合:

Item myItem = parentItem.Add("New item", myTemplate); 
myItem.Editing.BeginEdit(); 
// set any other fields you want here 
... 
// Now explicitly set the workflow and state here on your new item 
// (make sure you get the correct GUIDs by viewing raw values on your workflow and workflow state items)... 
myItem[FieldIDs.Workflow] = "{212BCCCB-8197-45C0-81CC-621E0553C25F}"; 
myItem[FieldIDs.WorkflowState] = "{E8228D86-D780-4F34-B372-6A4D29B67AF9}"; 
myItem.Editing.EndEdit(); 

私はあなたがUIを通じてそれを行う際に、いくつかの余分なパイプラインがあることを仮定していますAPIを使用してバイパスするコンテンツエディタなどを使用している場合は、この処理が行われます。

は、実際には、ここでのSDNの関連記事です: http://sdn.sitecore.net/Forum/ShowPost.aspx?PostID=45991

+0

ハードコードされたGuidでこの方法を使用しないでください。このページをチェックして、正しく設定する方法についてのjRobbinsの回答を見てください。 @stackoverflow.com/questions/13528431/sitecore-assign-workflow-to-an-item-programmatically –

+1

@Martinあなたはポイントを逃した。このコードは、実演準備のためのものではなく、デモンストレーションを目的としていました。合意したコードはIDコードなどをハードコードしないでください!あなたがUIを通してそれを行うとき、コンテンツエディタなどを使用しているときにあなたのためにこれを行う処理されるいくつかの余分なパイプラインがあることは残っています。http://www.w3.org/wiki/wiki/WEBでワークフローを設定するための "適切な"方法について、downvote – geedubb

+0

、 //stackoverflow.com/questions/13528431/sitecore-assign-workflow-to-an-item-programmatically:私は4(!)ネストされたif文を使って提案された非常に複雑なコードを "適切な"方法にするべきではないと思います何かをしなさい。さらに、ワークフローとランダムなワークフローの状態をアイテムに割り当てる方法という質問には答えられないようです。その代わりに、次の状態が望ましい状態になった場合、基本的にアイテムを次のワークフロー状態に移動します – eloycm

関連する問題