How the System Builds Full Server and Client Package from the Web with Net Change Objects (Release 9.2.9)

This section provides an overview of how the JD Edwards EnterpriseOne system builds a full server and client package from the web with net change objects.

  1. Web: Server Package UBE (R9621S) initiates the server package build.
  2. Web: UBE (R9621S) calls the BSFN program B9600196 on the Enterprise Server which calls into the package kernel code.
  3. Web Enterprise Server: The system gets the primary server name and sends a jdenet message to the primary server to start the package.
  4. Web Enterprise Server: The system does not wait for a response but goes into a continuous loop checking the status of the build, F96021-> bhbldsts, until it is finished.
  5. Primary Server: Receives the message to start the package build.
  6. Primary Server: Initializes the Primary Server.
  7. Checks if the Net Changed Objects Mode. Opens F9603 and checks F9603->phpkg4=1. If set to 1, sets flag to Net Changed Objects Mode.
  8. Primary Server: Creates the package build directories on the Primary Enterprise server.
  9. Primary Enterprise Server: If client populated the F98780R/F98780H, then the system checks the specs F98710 (package name) for the object name F98780R. If these specs are not there, then the system gets the specs from the central objects path code and inserts them into the live specs tables, F98710, F98711, F98712, and F98713.
  10. Primary Server: Checks the F00942T->emdbsrcflg value for 1. If the value is 0 or blank, the objects have not been inserted into the F98780R table. If the value is 1, then the objects have been inserted.
  11. Primary Server: Checks the F00942T-emenvfu2 value for 1. If the value is 0 or blank, then the include and source files in the F98780R/R98780H have not been converted to 64-bit. If the value is 1, then the include and source files have been converted to include64 and source64 and uploaded into the F98780R/ R98780H tables.
  12. Primary Server: If the files need to be inserted into the repository, the system sends a jdenet message to the Deployment Server to initialize.
  13. Deployment Server: Initializes the Deployment Server and creates the package directories.
  14. Primary Server: Sends a message to the Deployment Server to insert the records into the repository and waits for it to finish.
  15. Deployment Server: Receives the message from the primary server to insert records into the repository.
  16. Deployment Server: Inserts all the records into the repository once. If F00942T -> emdbsrcflg value is 0 or blank and the F00942T-> emenvfu2 value is 0 or blank, then the system sets the F00942T -> emdbsrcflg=2 for processing.

    The system does a fetch from F9860 for all objects that are not system code 88. The system checks if there is a file associated with the object on the Deployment Server pathcode. If there are files then the system creates a par file for the object and insert the record with the par file into the F98780R/F98780H. If the foundation selected for the package is 32-bit, then for business functions and tables, the par file will only include the source and include files. The system sets the object record in the F9860->sigtffu =1 to indicate there are files for this object.

    When the process is complete, the system sets the F00942T->embdsrcflg=1 for completion. It leaves the F00942T-> emenvfu2 as 0 or blank as this indicates that the conversion of the include and source files into 64-bit files is not done. If the foundation selected for the package is 64-bit, then for business functions and tables, the system converts the include and source into 64-bit files and places them in temporary include64 and source64 directories. The system creates the par file with all four directories and inserts the record into the F98780R/F98780H.

    The system sets the object record in the F9860->sigtffu=1 to indicate there are files for this object. When the process is complete, the system sets the F00942T>embdsrcflg=1 for completion. It also sets F00942T-> emenvfu2 =1, which indicates that the conversion of the include and source files into 64-bit files is done.

  17. Deployment Server (Converts 32-bit to 64-bit): This is a one-time process. If F00942T -> emdbsrcflg value is 1, the F00942T-> emenvfu2 value is 0 or blank, and the foundation selected for the package is 64-bit, then the system sets F00942T -> emenvfu2 =2 for processing. The system does a fetch from F9860 for all objects that have F9860-> sigtffu=1 and that are not APPL, GT, or DSTR, and not system code 88. For each fetch, the system retrieves the par file from the F98780R, expands the par file, converts the include and source files to 64-bit and places them in temporary include64 and source64 directories. The system creates the par file with all four directories and inserts it into the repository. When complete, the system sets the F00942T-> emenvfu2 =1 to indicate the files are converted to 64-bit.
  18. Deployment Server: When finished, returns to the Primary Server.
  19. Primary Enterprise Server: Initializes all other servers. Sends message to each server to initialize.
  20. Primary Enterprise Server: Opens the F96511 to get active package for the primary server using port, server, and pathcode.
  21. Primary Enterprise Server: Opens F96215 and from active package, gets the last date and time stamp of the active package.
  22. Primary Enterprise Server: Opens F96225 of active package, date, time, and pkgOper=04. For all the selected records with error, the system inserts objects into F96225 of the new package: date, time, pkgOper=04, object name, and status of 01/not built.
  23. Primary Enterprise Server: Opens F9861 and queries on all records with date greater than or equal to the date the active package was built. For each record which is business function, table, UBE with .h file, and business view with .h, the system inserts object into F96225 with new package: date, time, pkgOper=04, object name, and status of 01/not built. These are all the net changed objects.
  24. Primary Enterprise Server: Sends a message to the Deployment Server to initialize the Deployment Server.
  25. Deployment Server: Sets Net Change Objects mode flag.
  26. Deployment Server: Retrieves name of active package and creates the directories on the Deployment Server if not already created.
  27. Deployment Server: Builds the list of objects from the F96225 table.
  28. Deployment Server: If Business Services is selected, the system retrieves the Business Service files from the repository.
  29. Deployment Server: If Business Services is selected, the system starts the Business Service thread.
  30. Deployment Server: Starts to copy the files from the active package to the new package: bin64, lib64, obj, include, source, include64, source 64, and work directories.
  31. Primary Enterprise Server: Builds the list of objects from the F96225 table.
  32. Primary Enterprise Server: Windows/UNIX builds specs on a separate thread (IBM i will not build on thread) on the Primary Enterprise Server from central objects, placing the results in the package's spec tables, <table name>_<package name> (for example, F98710_DV920FA) in the database. There are 17 tables that are copied from one location to the other. Also, the manifest table is created which holds the name of the package. The Primary Enterprise Server creates the tables F989999 and F989999 in Central Objects location with the name F989999_<package name> and F999999_<package name>.
  33. Primary Enterprise Server: Sends message to other servers to begin the copy of the files from the active package to the new package. The files to copy are bin64, lib64, object, include, and source.
  34. Primary Enterprise Server: Starts to copy the files from the active package to the new packages. The files to copy are bin64, lib64, object, include, and source.
  35. Primary Enterprise Server: From the list of objects in F96225, retrieves the files for the business function, table, UBE with files, and business view with file.

    The system opens the F98780R and retrieves each F96225 object from F98780R which inserts the files into the Primary Enterprise Server directories, checkin\source (.c files), checkin\source64 (.c files), (.h files), and checkin\include64 (.h files).

    The system validates each BSFN, TBLE, UBE, and BSVW if there is a record in the F98780R table, the record has a par file and if the .h, and/or .c file exist in checkin\source (.c files), checkin\source64 (.c files), checkin\include (.h files), and checkin\include64 (.h files).

  36. Primary Enterprise Server: If the validation fails and the Repair Repository flag is set, then the system inserts a record into the F96225 table with package name, pathcode, primary server name, object name, version = “REPAIR”, and operation = “11”.

  37. Primary Enterprise Server: If the Repair Repository flag is set and there are REPAIR records inserted in F96225, then the system sends a message to the Deployment Server Services to repair the objects.

  38. Deployment Server: If the Repair Repository flag is set, then the system selects the F96225 records where package name, pathcode, primary server, operation=”11” and status = ERROR. For each record, the system attempts to fetch the record from the F98780R table, evaluate what is missing and if the record is not in the F98780R table, recreates the par file and inserts the record back into the F98780R and F98780H tables.

  39. Primary Enterprise Server: If the Repair Repository flag is set, then the system selects the F96225 records where package name, pathcode, primary server, operation=”11”, and status = ERROR. The system then retrieves and validates each record from the F98780R table if there is a .h or/and .c file. If the validation is successful, the system sets the F96225 record to status=SUCCESS.

  40. Primary Enterprise Server: On the Primary Enterprise Server, the package build checks if there is a difference between the data dictionary items in the database and the data dictionary items in ddict/ddtext. Differences can exist between the type and length fields in the two locations. If there are any differences, then the system locks all the processes to prevent any UBE to run and waits for all UBEs to finish. It does not affect users on the web. When the locks are obtained, ddict/ddtext/glbtb are deleted in the path code spec directory.

  41. Primary Enterprise Server: Generate NER: Only the Named Event Rules (NERs) in the list of the F96225 are generated in the checkin\source64 and checkin\include64.

  42. Primary Enterprise Server: Waits for the client build to finish copying the client active files to the new files.

  43. Primary Enterprise Server: Moves checkin\include64, checkin\source64, checkin\include, and checkin\source to the Deployment Server.

  44. Deployment Server: Starts busbuild to build the business functions on the Deployment Server.

  45. Primary Enterprise Server: Moves client or server and server-only .c and .h files (if 32-bit system moves the checkin\include and checkin\source, if 64-bit system moves the checkin\include64 and checkin\source64) to the source and include directories respectively on the Primary Enterprise Server.

  46. Primary Enterprise Server: If there is more than one server, then the Primary Enterprise Server moves the .c and .h files from the source and include directories to other Enterprise Servers under the source and include directories.

  47. Primary Enterprise Server: Compiles business functions on the Primary Enterprise Server to generate .dll, .so, .sl, or .SRVPGM files.

  48. Primary Enterprise Server: A new unique library IBMi is created in which you can create the SVRPGM, MODULES, and FILES. This unique library name is created with the first two letters and the last two letters of the package, and the job number. For example, if the package is DV920FA, then the unique library is created as "DVFA000340". This name is stored in the F9603 file in phpkgdeffut3.

  49. Primary Enterprise Server: If there are multiple servers, the Primary Enterprise Server sends a message to the other servers to start the build of business functions.

  50. Primary Enterprise Server: If the client package was also selected, the Primary Enterprise Server transfers the files from the checkin\source, checkin\source64, checkin\include, checkin\include64 and checkin\res to the Deployment Server Package include, source, include64, source64, and res directories.

  51. Primary Enterprise Server: Checks the status of the build and checks if BSFNs are complete. The Primary Enterprise Server checks the status of other servers if BSFNs are complete.

  52. Primary Enterprise Server: When the dll and specs are finished, if the compress feature for server is enabled, it compresses the .dll, .so, .sl, and .SRVPGM files on the Primary Enterprise Servers. The Primary Enterprise Server sends a message to all the other servers to compress.

  53. Other Enterprise Servers: Sends the compressed files to the Primary Enterprise Server under <packagename>/<machine type> directory.

  54. Primary Enterprise Server: Transfers the compressed files and the compress.inf file back to the Deployment Server if initialization was successful under the <packagename>/<machine type> directory.

  55. Deployment Server: When business function and business services are complete, the system starts the compression on the Deployment Server.

  56. Primary Enterprise Server: Under the deployment location, creates the package name under the bin64 and specs folder in these paths, respectively: <pathcode>\bin64\<package name> and <pathcode>\spec \<package name>.

  57. Primary Enterprise Server: Copies the package bin64 directory to the <pathcode>\bin64\<package name> directory.

  58. Primary Enterprise Server: Under <pathcode>\spec\<package name>, creates the spec.ini file with the database datasource location for Central Objects DV920_DataSource=Central Objects – DV920

  59. Primary Enterprise Server: Checks the jde.ini for entry

    [PACKAGE MANIFEST] CreateJAR=Y

    and/or checks the F96215->PKGBULFUT3 = "Y" which is set when you select Compress Application Component in the Compress Options tab.

    If this entry is in jde.ini or F96215 with 'Y', then the system creates a E1_APP_xxxx.jar file under the package name directory on the Enterprise Server. This jar file contains the bin64 directory and the spec.ini is populated with the package name. The jar file is used by the Server Manager to create a new Enterprise Server Instance.

  60. Primary Enterprise Server: Transfers the server log (svrpkgbuild.log) from each server to the Deployment Server under <packagename>\serverLogs directory.

  61. Primary Enterprise Server: Transfers the files located under the text directory on the each Enterprise Server to the Deployment Server under <packagename>\serverlogs\<server name>\text.

  62. Primary Enterprise Server: Transfers the files located under the CompileLogs directory on the each Enterprise Server to the Deployment Server under <packagename>\serverlogs\<server name>\CompileLog.

  63. Primary Enterprise Server: Transfers the files located under the GenerateNER_logs directory on the Primary Enterprise Server to the Deployment Server under <packagename>\serverlogs\GenerateNER_logs.

  64. Primary Enterprise Server: If this is a server-only package, the process is complete. However, if client is selected, the system waits for the client to finish with the compression of the directories into CAB files.

  65. Primary Enterprise Server: The system checks the status of the client build and the spec build to wait for them to complete. When complete, the process is done.