Hi guys, so - any comments on the suggested improvement ?
If no than probably I could open a jira enhancement issue and attach a patch ? -- deyan On Mon, 2009-06-22 at 22:46 +0300, Deyan Tsvetanov wrote: > Hi David, > > i am currently not referring only business organizations but government > organizations as well. Ridiculous but still organizations ( and > customers :) > > I'll give you an example: documents management - each incoming document > MUST get an incoming number which MUST be sequential with no gaps ( so > they can track the order the docs were received and make sure nobody > fakes the date, or at least this was the way it was done 100 years ago > when all the registers were on paper :) > > then you get outgoing documents - same thing. > > Then you get support ticket numbers: the organization must issue an > incoming ticket number to the ticket creator - either on paper, signed > and stamped, or via e-mail - digitally signed. The number has to has no > gaps - in case it gets argued or goes to court ... or whatever. > > I could quote hundreds of cases which no gaps are required by our lovely > government agencies and organizations. The country is called Bulgaria :) > > So my current project is related to bailiffs. These guys in general are > a private business, but most of their activities are defined by the law. > So the law tells them how they should number their cases - I can't argue > - i'm just a programmer :) Neither could they - they'll loose their > license if they don't comply. > > It's the same story with invoicing, it's the same story even with bus or > cinema tickets printing ! :) > > Did I manage to answer your question ? > > > > On Mon, 2009-06-22 at 13:02 -0600, David E Jones wrote: > > 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 > > >>>>>>>>> > > >>>>>>>> > > >>>>>>>> > > >>>>>>> > > >>>>>> > > >>>>> > > >>>> > > >>> > > >> > > > > > >
