Deyan,
I still can't figure out what you are trying to do. You mentioned
that countries have a requirement for no gaps in ID values, but which
ID values are you referring to? I know such requirements exist for
things like invoice IDs and even certain others like returns and
orders, and that is why code exists to take care of those cases.
Which other cases are you trying to address?
-David
On Jun 22, 2009, at 12:39 PM, Deyan Tsvetanov wrote:
well,
it's easier for me to just copy+paste the getNextInvoiceSeq service,
but i wanted to use a general sollution - less code to worry
about :) and it thist feature would be definitelly used, lot of
countries have the requirement for no gaps in ids.
also there is an requirement to re-start the counter on certain
periods. for example id should be year+sequence id.
in getNextInvoiceId that's implemented. i thought of suggesting this
feature as well, but theb i thought - it's pretty easy to make a
service and schedule it yearly... so that goes away. but the
SequenceBankSize prop i do think will be useful, so if you guyz
agree than i'll go ahead and implement it. i'll do it anyway - i
need this feature for a project :)
-- deyan
------- Original message -------
From: David E Jones <[email protected]>
To: [email protected]
Cc: [email protected]
Sent: 22.6.'09, 21:22
an interesting idea, although it makes me wonder... why not just
use the same technique that the getNextInvoiceId service uses?
-David
On Jun 22, 2009, at 9:01 AM, Deyan Tsvetanov wrote:
I recall my comment about the sequences thread safety - in case we
start
2 ofbiz instances against the same database :)
But the 1st issue remains - configuring the sequence bank size for
specific entities.
I suggest adding a new column in SequenceValueItem - bank_size.
If it is set to 0 than SequenceUtil will not create a SequenceBank
for
that entity but will read the current seq_id from the database
instead.
This is needed to ensure there will be no gaps in the sequence IDs
for
entities that do require no gaps because of legal requirements in
some
countries :)
-- deyan
On Mon, 2009-06-22 at 17:30 +0300, Deyan Tsvetanov wrote:
Hi again,
finally I used GenericDelegator.getNextSeqIdLong() when creating
entities.
It does increment the sequence by 1.
However today I noticed, that in the database - sequence_value_item
table - the seq_id value gets incremented by 10.
The reason is that the org.ofbiz.entity.util.SequenceUtil class
creates
a SequenceBank with the default value ot 10 IDs.
This is a MAJOR problem. It would appear if the server dies or
gets a
hard restart for some reason ( or even JVM error ) - we'll end
up with
gaps.
I couldn't find any API that forces the SequenceUtil to create a
SequnenceBank sized to 1 . Is there a way to do it ?
Also:
I couldn't find any info in the mail threads regarding this
sequencing
mechanism being thread safe.
Although I ran several threads requesting next ID from the same
sequence
- and it works OK - I am not quite convinced what would happen
if we
have 2 ofbiz instances running against the same database. Is this
setup
supported ?
Thanks in advance,
Deyan
On Sat, 2009-06-13 at 15:27 +0200, Jacques Le Roux wrote:
This has been already dicussed many times. You may find
information using MarMail or Nable, some threads are even very
detailled
Good luck
Jacques
From: "Deyan Tsvetanov" <[email protected]>
Exactly, I knew I've seen it somewhere :)
"Enforced Sequence (no gaps, per organization)"
Thanks guys,
I'll have a look at it.
Another question: do you have any idea how this enforced
sequence might
behave in case of two ofbiz servers - in a cluster or sharing a
database ?
My goal is to generate IDs without absolutely any gaps.
Another very important requirement is that the order of the
record's
CREATED_DATE should match the order of the IDs. It is not
possible to go
back and fill a gap.
Example:
A good example:
ID | CREATED_DATE
---------------------------------------------
1 | 1 June 9:00 AM
2 | 1 June 10:00 AM
A bad example:
ID | CREATED_DATE
---------------------------------------------
1 | 1 June 10:00 AM
2 | 1 June 9:00 AM
I already have an idea of a workaround,
but I'll investigate the enforced sequence first.
Thanks again,
Deyan
On Sat, 2009-06-13 at 05:42 -0700, BJ Freeman wrote:
Organization GL Settings >Available Internal
Organizations>Company>Setup>Accounting Preferences
David E Jones sent the following on 6/13/2009 5:15 AM:
Take a look at the party/organization accounting preferences
in the
Accounting Manager. If you're looking for this sort of
sequencing for
invoices, orders, etc then it is already supported.
-David
On Jun 13, 2009, at 5:44 AM, Deyan Tsvetanov wrote:
Hi list,
I'd like to use a custom ID generator - for instance rather
to start
from 10000 and increment by 10 I'd like to start from 0,
increment by 1
leaving no empty values and probably append some other rules
- like to
reset to 0 in the beginning of each year and prefix the
returned ID by
the current year.
Example:
200900001
200900002
....
200932110
....
201000001 <--- a new year starts.
I know it may sound pretty dumb, but the law makers in some
countries
are not so smart.
So - could somebody give me some hints - is it possible to
specify a
custom ID generator per field typed "id-ne" in the
entitymodel.xml ?
Thanks in advance,
Deyan