Каков стандартный способ написания программы для создания счетов-фактур?

Я строю биллинговую систему. Система должна генерировать ежемесячные счета для клиентов.

Сейчас я использую цикл For, чтобы проверить всех клиентов, их предыдущие счета-фактуры, и решить, пришло ли время создавать счет-фактуру для клиента.

Если в базе данных огромное количество клиентов, я думаю, это будет очень сложно.

Каков стандартный способ выставления счетов? Можно ли создавать задания cron, которые записывают дату следующего счета-фактуры клиента и проверяют конкретного клиента только тогда, когда пришло время создавать счет-фактуру.

Бесконечно благодарен


person leon    schedule 13.07.2010    source источник
comment
Прочитав ваш вопрос, я бы сказал, что вы далеки от квалификации для этого. Кажется, вам не хватает знаний как о бизнес-процессах, так и о разработке приложений. Скорее всего, это больше, чем можно исправить несколькими вопросами по SO.   -  person Carl Smotricz    schedule 13.07.2010
comment
База данных 101: не используйте циклы for для обработки больших объемов данных в базе данных. Вот для чего нужны SELECT / INSERT / UPDATE / DELETE.   -  person Marcelo Cantos    schedule 13.07.2010
comment
@Marcelo Cantos Я использую спящий режим для извлечения данных и использую цикл for для управления возвращаемыми данными на локальном компьютере.   -  person leon    schedule 13.07.2010
comment
Если внутри цикла for не происходит чего-то, что нельзя выразить как логику базы данных, вы не захотите использовать такое ужасно неэффективное решение. Как можно чаще используйте операции на основе наборов, и пока вы в них, выгружайте Hibernate (см. здесь, где представлена ​​длинная версия моего обоснования; также см. ответ @ Evgeny на тот же вопрос для более конкретной критики NHibernate, которая также применима к Hibernate).   -  person Marcelo Cantos    schedule 14.07.2010
comment
Интересно, что остроносый босс Леона не знает, как это сделать, как и Леон в этом отношении, но они оба знают, на каком языке должно быть написано программное обеспечение.   -  person user94154    schedule 14.07.2010


Ответы (3)


Каков стандартный способ выставления счетов? Можно ли создавать задания cron, которые записывают дату следующего счета-фактуры клиента и проверяют конкретного клиента только тогда, когда пришло время создавать счет-фактуру.

Стандартного способа нет. Но эта задача действительно типичный кандидат на пакетную работу. Либо запустите его в конце месяца, если вы выставляете счет всем клиентам одновременно, либо ежедневно и выбирайте только тех клиентов, которым выставлен счет на основе некоторых критериев даты. Для каждого клиента делайте то, что нужно. В зависимости от размера ваших данных JPA может не подходить (или, возможно, рассмотреть Hibernate StatelessSession или даже забыть о нем).

Что касается планировщика, я чаще всего видел корпоративный планировщик, такой как Quartz, или даже более крупные специализированные решения, такие как Control-M, Dollar-U, TNG Workload и т. Д.

Я настоятельно рекомендую НЕ создавать по одной вакансии для каждого клиента. Это действительно не лучшее решение (ад администрировать, не масштабируется и т. Д.).

person Pascal Thivent    schedule 13.07.2010

Вы упоминаете базу данных. Почему бы вам не использовать его?

Поместите индекс в столбец «дата предыдущего счета», добавьте предложение WHERE, чтобы возвращались только клиенты, последний счет которых был отправлен более месяца назад.

person Michael Borgwardt    schedule 13.07.2010

Леон, я не уверен, существует ли на самом деле стандартный способ как таковой. культура каждой компании в определенной степени определяет, как лучше всего управлять процессом в соответствии с их требованиями. вы найдете некоторые приложения, которые выполняют как крайнюю часть обработки по запросу, так и другие, которые запускают выставление счетов как пакетный процесс. в общем, неплохо создавать свои интерфейсы, вмещающие и то, и другое. вам также может потребоваться рассмотреть возможность того, что в какой-то момент третье лицо потребует ваш API через веб-сервис и т. д. (для экономии затрат соответствующая компания может фактически использовать службу бюро для `` публикации '' счетов - я знаю это с 1-го ручной опыт). Структура вашей базы данных также должна быть достаточно надежной и иметь множество резервных точек на случай сбоя любого из процессов и т. Д. И т. Д.

В любом случае - дебаты ... :)

Джим

person jim tollan    schedule 13.07.2010