ОК, так что есть несколько способов сделать это. Вот несколько решений, пожалуйста, выберите подходящее для вашего сценария.
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]
Примечание: Проблема в вашем сценарии, я думаю, будет состоять в том, что в представлении подписки сущности нет идентификаторов точных бизнес-правил, которые не были выполнены. Так что я не уверен, как вы будете связывать эти 2 вместе (неудачные строки -> Список бизнес-правил). Также помните, что в каждой строке может быть более одного бизнес-правила, которое не удалось.
2. используя View 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
Здесь используйте столбцы Model_ID
, Entity_ID
и Member_ID
/ MemberCode
, чтобы определить конкретную модель, сущность и строку, в которой произошел сбой.
Столбцы BusinessRuleName
, ConditionText
& ActionText
предоставят вашим пользователям дополнительную информацию о нарушившемся бизнес-правиле.
Примечание:
- Одна из проблем, связанных с использованием этого представления, заключается в том, что, хотя, скажем, ваше условие отказа было решено пользователем на следующий день, представление все равно будет показывать, что в определенный день проверка не удалась. (через столбец
DateCreated
).
- Также обратите внимание, что одна и та же строка с ошибочными данными будет отображаться здесь несколько раз, если несколько бизнес-правил в одной и той же строке не прошли проверку (будут разные BusinessRuleID / Name и т. Д.). Просто кое-что, чтобы принять к сведению.
- Аналогичным образом, одна и та же строка может появляться несколько раз, если она снова и снова не выполнялась в разное время. Чтобы обойти это, и если ваш итоговый отчет может с этим справиться, добавьте предложение WHERE в столбец DateCreated, чтобы вы могли видеть только те строки, которые не были выполнены сегодня. Закомментированная строка кода
<--CAST(DateCreated as DATE) = CAST(GETDATE() as DATE) AND>
делает то же самое. Если вы не можете использовать это, просто убедитесь, что строка данных различна. Однако, если вы сделаете это, помните, что если что-то не удалось вчера (и все еще находится в состоянии сбой), оно может не отображаться.
Я бы предложил использовать слегка модифицированную версию решения № 2:
Получите список ошибочных строк в представлении подписки (ValidationStatus строки данных на самом деле все еще 'Failed' ), затем присоединитесь к viw_SYSTEM_USER_VALIDATION
, убедившись, что вы выбрали только строка со значением MAX(DateCreated)
(конечно, для той же строки данных и бизнес-правила).
Желаю удачи, и если вы найдете что-то еще при решении этой проблемы, поделитесь своими знаниями здесь со всеми нами.
Наконец, если вы нашли это полезным, пожалуйста, не забудьте пометить его как ответ:)