Size: a a a

Software Design/Architecture/Zen

2021 January 12

HH

Human Human in Software Design/Architecture/Zen
I Scarab
Ну типа того. Операции с ресурсом сами по себе атомарны, они либо выполняются, либо нет. Прошёл change - ура. Не прошёл - увы.
Ок, тогда я могу сказать, что эти все операции это создание ресурсов
/schedule/start-editing
/schedule/continue-editing
/schedule/change
/schedule/no-change


просто как только они отрабатывают - они удаляются системой.
источник

IS

I Scarab in Software Design/Architecture/Zen
Скажем вот как выше приводили пример с бронью в кинотеатре.
Ты забронировал место, у тебя есть N минут на оплату. Пока ждём оплату - держим лок.
Версионность тут вообще никак не поможет )
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
я думал что лок это что-то про одну транзакцию, а тут получается что лок в рамках нескольких транзакций... не знакомя штука
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
соединения с бд сюда же
источник

IS

I Scarab in Software Design/Architecture/Zen
Human Human
Ок, тогда я могу сказать, что эти все операции это создание ресурсов
/schedule/start-editing
/schedule/continue-editing
/schedule/change
/schedule/no-change


просто как только они отрабатывают - они удаляются системой.
Ну да, только у тебя эти ресурсы связаны. Ты же не можешь выполнить change, не сделав лок, например.
источник

HH

Human Human in Software Design/Architecture/Zen
I Scarab
Ну да, только у тебя эти ресурсы связаны. Ты же не можешь выполнить change, не сделав лок, например.
Могу, просто вернется другой json
источник

HH

Human Human in Software Design/Architecture/Zen
Мне просто все интересно, в чем профит такого извращения)
источник

IS

I Scarab in Software Design/Architecture/Zen
Human Human
Могу, просто вернется другой json
...с ошибкой, ну да.
Но бизнес-операция "редактирование расписания" подразумевает три действия. Взяли лок, отредактировали, сняли лок.
источник

HH

Human Human in Software Design/Architecture/Zen
I Scarab
...с ошибкой, ну да.
Но бизнес-операция "редактирование расписания" подразумевает три действия. Взяли лок, отредактировали, сняли лок.
Я не понимаю чем это лучше?

/edit/create
/edit/1234/change
/edit/1234/commit
источник

IS

I Scarab in Software Design/Architecture/Zen
Human Human
Я не понимаю чем это лучше?

/edit/create
/edit/1234/change
/edit/1234/commit
Я не говорю, что "лучше". Лично мне кажется, что это более наглядно, потому что получение/снятие лока привязывается к созданию/удалению ресурса "сеанс редактирования".
Ты же изначально спрашивал именно про избавиться от неявных действий.
Но это чисто моё мнение, я никому не навязываю.
источник

HH

Human Human in Software Design/Architecture/Zen
I Scarab
Я не говорю, что "лучше". Лично мне кажется, что это более наглядно, потому что получение/снятие лока привязывается к созданию/удалению ресурса "сеанс редактирования".
Ты же изначально спрашивал именно про избавиться от неявных действий.
Но это чисто моё мнение, я никому не навязываю.
Спасибо, понял, для тебя это читабельнее.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
I Scarab
...с ошибкой, ну да.
Но бизнес-операция "редактирование расписания" подразумевает три действия. Взяли лок, отредактировали, сняли лок.
звучит как софт для налоговиков - залочили - внесли данные - разлочили. Пока вносим данные остальные 10 инспекторов ждут
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть для начала стоит задаться вопросом "что это за локи и нужны ли они тут".
источник

SP

Sergey Protko in Software Design/Architecture/Zen
в случае create/change/commit тут вообще не про локи - тут про публикацию версии по сути, так что вы просто совсем разные бизнес сценарии обсуждаете походу
источник

IS

I Scarab in Software Design/Architecture/Zen
Sergey Protko
ну то есть для начала стоит задаться вопросом "что это за локи и нужны ли они тут".
Безусловно.
И в данном контексте вопроса я бы уж делал так тогда:
- повесили лок
- прочитали расписание
- внесли правки
- сняли лок.
источник

HH

Human Human in Software Design/Architecture/Zen
Sergey Protko
ну то есть для начала стоит задаться вопросом "что это за локи и нужны ли они тут".
Да, у меня тут оч простой кейс и банальные локи идельное решение по профитам и тратам
источник

SP

Sergey Protko in Software Design/Architecture/Zen
I Scarab
Безусловно.
И в данном контексте вопроса я бы уж делал так тогда:
- повесили лок
- прочитали расписание
- внесли правки
- сняли лок.
или как делают адекватные люди - получили рассписание и его версию - внесли изменения с новой версией. Если версии не совпадают ловим ошибку и можем разруливать конфликт
источник

SP

Sergey Protko in Software Design/Architecture/Zen
что будет если клиент сделал лок и умер?
источник

HH

Human Human in Software Design/Architecture/Zen
Sergey Protko
что будет если клиент сделал лок и умер?
для этого
/schedule/continue-editing
аля пинг, мб правда и стоит сменить нейминг на более привычные

/schedule/lock
/schedule/
ping
/schedule/change
/schedule/no-change
источник

IS

I Scarab in Software Design/Architecture/Zen
Sergey Protko
или как делают адекватные люди - получили рассписание и его версию - внесли изменения с новой версией. Если версии не совпадают ловим ошибку и можем разруливать конфликт
Ну или так.
Если это допустимо с точки зрения бизнес-логики, потому что в этом случае должен быть "разруливатель конфликтов". Админ там, или начальник.
Мало ли, может быть просто нельзя показывать одному участнику изменения, сделанные другим.
источник