1

我需要制作一个自定义项目验证器,用于检查工作流最终状态关于特定项目存在的语言版本。我知道我应该继承 Sitecore.Data.Validators.StandardValidator 或 Sitecore.Data.Validators.ItemValidators.WorkFlowFinalStateValidator,但是我可以使用哪些方法呢?有没有办法我可以找到这个?

更新: 我使用 StandardValidator 类创建了一个自定义验证器,并实现了 ValidatorResult 方法。然后我在系统/设置/验证规则部分注册了这个类。然后我为项目设置标准值字段,这适用于常规快速栏验证规则和验证栏。我能够看到错误。

现在我想在工作流操作规则中使用它。我需要做什么?我选择了新规则将其设置在项目标准值部分的工作流规则区域中,但是当我在工作流中执行命令时,它只是不运行......我错过了什么?

4

1 回答 1

3

我们的团队使用 StandardValidator 作为我们正在进行的任何字段验证的基础,例如编写一个 AlphanumericValidator 来确保文本字段值是字母数字。

我不确定您打算对语言版本做什么,但我知道我们正在运行一些工作流操作来检查项目是否有另一种语言的版本,以通知用户当前的翻译状态。当 Approve 动作发生在某个步骤中时,在 final 之前,我们添加了一个工作流动作来启动我们的代码。我们实际上没有使用验证器,而是实现并注册了一个事件处理程序。它看起来像这样:

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 回答