Итак, есть несколько способов сделать это. Вот несколько решений, пожалуйста, выберите то, которое подходит для вашего сценария.
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. используя вид 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)
значение (конечно, для той же строки данных И бизнес-правила).
Удачи, и если вы найдете что-то еще при решении этой проблемы, поделитесь своими знаниями здесь со всеми нами.
Наконец, если вы нашли это полезным, пожалуйста, не забудьте отметить это как ответ :)
person
SilverTry
schedule
05.07.2018