BizTalk BRE - .Net类中的方法在Orchestration调用规则形状中不起作用

时间:2016-04-18 10:22:01

标签: biztalk business-rules biztalk-2013

我正在尝试使用外部类库方法调用AddValidationErrors来纠正Business Rule Composer中的数据验证错误。我创建了一个FactCreator类,它也实现了IFactCreator接口。当我尝试在Business Rule Composer中测试我的策略时,这是有效的。但是当我尝试在Orchestration中时,它的规则并没有被触发。任何人都可以帮助我。以下是我的验证错误代码

public void AddValidationError(TypedXmlDocument activeDoc, string err)
{
   XmlDocument doc = activeDoc.Document.OwnerDocument;
   XmlNode errorRoot = doc.SelectSingleNode("//ValidationErrors");
   XmlElement newError = doc.CreateElement("Error");
   newError.InnerText = err;
   errorRoot.AppendChild(newError);
}

FactCreator类:

    private object[] objs;

    public FactCreator()
    {

    }
    public object[] CreateFacts(RuleSetInfo ruleSetInfo)
    {
        objs = new object[1];
        objs[0] = new ValidationErrors.ValidationErrors();
        return (objs);
    }

    public Type[] GetFactTypes(RuleSetInfo ruleSetInfo)
    {
        return null;
    }

1 个答案:

答案 0 :(得分:2)

您是否为.NET启用了BRE静态支持?

要为这些方法启用静态.Net方法的BRE支持,请将名为REG_DWORD的{​​{1}}项值StaticSupport添加到以下注册表路径:

32位Windows

1

64位Windows

HKEY_LOCAL_MACHINE\Software\Microsoft\BusinessRules\3.0\

这是一次性活动。

以上信息来自this博客。

MSDN提取物添加:

  

另一种选择是将StaticSupport放在BTNTsvc [64] .exe.config中   文件,因为此处的任何设置都会覆盖注册表中的内容。进一步,   人们也可以提出这个选项,因为它是首选   仅将默认行为的更改隔离到BizTalk,而   注册表设置是操作系统的全局设置。