ID Management

Aus FreiBier
Wechseln zu: Navigation, Suche

Every thing in the ADempiere Database has it's own ID. If you enter something into the Application Dictionary it may be the case that someone on the other side of the world uses in the same second the same ID. If you want to get your work together at one point it will clash. :-(

For this problem you use the Centralized ID Management.

But when should one switch it on and when switch it off? Everything you do is potentially being released t othe public so what to do? I talked about this with Red1 and CarlosRuiz and I will document it here:

 Jan 22 17:47:25 <red1>	and CarlosRuiz told me earlier at breakfast how to solve your IDs apetite for sex
 Jan 22 17:47:35 <red1>	i know one million is not enough
 Jan 22 17:47:46 <red1>	2Pack is the way to go (if Carlos has not told u)
 Jan 22 17:47:50 <red1>	has he?
 Jan 22 17:47:59 <red1>	and it solved your IDs arrangement elegantly
 Jan 22 17:48:38 <tbayen__>	You told me this works only in OSGI idempiere.
 Jan 22 17:49:27 <red1>	no.. he is not refering to that
 Jan 22 17:49:34 <red1>	he meant about today's work u doing
 Jan 22 17:49:59 <red1>	see? we are discussing your work.. so your sponsorship is working for you in return
 Jan 22 17:50:14 <red1>	i told carlos at break fast that u are right in your reply to me
 Jan 22 17:50:27 <red1>	that u are only one working on fetching IDs and trying to build a vertical to contribute
 Jan 22 17:50:41 <red1>	so Carlos told me that u can do that without centralised IDs turned on
 Jan 22 17:50:58 <red1>	and then when you are done, you export out as 2Pack, and reimport or PackIn back
 Jan 22 17:51:05 <red1>	but with the Centralised ID turned on
 Jan 22 17:51:05 <tbayen__>	Do you mean it works because of the UUIDs that 2pack uses?
 Jan 22 17:51:20 <red1>	so that way the IDs will be regenerated anew
 Jan 22 17:51:31 <red1>	No, what he meant is that the present 2Pack does that
 Jan 22 17:51:44 <red1>	think about what i said above
 Jan 22 17:51:59 <CarlosRuiz>	first was "off"
 Jan 22 17:52:16 <red1>	its just PackOut / PackIn
 Jan 22 17:52:28 <tbayen__>	So 2pack in 361 does not use my IDs but uses his own system?
 Jan 22 17:52:32 <red1>	PackOut (nromal Ids) / PackIn (turned on IDs)
 Jan 22 17:52:33 <CarlosRuiz>	first do the usual configuration work with official IDs off / create tables windows, etc
 Jan 22 17:52:43 <CarlosRuiz>	try to tag all of your stuff with same entitytype can make things easier
 Jan 22 17:52:50 <CarlosRuiz>	you can create also your own entitytype
 Jan 22 17:53:03 <tbayen__>	Yes, I have my own EntityType
 Jan 22 17:53:05 <CarlosRuiz>	your tables preferable must have a prefix with 3 or 4 letters
 Jan 22 17:53:19 <tbayen__>	Yes, I have a prefix of three letters
 Jan 22 17:53:23 <red1>	i think first u need to forget about centralised IDs, till the end of your module is done
 Jan 22 17:53:24 <CarlosRuiz>	and when you are comfortable enough with the quality of the work (tables, windows, etc)
 Jan 22 17:53:32 <CarlosRuiz>	then you export all with a packout
 Jan 22 17:53:41 <CarlosRuiz>	and reimport in another machine for testings
 Jan 22 17:53:50 <CarlosRuiz>	when you're comfortable with the packin tests
 Jan 22 17:54:01 <CarlosRuiz>	then you import in a clean database with official IDs on
 Jan 22 17:54:07 <CarlosRuiz>	that's the way I use
 Jan 22 17:54:10 <CarlosRuiz>	not the only
 Jan 22 17:54:54 <tbayen__>	What IDs does packin/out use in the XML files?
 Jan 22 17:55:07 <CarlosRuiz>	that's because initially I start making some proofs of concept / so commonly my last tables are very different from the first  :-)
 Jan 22 17:55:35 <CarlosRuiz>	packout doesn't put IDs if they are not official
 Jan 22 17:55:48 <CarlosRuiz>	but if there are official IDs then are included in the XML and used
 Jan 22 17:56:03 <CarlosRuiz>	so when you packout you use your own ids
 Jan 22 17:56:28 <CarlosRuiz>	and packout won't include IDs, just identifiers
 Jan 22 17:56:49 <tbayen__>	But packout need some IDs to connect all the packed entities together. How does it work? With these identifiers?
 Jan 22 17:56:51 <CarlosRuiz>	when you packin in a clean db with official IDs enabled / then it will create your entries with official IDs and you log the migration script
 Jan 22 17:57:08 <CarlosRuiz>	yes / packout-packin uses identifiers
 Jan 22 17:57:30 <CarlosRuiz>	there are problems with some tables (but very few) that doesn't have a unique identifier
 Jan 22 17:58:08 <tbayen__>	Thanks a lot. I talked about this with Red1 when he was here but I think he did not understand my point at this time (it was "lost in translation" I think).
 Jan 22 17:58:28 <red1>	tbayen__: the IDs u used are generated all the time.. Centralised IDs only ensure u do not clash with others
 Jan 22 17:58:52 <red1>	so at first what Carlos is askig u to do is to have normal IDs that will clash
 Jan 22 17:59:01 <CarlosRuiz>	you arrived to a real conclusion / is very hard to contribute to adempiere because then you need to isolate things
 Jan 22 17:59:03 <red1>	reimporting will always generate new IDs
 Jan 22 17:59:17 <red1>	as Carlos asked u to apply it on _new_ instance.
 Jan 22 17:59:31 <CarlosRuiz>	so, that's the idea that hengsin is trying to solve with UUIDs / make it easier
 Jan 22 18:00:06 <tbayen__>	My thought was that potentially everything I use may clash later with someone else. Now I understand the way to first do my work and later grab IDs for that.
Meine Werkzeuge