Populate workspace from code? - Forum - Roundtable Community - Progress Community
 Forum

Populate workspace from code?

  • I am looking for an API to populate a workspace from code. The rtb_api.p is not much help. I also created some API's myself a long time ago. But to be honest I am not sure where to start anymore. Thanks. [/mls01/rtb/rtb101c/gui/rtb/p] grep ^PROC rtb_api.p PROCEDURE add_task : PROCEDURE assign_object : PROCEDURE check_in_object : PROCEDURE check_object_integrity : PROCEDURE check_out_object : PROCEDURE compile_object : PROCEDURE complete_task : PROCEDURE create_object : PROCEDURE create_variant : PROCEDURE create_xrefs : PROCEDURE delete_object : PROCEDURE extract_object : PROCEDURE login : PROCEDURE logout : PROCEDURE selective_compile : PROCEDURE set_paths : PROCEDURE set_session_id : PROCEDURE set_task : PROCEDURE set_workspace_id : PROCEDURE unlock_object : [/mls01/rtb/rtb101c/gui/rtb/p] grep ^PROC rtb_api.i PROCEDURE get_object_share_status: PROCEDURE set_object_share_status: PROCEDURE get_object_version_note: PROCEDURE set_object_version_note: PROCEDURE check_available_task: PROCEDURE get_task_directory: PROCEDURE get_object_absolute_pathnames: PROCEDURE get_object_version: PROCEDURE get_object_version_task: PROCEDURE get_object_update_status: PROCEDURE get_object_object_status: PROCEDURE check_available_object: PROCEDURE get_workspace_tasks: PROCEDURE get_task_objects: PROCEDURE get_object_versions: PROCEDURE get_object_product_module: PROCEDURE set_wspace_id : PROCEDURE check_available_object_alias: PROCEDURE get_object_version_description: PROCEDURE set_object_version_description: PROCEDURE get_object_details: PROCEDURE get_object_version_details: [/mls01/rtb/rtb101c/gui/rtb/p]
  • Why are my posts always on one line after posting?

  • Which RTB version are you using ? the path seems to indicate rtb 10.1c.

    In a recent RTB version I'd check if the automation toolkit can do it.

    AFAIK you need to

    for each rtb_object where wspace-id = myworkspace:

    run rtb_nams to get the paths.

    create the directories , not sure if it's required but it's in my code.

    run rtb_extract_object to extract.

    end.

    Don't know how to attach code here so I'll mail something .

  • Yes, we are still using 10.1C... Thanks, but I was hoping to directly call the procedure that is behind the menu Workspace, Workspace Maintenance, <select workspace>, File, Populate Workspace.

  • It is probably ./rtb/w/rtb_popws.w but it is encrypted so I have to figure out the i/o parameters. Any ideas? Probably I need the wspace-id...

  • If you don't mind being on an uncharted, undocumented path , r-code is partially human readable. You can see the signatures of routines.

  • Thanks, probably need to run it persistent and run the populate_workspace procedure...

    Edit: no that is not true. probably can run it directly...

    [/mls01/rtb/rtb101c/gui] strings ./rtb/w/rtb_popws.r  | head -10

    29E000D9utf-8

    MAIN rtb\w\rtb_popws.w,,INPUT Pwspace-id CHARACTER

    PROCEDURE RTB_xref_generator,,

    PROCEDURE populate_workspace,,

    PROCEDURE initializeObject,,

    PROCEDURE enable_UI,,

    PROCEDURE disable_UI,,

    PROCEDURE adm-create-objects,,

    PROCEDURE start-super-proc,,INPUT pcProcName CHARACTER

    PROCEDURE adm-clone-props,,

    [/mls01/rtb/rtb101c/gui]

  • It is the correct functionality but unfortunately this has a GUI in front of it. :-(

  •   DEFINE VARIABLE Merror   AS CHARACTER NO-UNDO.
      DEFINE VARIABLE MhStatus AS HANDLE    NO-UNDO.
      DEFINE VARIABLE Mok      AS LOGICAL   NO-UNDO.
    
      MESSAGE SUBSTITUTE("Populate module(s) '&1' in workspace '&2'?",Mmodule,Pwspace-id)
        VIEW-AS ALERT-BOX WARNING
        BUTTONS YES-NO
        TITLE Malert-title
        UPDATE Mok.
    
      IF Mok THEN DO:
        SESSION:SET-WAIT-STATE("GENERAL":U).
        
        /*
         Display status window
        */
        IF CONNECTED("rtb":U) THEN DO:
          RUN hideObject IN SOURCE-PROCEDURE.
          MhStatus = DYNAMIC-FUNCTION('fnRtbRunWindowOnce':U,"rtb/w/rtb_procstat.w").
          RUN rtb_set_window_title IN MhStatus (INPUT Malert-title).
        END.
    
        SESSION:SET-WAIT-STATE("GENERAL":U).
        Merror = DYNAMIC-FUNCTION('fnRtbPopulateWorkspace':U IN h_rtb_u_ws,Pwspace-id,Mmodule).
        SESSION:SET-WAIT-STATE("").
    
        IF VALID-HANDLE(MhStatus) THEN DO:
          RUN destroyObject IN MhStatus.
          MhStatus = ?.
          RUN viewObject IN SOURCE-PROCEDURE.
        END.
    
        IF Merror <> "" THEN
          MESSAGE Merror
            VIEW-AS ALERT-BOX ERROR
            TITLE Malert-title.
        ELSE
          MESSAGE SUBSTITUTE("Module '&1' in workspace '&2' successfully populated.",Mmodule,Pwspace-id)
            VIEW-AS ALERT-BOX INFO
            TITLE Malert-title.
      END. /* Mok */
    
      RETURN.
    

    Jeff Ledbetter
    Product Architect | Roundtable Software

  • As long as Roundtable is running, you should just be able to execute this code as the Workspace procedure library is running super to the session.

    Jeff Ledbetter
    Product Architect | Roundtable Software

  • Thanks!

  • Follow-up question. Is it also possible to populate to a different directory other than the workspace directory?

  • Hi Simon.  No, not from the Populate Workspace routine.

    You could create a Deployment which lets your specify the output directory. The Automation Toolkit has an API to help with Deployments.

    Jeff Ledbetter
    Product Architect | Roundtable Software

  • Hi Simon.  No, not from the Populate Workspace routine.

    You could create a Deployment which lets your specify the output directory. The Automation Toolkit has an API to help with Deployments.

    Jeff Ledbetter
    Product Architect | Roundtable Software