Menu

POC for Centralized ID management

Developers
2007-10-13
2013-03-08
  • Carlos Ruiz

    Carlos Ruiz - 2007-10-13

    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

     
    • Trifon (An ADempiere founder)

      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

       
    • Victor Perez Juarez

      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

       
      • Carlos Ruiz

        Carlos Ruiz - 2007-10-15

        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

         
    • Timo Kontro

      Timo Kontro - 2007-10-16

      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-

       
    • karsten-thiemann

      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

       
      • Carlos Ruiz

        Carlos Ruiz - 2007-10-23

        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

         
        • Trifon (An ADempiere founder)

          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

           
        • Victor Perez Juarez

          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

           
          • Carlos Ruiz

            Carlos Ruiz - 2007-10-23

            Hi Victor, instructions are on the first message of this same thread.

            Regards,

            Carlos Ruiz

             
    • Carlos Ruiz

      Carlos Ruiz - 2007-11-09

      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

       
      • Victor Perez Juarez

        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

         
    • Redhuan D. Oon

      Redhuan D. Oon - 2007-11-11

      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.

       
  • Marcos Medina

    Marcos Medina - 2010-10-11

    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.

     
  • Carlos Ruiz

    Carlos Ruiz - 2010-10-13

    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

     
  • Marcos Medina

    Marcos Medina - 2010-10-13

    Hola Carlos, podrias orientarme como comunicarme con ello mediante que via, que forma.

    Gracias de ante mano.

     
  • Carlos Ruiz

    Carlos Ruiz - 2010-10-13

    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

     

Log in to post a comment.