The problem is that this code is meant for performance and throws away
sequence values all the time. For example, it gets banks of 10 numbers
at a time and if not used are thrown away. Also, this runs in a
separate transaction to be non-blocking and has collision detection to
avoid mishaps, and if a collision is detected then the whole bank
attempted will be thrown away.
-David
On Apr 23, 2009, at 9:41 PM, BJ Freeman wrote:
My understanding was that he wanted to have an Id for medical records
since nothing else would use that sequence name it would be sequencel
staggerMax is set to 1 by default
public String getNextSeqId(String seqName) {
return this.getNextSeqId(seqName, 1);
}
now if you call
public String getNextSeqId(String seqName, long staggerMax) {
Long nextSeqLong = this.getNextSeqIdLong(seqName, staggerMax);
if (nextSeqLong == null) {
// NOTE: the getNextSeqIdLong method SHOULD throw a runtime
exception when no sequence value is found, which means we should never
see it get here
throw new IllegalArgumentException("Could not get next
sequenced ID for sequence name: " + seqName);
}
if
(UtilValidate.isNotEmpty(this.getDelegatorInfo().sequencedIdPrefix)) {
return this.getDelegatorInfo().sequencedIdPrefix +
nextSeqLong.toString();
} else {
return nextSeqLong.toString();
}
}
then it would be staggered. this is not defualt
or have I missed something.
David E Jones sent the following on 4/23/2009 8:21 PM:
When you look at the code you'll find it most certainly will skip, in
fact the default sequencing is designed for skipping to be okay in
order
to perform better.
If you want a more strict sequence then take a look at the invoiceId
generation in the createInvoice service. It is configurable and
some of
the options are meant to make things sequential. Be aware though that
because of the way transactions work by default (ie the transaction
isolation done), depending on the transaction isolation it can be
possible for skips to happen (ie because of phantom reads, etc), it's
just not as likely.
-David
On Apr 23, 2009, at 6:16 PM, BJ Freeman wrote:
suggest you look at the code to make you confident.
Muhammad Aamir sent the following on 4/23/2009 5:06 PM:
And sure it will never skip (as well as repeate)?
Thanks
On Fri, Apr 24, 2009 at 2:34 AM, BJ Freeman <[email protected]>
wrote:
look at the
https://demo.ofbiz.org/webtools/control/FindGeneric?entityName=SequenceValueItem&find=true&VIEW_SIZE=50&VIEW_INDEX=0
you can define your own sequence name
delegator.getNextSeqId uses this
Muhammad Aamir sent the following on 4/23/2009 4:18 PM:
I am working on an Outpatient Management module for a clinic.
I've to
extend
Person entity adding mrNbr (medical record number) field. The
field
should
keep incremented automatically and must not repeat and
preferably not
skip
as well.
Can anybody give me a clue on it (I tried in documentation
pages but
didn't
get any hint).
Also, is there any page where all entity field data types of
ofbiz
entity
engine are explained?
Thanks
Muhammad Aamir
--
BJ Freeman
http://www.businessesnetwork.com/automation
http://bjfreeman.elance.com
Systems Integrator.