MDS业务规则基于多个基于域的属性

时间:2017-09-18 07:19:37

标签: business-rules mds

我在主数据服务(MDS)上遇到了这个问题。

我有一个实体,其中有两个基于其他两个实体的域。 我创建了第一个基于第一个域的业务规则,它运行良好。

但是当我尝试使用第二个域创建第二个业务规则时,会出现错误:

200095 : Cannot specify more than one entity in MetadataGet 

  400003 : The attribute reference is not valid. The attribute was not found. 

  400003 : The attribute reference is not valid. The attribute was not found.

显然该属性有效。实际上,如果我删除了第一个业务规则,那么第二个业务规则就会正确发布。

我认为如果您尝试应用第二个基于域的属性,MDS会阻止第二个业务规则。

1 个答案:

答案 0 :(得分:0)

这也发生在我们身上,似乎只有在采取了一组特定的操作后才会发生此错误:

  1. 我们首先在SQL Server 2017上还原了MDS 2012数据库
  2. 我们使用MDS管理工具升级了数据库。请记住,多实体业务规则现在可以正常工作-保存后不会返回任何错误,可以发布并成功进行评估
  3. 然后我们意识到我们缺少一些代码更改,因此我们决定在旧的MDS 2012中使用MDSModelDeploy.exe创建一个完整的模型包。
  4. 我们使用MDSModelDeploy deployupdate命令部署了该软件包。在现有多实体规则无法发布之后,您也将无法基于一个实体中的不同实体创建新规则。不幸的是,我们没有找到解决办法,因为有更简单的解决方法。

这时,我们退后一步,再次恢复并升级了旧数据库,事实证明规则是行得通的,因此必须成为破坏这些规则的软件包。我不知道您的情况如何,因为当我们在SQL 2017中创建一个全新的模型时,所有基于多实体的规则都可以正常运行,因此我很好奇要采取什么步骤来重现您的错误。

我想想解决第4点问题的唯一可能方法是从损坏的模型创建MDSModelDeploy更新包,从新的健康模型创建另一个包,然后比较多重XML的方式。 -实体业务规则的结构化。不过,我们没有尝试过这一方法,因为我们找到了前面描述的解决方法。