Обработки при изменении полей формы
Добавлено: 29 ноя 2018, 13:59
Приветствую!
Давно назрело предложение - создать сценарии обработки (или даже, как вариант, сделать интерфейс для создания таких сценариев самими администраторами) при изменении полей сущности.
1. Задача: нужно добавить новое поле в сущность, которая уже в продакшене.
Проблема: если после этого на основе свежедобавленного поля будет создан какой-то процесс или даже просто фильтр, он не будет отрабатывать корректно, ведь в базе записи не заполнены никакими данными. Это не всегда очевидно для Администратора, если он указал какое-либо значение "Раскрывающегося списка" по умолчанию, и никогда не очевидно для пользователей приложения - как так, поле вроде есть (и столбец есть), а фильтр по нему не работает, и автостатусы не работают и т.п.
Решение:
если в сущности уже есть данные, то изменение формы (добавление или редактирование полей, их типов) приводит к срабатыванию сценариев, если таковые назначены. При добавлении упомянутого "Раскрывающегося списка" с заданным параметром "Значение по умолчанию" может всплыть модальное окно с предложением обновить все имеющиеся записи сущности либо согласно тому самому "Значению по умолчанию", либо произвольно, либо отказаться от любезного предложения. Там же можно указать, что пока данные не будут каким-либо образом заполнены, это может вызывать некоторые непонятки.
2. Задача: в процессе эксплуатации сущности Администратору посыпались просьбы поменять поле "Дата" на "Текстовое поле", так как выяснилось, что иногда нужно писать не только дату, а, скажем, какой-то свободный комментарий (типа "дату не можем поставить, ибо клиент оказался мразью"). Администратор меняет поле "Дата" на поле "Текстовый ввод".
Проблема: Администратор не знает, как именно приложение проведет преобразование типов данных, и произведет ли.
Решение:
вариант а) приложение само предложит ему перенести текстовое представление даты в новое поле типа Текст
вариант б) Администратор прежде чем заниматься редактированием формы, создаст сценарий переопределения типа данных, и тогда сможет перевести дату во что угодно - хоть в Timestamp, хоть в любой формат текстового представления, или вообще данные похерить.
Резюме
Предоставить возможность Администратору самому навешивать сценарии конвертации данных при редактировании фрмы (или при создании новых полей - заполнять данными или нет, какими именно и на основе каких правил) даст грандиозную возможность более гибко редактировать уже используемые в продакшене сущности без страха потерять кучу данных в таблице.
Можно и не заморачиваться с этими пользовательскими сценариями, определив прозрачно максимальное количество правил преобразования данных, расписав их в Справке и добавив в подсказки в самой консоли. Можно ограничится лишь предложением заполнять базу или нет, и чем заполнять, при создании нового поля в Сущности, которая уже содержит данные.
Давно назрело предложение - создать сценарии обработки (или даже, как вариант, сделать интерфейс для создания таких сценариев самими администраторами) при изменении полей сущности.
1. Задача: нужно добавить новое поле в сущность, которая уже в продакшене.
Проблема: если после этого на основе свежедобавленного поля будет создан какой-то процесс или даже просто фильтр, он не будет отрабатывать корректно, ведь в базе записи не заполнены никакими данными. Это не всегда очевидно для Администратора, если он указал какое-либо значение "Раскрывающегося списка" по умолчанию, и никогда не очевидно для пользователей приложения - как так, поле вроде есть (и столбец есть), а фильтр по нему не работает, и автостатусы не работают и т.п.
Решение:
если в сущности уже есть данные, то изменение формы (добавление или редактирование полей, их типов) приводит к срабатыванию сценариев, если таковые назначены. При добавлении упомянутого "Раскрывающегося списка" с заданным параметром "Значение по умолчанию" может всплыть модальное окно с предложением обновить все имеющиеся записи сущности либо согласно тому самому "Значению по умолчанию", либо произвольно, либо отказаться от любезного предложения. Там же можно указать, что пока данные не будут каким-либо образом заполнены, это может вызывать некоторые непонятки.
2. Задача: в процессе эксплуатации сущности Администратору посыпались просьбы поменять поле "Дата" на "Текстовое поле", так как выяснилось, что иногда нужно писать не только дату, а, скажем, какой-то свободный комментарий (типа "дату не можем поставить, ибо клиент оказался мразью"). Администратор меняет поле "Дата" на поле "Текстовый ввод".
Проблема: Администратор не знает, как именно приложение проведет преобразование типов данных, и произведет ли.
Решение:
вариант а) приложение само предложит ему перенести текстовое представление даты в новое поле типа Текст
вариант б) Администратор прежде чем заниматься редактированием формы, создаст сценарий переопределения типа данных, и тогда сможет перевести дату во что угодно - хоть в Timestamp, хоть в любой формат текстового представления, или вообще данные похерить.
Резюме
Предоставить возможность Администратору самому навешивать сценарии конвертации данных при редактировании фрмы (или при создании новых полей - заполнять данными или нет, какими именно и на основе каких правил) даст грандиозную возможность более гибко редактировать уже используемые в продакшене сущности без страха потерять кучу данных в таблице.
Можно и не заморачиваться с этими пользовательскими сценариями, определив прозрачно максимальное количество правил преобразования данных, расписав их в Справке и добавив в подсказки в самой консоли. Можно ограничится лишь предложением заполнять базу или нет, и чем заполнять, при создании нового поля в Сущности, которая уже содержит данные.