1 - download the files on svn repository from the link above
2 - execute the script insert_sysconfig_parameters.sql
3 - Patch or replace the MSequence.java in $SRCADEMPIERE/trunk/base/src/org/compiere/model/MSequence.java
4 - open adempiere for system development
5 - check Tools -> Preferences -> Dictionary Maintenance (NOTE: info trace level shows a message when retrieving the ID from http)
6 - Open System Configurator window and change the "Search Key" of the record with name "DICT_COMMENTS" - this is used for the comment on reservation
7 - For the moment the DICT_WEBSITE, DICT_USER and DICT_PASSWORD are configured for testing - in future you must configure these parameters with your data
8 - Create the new records you need on system tables (i.e. new AD_Table, AD_Column, AD_FieldGroup, AD_Window, AD_Tab, AD_Field, etc.)
9 - If everything goes right the assigned ID's for your developments will be taken from the website cgi.
You can see the reservation log here: http://adempiere.globalqss.com/cgi-bin/showlog?AD_Column
Replace AD_Column with the tablename you want to see the log
________
NEW PROCEDURE FOR OFFICIAL DEVELOPMENT (IF APPROVED THIS POC):
If this POC can be made finished and official then simply we would need to register adempiere developers in the website for cgi usage.
When a developer needs to create dictionary records just need to change the configurator values and check tools preferences and voila. (The migration scripts are a different issue discussed in other thread)
________
PENDING TASKS:
This is just a POC.
I think for production level we would need:
1 - I'm not CGI expert - the cgi scripts has nothing thought about security - welcome any contribution on this matter
2 - I'm not a java expert on this matter - the implementation of MSequence.getNextID_HTTP could be bad, please if somebody expert on this matters can review the development with critic eyes
3 - We could install the cgi scripts officially in adempiere.com site
4 - The implementation of authentication is very bad - I think httpd authentication and maybe usage of https protocol will be better
5 - Maybe this implementation could be extended for companies with distributed developers (not for system ID's) - ideas about this are welcome
6 - We would need a way to allow developers assign/change his password
7 - The POC for reservation has a still not used parameter for alternate key (maybe hard to implement) - the idea is to avoid the conflict on alternate key (i.e. same AD_Element.Name) between two developers
________
Regards,
Carlos Ruiz
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
>I completed a POC using cgi-bin on http://adempiere.globalqss.com
>Sources and support scripts are here:
>http://adempiere.svn.sourceforge.net/viewvc/adempiere/contributions/stuff/POC_Central_System_IDs/
Good idea and implementation!
Kind regards,
Trifon
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I here have other idea, the idea is do not depend of sequences, the reason is if we think have more developer with you approach is we need the central control, this need are 365x24, also we need some concurrent control, so we always depend this.
Now but do not depend a central control and implement a concurrent control, my idea is each entity type have our sequences, so we need recreate all the primary key and use entity type + developer + primary key, this way the sequences never have not conflict.
to implement this i am think will add a new tab into type entity window with important 3 field (AD_Table_ID, AD_Sequence, AD_User).
when i ask to Mario Calderon how SAP solve this issue, your answered was SAP Define a sequence to developer.
this way we only need create a rule to solve element conflict.
I think this is a good idea/implementation. For the future we should change the whole id thing in adempiere and replace it with something like timo said but of course this needs many code changes.
Regards,
Karsten
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The process ran in 1 hour 36 minutes. During this time it assigned 16218 ID's from the website.
As this process is very sporadic I found this performance acceptable.
Do you think we must put this into trunk?
Do you prefer to install this on www.adempiere.com?
[ I don't have problem keeping adempiere.globalqss.com for this purpose - but I can't guarantee upload time - this is a dedicated server with admin attention 8x5 ]
Regards,
Carlos Ruiz
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
>Well, I did a stress test for this POC.
>
>I ran the PackIn for Libero.
>
>The process ran in 1 hour 36 minutes. During this time it assigned 16218 ID's from the website.
>
>As this process is very sporadic I found this performance acceptable.
>
>Do you think we must put this into trunk?
>Do you prefer to install this on http://www.adempiere.com?
You have my positive vote to integrate it in trunk.
[+1] with a comment that ID management can be avoided.
Kind regards,
Trifon
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Community, I implemented this Centralized ID management.
With Geoff from Idalica we set up a developer.adempiere.com site for this purpose.
This is just for usage of committers - but from interest for the whole community, the approach was implemented in order to help also with companies with distributed development projects.
Hola Carlos como estas, podrias ayudarme quisiera reservar unos ID para unas customizaciones en Adempiere quisiera saber como debo hacer para que estos aparescan en la pagina de http://www.adempiere.com/index.php/DevGuide_ID-Number_ranges ejemplo quisiera reservar por ejemplo
AD_Column -> 5400 5500
AD_Element -> 5400 5500
AD_EntityType -> 5400 5405
Gracias.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hola Marcos, actualmente no estoy administrando esos permisos, debes comunicarte con el Community Council del proyecto quienes están evaluando el tema de permisos a nivel general.
Saludos,
Carlos Ruiz
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Marcos, ellos monitorean los foros constantemente, seguramente te contestarán si lo ven necesario (aunque tengo entendido que aún no han definido el tema de permisos).
Por cierto, escribir en español en este foro en inglés viola las normas de comunicación establecidas, así que para español mejor pásate al foro Language-Spanish.
Saludos,
Carlos Ruiz
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi developers, now I'm bringing this idea to solve the second nightmare:
- system id management
My idea is to have a centralized ID management via a web server cgi-bin.
I completed a POC using cgi-bin on http://adempiere.globalqss.com
Sources and support scripts are here:
http://adempiere.svn.sourceforge.net/viewvc/adempiere/contributions/stuff/POC_Central_System_IDs/
________
HOW TO TEST:
If you want to test the POC, please:
1 - download the files on svn repository from the link above
2 - execute the script insert_sysconfig_parameters.sql
3 - Patch or replace the MSequence.java in $SRCADEMPIERE/trunk/base/src/org/compiere/model/MSequence.java
4 - open adempiere for system development
5 - check Tools -> Preferences -> Dictionary Maintenance (NOTE: info trace level shows a message when retrieving the ID from http)
6 - Open System Configurator window and change the "Search Key" of the record with name "DICT_COMMENTS" - this is used for the comment on reservation
7 - For the moment the DICT_WEBSITE, DICT_USER and DICT_PASSWORD are configured for testing - in future you must configure these parameters with your data
8 - Create the new records you need on system tables (i.e. new AD_Table, AD_Column, AD_FieldGroup, AD_Window, AD_Tab, AD_Field, etc.)
9 - If everything goes right the assigned ID's for your developments will be taken from the website cgi.
You can see the reservation log here:
http://adempiere.globalqss.com/cgi-bin/showlog?AD_Column
Replace AD_Column with the tablename you want to see the log
________
NEW PROCEDURE FOR OFFICIAL DEVELOPMENT (IF APPROVED THIS POC):
If this POC can be made finished and official then simply we would need to register adempiere developers in the website for cgi usage.
When a developer needs to create dictionary records just need to change the configurator values and check tools preferences and voila. (The migration scripts are a different issue discussed in other thread)
________
PENDING TASKS:
This is just a POC.
I think for production level we would need:
1 - I'm not CGI expert - the cgi scripts has nothing thought about security - welcome any contribution on this matter
2 - I'm not a java expert on this matter - the implementation of MSequence.getNextID_HTTP could be bad, please if somebody expert on this matters can review the development with critic eyes
3 - We could install the cgi scripts officially in adempiere.com site
4 - The implementation of authentication is very bad - I think httpd authentication and maybe usage of https protocol will be better
5 - Maybe this implementation could be extended for companies with distributed developers (not for system ID's) - ideas about this are welcome
6 - We would need a way to allow developers assign/change his password
7 - The POC for reservation has a still not used parameter for alternate key (maybe hard to implement) - the idea is to avoid the conflict on alternate key (i.e. same AD_Element.Name) between two developers
________
Regards,
Carlos Ruiz
Hi Carlos,
>I completed a POC using cgi-bin on http://adempiere.globalqss.com
>Sources and support scripts are here:
>http://adempiere.svn.sourceforge.net/viewvc/adempiere/contributions/stuff/POC_Central_System_IDs/
Good idea and implementation!
Kind regards,
Trifon
Hi Carlos!
I here have other idea, the idea is do not depend of sequences, the reason is if we think have more developer with you approach is we need the central control, this need are 365x24, also we need some concurrent control, so we always depend this.
Now but do not depend a central control and implement a concurrent control, my idea is each entity type have our sequences, so we need recreate all the primary key and use entity type + developer + primary key, this way the sequences never have not conflict.
to implement this i am think will add a new tab into type entity window with important 3 field (AD_Table_ID, AD_Sequence, AD_User).
when i ask to Mario Calderon how SAP solve this issue, your answered was SAP Define a sequence to developer.
this way we only need create a rule to solve element conflict.
http://sourceforge.net/tracker/?func=detail&atid=879335&aid=1813916&group_id=176962
What do you think?
kind regards
Victor Perez
www.e-evolution.com
Hi Victor, already answered there.
As Trifon pointed in another post defining a sequence for each developer implies really big changes in Adempiere.
> we need the central control
The POC solves this
> this need are 365x24
It depends on the website availability, normally 365x24
> also we need some concurrent control
Also the POC is solving this.
Have you reviewed/tested this idea?
Regards,
Carlos Ruiz
Sounds overly complicated.
How about giving each element name like: com.somecompany.thing.great.feature
And taking hash out of that name which leads to fairly unique integer.
-kontro-
Hi Carlos,
I think this is a good idea/implementation. For the future we should change the whole id thing in adempiere and replace it with something like timo said but of course this needs many code changes.
Regards,
Karsten
Well, I did a stress test for this POC.
I ran the PackIn for Libero.
The process ran in 1 hour 36 minutes. During this time it assigned 16218 ID's from the website.
As this process is very sporadic I found this performance acceptable.
Do you think we must put this into trunk?
Do you prefer to install this on www.adempiere.com?
[ I don't have problem keeping adempiere.globalqss.com for this purpose - but I can't guarantee upload time - this is a dedicated server with admin attention 8x5 ]
Regards,
Carlos Ruiz
Hi Carlos,
>Well, I did a stress test for this POC.
>
>I ran the PackIn for Libero.
>
>The process ran in 1 hour 36 minutes. During this time it assigned 16218 ID's from the website.
>
>As this process is very sporadic I found this performance acceptable.
>
>Do you think we must put this into trunk?
>Do you prefer to install this on http://www.adempiere.com?
You have my positive vote to integrate it in trunk.
[+1] with a comment that ID management can be avoided.
Kind regards,
Trifon
Hi Carlos!
I only have what is way it work, what are the step a development will need to do?
Please can you give small explication, what is way that a development will use POC ?
Kind regards
Victor Perez
www.e-evolution.com
Hi Victor, instructions are on the first message of this same thread.
Regards,
Carlos Ruiz
Hi Community, I implemented this Centralized ID management.
With Geoff from Idalica we set up a developer.adempiere.com site for this purpose.
This is just for usage of committers - but from interest for the whole community, the approach was implemented in order to help also with companies with distributed development projects.
Explanation of usage here:
http://adempiere.com/wiki/index.php/Centralized_ID_Management
Regards,
Carlos Ruiz
Carlos, This is wonderful and with wiki now is very clear the way to implement , I will setup my
environment to reserve Libero ID
Thank a lot.
kind regards
Victor Perez
www.e-evolution.com
From the peer review here, we can assume that this is another notable contribution.
For adempiere.org page reference:
Author: Carlos Ruiz
Contribution: ID Manager, or whatever name the author so prefers.
Hola Carlos como estas, podrias ayudarme quisiera reservar unos ID para unas customizaciones en Adempiere quisiera saber como debo hacer para que estos aparescan en la pagina de http://www.adempiere.com/index.php/DevGuide_ID-Number_ranges ejemplo quisiera reservar por ejemplo
AD_Column -> 5400 5500
AD_Element -> 5400 5500
AD_EntityType -> 5400 5405
Gracias.
Hola Marcos, actualmente no estoy administrando esos permisos, debes comunicarte con el Community Council del proyecto quienes están evaluando el tema de permisos a nivel general.
Saludos,
Carlos Ruiz
Hola Carlos, podrias orientarme como comunicarme con ello mediante que via, que forma.
Gracias de ante mano.
Marcos, ellos monitorean los foros constantemente, seguramente te contestarán si lo ven necesario (aunque tengo entendido que aún no han definido el tema de permisos).
Por cierto, escribir en español en este foro en inglés viola las normas de comunicación establecidas, así que para español mejor pásate al foro Language-Spanish.
Saludos,
Carlos Ruiz