|
|
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
В готовом проекте часто приходится менять ключи(измерения) для получения значения. Например, Значение "цена" - ключ "Товар". Делаем регистр: Товар, Время, Цена. И функцию: с параметрами товар, время и результатом "цена". Все просто и удобно, во всех селекатах используем функцию. Но вот заказчик говорит, что теперь цена будет от ключа: "товар, тип объекта". Передали регистр, функцию и во всех местах, где использовалась функция . А затем заказчик говорит добавить "регион". И опять та же эпопея. В общем, компания развивается, реструктуризируется, меняются бизнес процессы - поэтому не возможно заранее написать законченное ТЗ. Т.е. подобных задач очень много, их очень тяжело внедрять. Переделать регистр и функцию - это не проблема, хотелось бы что бы эта функция сразу заработала во всех местах. Поэтому интересуюсь, у кого какие идеи, наработки в данном вопросе. Какие у меня есть идеи. 1. Описать все метаданные. Генерировать весь код или часть кода(как базовые объекты )на основании метаданных. 2. Сразу создать функцию с большим количеством параметров. На будущее передавать все что есть, что бы им на будущее в голову не взбрело, или передавать в функцию как-то (как в рамках MSSQL?) контекст селекта, например все значения селекта как именные параметры одним image. 3. Знать все места, где используется функция, и внести изменения, никого не забыв. Наверное, надо стремиться к первому. Но тяжело унифицировать все отчеты и обработки. Второй вариант тоже не понятно как реализовать, что бы ни выглядело "бредом". Пока пользуюсь третьим, но это конечно не предел мечтаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 15:34 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
что за регистр? речь про одинэс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 15:45 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
Deff, по 2-му варианту в рамках MSSQL можно использовать XML ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 15:47 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
Deffхотелось бы что бы эта функция сразу заработала во всех местах. Поэтому интересуюсь, у кого какие идеи, наработки в данном вопросе. Так это сильно зависит от языка реализации... Например для меня увеличить количество параметров вообще не проблема! Будет работать как старый вариант Код: plaintext Так и модернизирование со временем варианты Код: plaintext Код: plaintext Просто новые параметры будут определяться в функции некими значениями "по умолчанию"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 15:48 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
maniac85что за регистр? речь про одинэс? Нет, не один 1С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 15:51 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
krvsa, Даже если сделать параметры по умолчанию, то все равно не будет передоваться важный параметр. И значение будет браться по старой системе. Т.е. не правильно, да еще и не сразу заметишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 15:52 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
lazovikDeff, по 2-му варианту в рамках MSSQL можно использовать XML Хм, наверное действительно можно. Сейчас поищу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 15:53 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
DeffКакие у меня есть идеи. Начать размышлять удобнее со второго варианта. Проблема этого подхода в том, что в "сразусозданнуюфункцию" будет передаваться вагон неверифицируемых данных. То есть, Вы будете передавать туда какую-то дату, какой-то тип и т. п., но нет совершенно никаких гарантий, что именно нужные, и Вы это никак не проверите (пока они не станут нужны по бизнес-логике). Скажем, в одном случае у Вас доступны две даты: какую из них передадите? Или обе? А в другом случае ни одной. Заджойните таблицу с датой? Какую именно? Передадите null? Вообще не передадите? В общем, это будет просто свалка с тремя решаемыми задачами: осложнить и запутать начальное написание кода, осложнить и запутать отладку при изменении бизнес-логики, создать псевдоощущение "раз, поменяли - и всё работает по-новому". Первый подход не приносит ничего нового, просто вместо "бегать и менять код" будет "бегать и менять метаданные". Поскольку проблемы будут ровно те же, что и в первом случае: надо взять откуда-то данные, причём не абы какие, а именно нужные, а какие нужные - вопрос к человеку. Третий подход смущает.. зачем знать? Ну даже с учётом неумения MSSQL отслеживать зависимости, их обычно несложно найти (если не брать в расчёт некоторых сильно нетривиальных методов кодирования отдельных программистов). А в целом... Вы исходите из того, что есть некий более-менее устойчивый контекст, в котором считается и может быть посчитана цена, причём при изменении бизнес-логики меняется способ расчёта, но контекст остаётся неизменным. Если так, никто не мешает обернуть этот контекст во view и сделать цену вычисляемым полем. Вот только предпосылка о неизменности имхо сомнительна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 18:01 |
|
||
|
Изменения бизнес логики, измерений в рабочем проекте.
|
|||
|---|---|---|---|
|
#18+
Deff , не совсем понятно каким боком тут "Проектирование БД"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 22:37 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=32&tid=1542404]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 434ms |

| 0 / 0 |
