好的,所以有多种方法可以解决这个问题。这里有一些解决方案,请选择一个适合您的场景。
1. SQL - 所有业务规则列表
以下查询将检索在 MDS 中创建的所有活动业务规则的列表。
SELECT *
FROM [MDM].[mdm].[viw_SYSTEM_SCHEMA_BUSINESSRULES]
WHERE Model_Name = 'YourModelName'
AND BusinessRule_StatusName = 'Active'
当然,您可以通过Entity_Name
等进一步过滤。在您的案例中,重要的列将是:
[BusinessRule_Name]
[BusinessRule_Description]
[BusinessRule_RuleConditionText]
[BusinessRule_RuleActionText]
注意:我认为,您的场景中的挑战将是实体的订阅视图没有失败的确切业务规则的 ID。所以我不确定你将如何将这两个联系在一起(失败行 -> 业务规则列表)。另请记住,每一行可能有超过 1 个失败的业务规则。
2.使用视图viw_SYSTEM_USER_VALIDATION
这是一个包含所有失败的业务规则(+行信息)的历史列表的视图。你可以这样使用视图:
SELECT
DISTINCT ValidationIssue_ID, Version_ID, VersionName, Model_ID, ModelName, Entity_ID, EntityName, Hierarchy_ID, HierarchyName, Member_ID, MemberCode, MemberType_ID, MemberType, ConditionText, ActionText, BusinessRuleID, BusinessRuleName, PriorityRank, DateCreated, NotificationStatus_ID, NotificationStatus
FROM [MDM].[mdm].[viw_SYSTEM_USER_VALIDATION]
WHERE --CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND
ModelName = 'YourModelName'
--AND EntityName IN ('Entity_1','Entity_2') -- Use this to Filter on specific Entities
在这里,使用 columnsModel_ID
和/来标识失败的特定模型、实体和行。Entity_ID
Member_ID
MemberCode
Columns BusinessRuleName
, ConditionText
&ActionText
将为您的用户提供有关失败的业务规则的附加信息。
笔记:
- 使用此视图的一个问题是,即使您的失败条件在第二天由用户解决,该视图仍将显示在某个日期验证失败。(通过列
DateCreated
)。
- 另请注意,如果同一行上的多个业务规则验证失败(会有不同的 BusinessRuleID/Name 等),则相同的失败数据行将在此处出现多次。只是需要注意的一点。
- 同样,如果同一行在不同时间再次失败,则可能会出现多次。要解决此问题,并且如果您的最终报告可以这样做,请在 DateCreated 列上添加 WHERE 子句,以便您只能看到今天失败的任何行。注释掉的代码行也是
<--CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND>
如此。如果您不能使用它,只需确保数据行是不同的。但是,如果您这样做,请记住,如果某项昨天失败(并且仍处于失败状态),它可能不会显示。
我的建议是使用稍微修改过的解决方案#2:
从您的订阅视图中获取失败行的列表(数据行的 ValidationStatus 实际上仍然是 'Failed'),然后加入并viw_SYSTEM_USER_VALIDATION
确保您只选择具有MAX(DateCreated)
值的行(当然对于相同的数据行和业务规则)。
祝你好运,如果您在解决此问题时发现任何其他问题,请在这里与我们所有人分享您的学习。
最后,如果您觉得这很有用,请记得将其标记为答案 :)