1

特定のアイテムに存在する言語バージョンについて、ワークフローの最終状態をチェックするカスタム アイテム バリデーターを作成する必要があります。Sitecore.Data.Validators.StandardValidator または Sitecore.Data.Validators.ItemValidators.WorkFlowFinalStateValidator を継承することになっていることはわかっていますが、これで利用できるメソッドは何ですか? これを見つける方法はありますか?

更新: StandardValidator クラスを使用してカスタム バリデータを作成し、ValidatorResult メソッドを実装しました。次に、このクラスを system/settings/validation rules セクションに登録しました。次に、アイテムの標準値フィールドを設定します。これは、通常のクイック バー検証ルールと検証バーで機能します。私はエラーを見ることができます。

これをワークフロー アクション ルールで使用したいと思います。私は何をする必要がありますか?アイテムの標準値セクションのワークフロー ルール エリアで設定する新しいルールを選択しましたが、ワークフローでコマンドを実行すると実行されません...何が欠けていますか?

4

1 に答える 1

3

私たちのチームは、テキストフィールドの値が英数字であることを保証するAlphanumericValidatorを作成するなど、実行しているフィールド検証のベースとしてStandardValidatorを使用しています。

言語バージョンで何をしようとしているのかわかりませんが、ワークフローアクションを実行して、アイテムに別の言語のバージョンがあるかどうかを確認し、ユーザーに現在の翻訳状態を通知していることはわかっています。承認アクションが特定のステップで実行されたとき、最終の前に、コードを開始するためのワークフローアクションを追加しました。バリデーターを使用するのではなく、実際にイベントハンドラーを実装して登録しました。次のようになりました。

public void Process(WorkflowPipelineArgs args)
{
    Item dataItemCurrentLanguage = args.DataItem;
    Item dataItemOtherLanguage = GetItemInOtherLanguage(dataItemCurrentLanguage);

    if (dataItemOtherLanguage != null && dataItemOtherLanguage.Versions.Count > 0)
    {
        //Insert what you want to check for here
        if(isGood)
        {
            //Do something
        }
        else
        {
            Context.ClientPage.ClientResponse.Alert("Something bad!");
            args.AbortPipeline();
        }
    }
}
于 2012-08-30T19:35:11.723 に答える