4

我正在建立一个计费系统。系统需要为客户生成月度发票。

我现在正在做的是使用 For 循环来检查所有客户他们以前的发票,并决定是否是时候为客户生成发票了。

如果数据库中有大量客户端,我认为这样做可能会非常繁重。

生成发票的标准方法是什么?是否可以制作记录客户下一个发票日期的 cron 作业,并且只在需要生成发票时检查特定客户。

太感谢了

4

3 回答 3

3

你提到了一个数据库。你为什么不使用它?

在“上一个无效日期”列上放置一个索引,添加一个 WHERE 子句以仅返回最后一张发票是在一个多月前发送的客户。

于 2010-07-13T14:19:56.730 回答
2

生成发票的标准方法是什么?是否可以制作记录客户下一个发票日期的 cron 作业,并且只在需要生成发票时检查特定客户。

没有标准的方法。但这个任务确实是批处理作业的典型候选。如果您在同一时间或每天对所有客户进行计费并仅选择根据某些日期标准计费的客户,请在月底运行它。对于每个客户,做你必须做的。根据数据的大小,JPA 可能不合适(或者可能考虑 HibernateStatelessSession甚至忘记它)。

对于调度程序部分,我经常看到像 Quartz 这样的企业调度程序,或者甚至更大的专用解决方案,如 Control-M、Dollar-U、TNG Workload 等。

我强烈建议不要为每个客户创造一份工作。这确实不是一个好的解决方案(管理地狱,无法扩展等)。

于 2010-07-13T14:52:18.710 回答
0

莱昂,我不确定是否真的有这样的标准方式。每个公司文化都会在一定程度上定义如何最好地运行流程以满足他们的要求。您会发现一些应用程序既可以进行按需处理的极端处理,也可以将其他一些应用程序作为批处理运行发票。一般来说,构建你的接口来适应两者都很好。您可能还必须考虑第 3 方在某些时候通过网络服务等要求您的 API 的可能性。(为了节省成本,有问题的公司实际上可能使用局服务来“发布”发票 - 我从一开始就知道这一点手经验)。如果任何进程失败等,您的数据库结构还必须相当健壮并具有大量后备点。

无论如何-辩论... :)

吉姆

于 2010-07-13T14:21:19.290 回答