2010-07-13 3 views
3

청구 시스템을 구축 중입니다. 시스템은 고객에 대한 월별 인보이스를 생성해야합니다.송장을 생성하는 프로그램을 작성하는 표준 방법은 무엇입니까?

내가 지금하고있는 일은 For 루프를 사용하여 모든 클라이언트의 이전 인보이스를 확인하고 클라이언트에 대한 송장 생성 시간을 결정하는 것입니다.

데이터베이스에 많은 클라이언트가있는 경우 그렇게하는 것이 매우 어려울 수 있다고 생각합니다.

송장을 생성하는 표준 방법은 무엇입니까? 송장을 생성 할 때 클라이언트의 다음 송장 날짜를 기록하고 특정 클라이언트 만 확인하는 cron 작업을 만들 수 있습니까?

감사합니다.

+3

귀하의 질문을 읽으면서, 귀하가이 일에 대해 자격이 없다고 말할 수 있습니다. 비즈니스 프로세스와 애플리케이션 프로그래밍 모두에서 배경을 놓치고있는 것처럼 보입니다. 이것은 SO에 관한 몇 가지 질문으로 패치 할 수있는 것 이상입니다. –

+2

데이터베이스 101 : 데이터베이스에서 많은 양의 데이터를 처리하기 위해 루프를 사용하지 마십시오. SELECT/INSERT/UPDATE/DELETE가 그 것이다. –

+0

@Marcelo Cantos 최대 절전 모드를 사용하여 데이터를 가져 와서 로컬 머신의 반환 데이터를 조작하기 위해 루프를 사용합니다. – leon

답변

1

송장을 생성하는 표준 방법은 무엇입니까? 송장을 생성 할 때 클라이언트의 다음 송장 날짜를 기록하고 특정 클라이언트 만 확인하는 cron 작업을 만들 수 있습니까?

표준 방법은 없습니다. 그러나이 작업은 실제로 배치 작업의 일반적인 후보입니다. 같은 시간 또는 매일 모든 고객에게 비용을 청구하고 일부 날짜 기준에 따라 청구 가능한 고객 만 선택하는 경우 월말에 실행하십시오. 각 클라이언트에 대해 수행해야 할 작업을 수행하십시오. 데이터의 크기에 따라 JPA는 적절하지 않을 수도 있습니다 (또는 Hibernate의 StatelessSession을 고려하거나 잊어 버릴 수도 있습니다). 스케줄러의 경우

, 난 등을 제어-M, 달러-U, TNG 워크로드와 같은 대부분 기업 석영과 같은 스케줄러 또는 더 큰 전용 솔루션

난 강력하게 하나의 작업을 생성 할 조언을 봤어요 클라이언트 당. 이것은 실제로 좋은 해결책이 아닙니다 (지옥 관리, 규모 조정 등).

+0

답장을 보내 주셔서 감사합니다 – leon

3

당신은 데이터베이스를 언급합니다. 왜 을 사용합니까?

"이전 invoide의 날짜"열에 색인을 붙여 WHERE 절을 추가하여 한 달 전에 마지막 인보이스를 보낸 클라이언트 만 반환하십시오.

+0

답장을 보내 주셔서 감사합니다. – leon

0

leon, 나는 실제로 표준 방법이 있는지 확실하지 않습니다. 각 기업 문화는 프로세스가 자신의 요구 사항에 맞게 최적으로 실행되는 방법을 어느 정도 정의 할 것입니다. 온 디맨드 프로세싱의 극단적 인 작업과 인보이스 발행을 일괄 처리로 실행하는 애플리케이션을 찾을 수 있습니다. 일반적으로 두 가지를 모두 수용 할 수 있도록 인터페이스를 구축하는 것이 좋습니다. 당신은 또한 웹 서비스 등을 통해 귀하의 API를 요구하는 어떤 시점에서 제 3 자의 가능성을 고려해야 할 수도 있습니다. (비용 절감을 위해, 해당 회사는 실제로 청구서를 발행하기 위해 국 서비스를 사용할 수 있습니다. 손 경험). 데이터베이스 구조는 어쨌든

.. 프로세스 중 하나가 등 등 실패, 매우 강력하고 대체 점을 많이 가지고해야합니다 - 토론 ... :)

+0

답장을 보내 주셔서 감사합니다. – leon

관련 문제