Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 32 Next »

 Overview
 
 

Description

Batch operations are defined and the architecture is laid out in this section. Defining a batch operation begins with the definition of the batch profile and involves definition of various sections that cover different aspects of the batch job. Apart for defining the batch profile, the user may also define specific KRMS profile xml files, various maintenance documents for data mapping and define CRON schedules.

 

The execution of the batch job varies based on options selected in the profile. Current implementation of batch jobs covers ingest of bib, order, invoice, location and patron data as well as bib overlay and export of data including bibs, order and invoices. Other data operations such as deletions, 'Globally Protected Field' definition and overlays may also be covered in this definition.

 Design: Business

User Stories

Priority Rank Order

 

 Design: Technical

 

Design Technical
Service Design and Implementation
Screen Flow Diagram

Layout use cases based on the screen flows indicating navigation between different screens and pop-ups. 

Security
  • Roles – list of roles to be defined
  • Permissions – list of permissions to be defined
  • User Profiles – user profiles that may be applied roles/permissions (also for test/mock purposes) 
Rules
  • Context & Agendas
  • Terms & Prepositions
  • Sample XML file
Component Design
  • OJB.xml
  • Class Diagram

 

  • State Chart Diagram
  • Psuedo Code
  1. User creates a batch profile using the options provided in batch profile screen
  2. User schedules a batch job for a given data and time
  3. BatchProcessJobManager will perform the job scheduling by calling scheduleJob(ScheduleJobBo bo) method. The schedule information (storeds as cron expression) and the job information is stored in db
  4. The Quartz scheduler which is configured in KRMSLocalSpringBean.xml calls the BatchProcessManager.execute(int processId) method.
  5. BatchProcessManager will load the profile(BatchProcessProfile) created by user based on the process id supplied and call the factory class to create BatchProcess instance.
  6. The BatchProcessFactory creates the appropriate BatchProcess instance based on the processType in the profile
  7. The processBatch(BatchProcessProfile profile) is called to perform the batch process as per the profile information provided by the user.

    1. BatchProcessExportData
      This batchprocess is involved in performing export of bib / intance information based on the profile provided by the user. It has the following methods:
      1. batchExport(BatchProcessProfile profile) 

      This method is passed the BatchProcessProfile and writes its output to the filesystem. It is the method used for scheduled exports. It should function as follows

 

            1. A call is made to the getBatchJobInfo(int processId) to get the current job info which executed the processBatch()
            2. updateBatchProgress(BatchProcessJobBo jobBo) is called to updated the job running status to started and start time.
            3. A call is made to the batchExport(BatchProcessProfile profile) method passing the profile information.
            4. The needed values are pulled out of the profile information.
            5. exportFilterCriteria - What exportFilterCriteria to use. The exportFormat is read from the exportFilterCriteria
              1. exportType - Full or Incremental
              2. exportId (processId)- Used for saving the incremental dateTime.
              3. exportFileTo - The directory and file name format.
              4. writeReportTo - The directory and report file name.
              5. chunkSize - Max number of records per file.
              6. staffOnly- If staffOnly records should be included.
              7. updateLeveInfo - bibOnly, instance.
            6. If the export is incremental 
              1. Get the last export dateTime for the exportId
              2. save the current dateTime exportId pair.
            7. call getSolrDocList(BatchProcessProfile profile) to get the solr doc list
            8. A call to updateBatchProgress(BatchProcessJobBo jobBo) is called to updated the total number of records to be processed.
            9. if there is more than one chunk split the solr results based on the number of chunks data
            10. make a call to ExportService.getExportDataBySolr using the exportFormatProfile and one set of solr results which were split as per the chunk size.
            11. If isMarc21 is true convert the returned MarcXML to Marc21.
            12. Write the returned XML or Marc21 from the export service to files using the exportTo variable.
            13. call the updateBatchProgress(BatchProcessJobBo jobBo) passing the jobBo which contains the current job information updated with records processed, % processed and time spent.
            14. If there is more chunks make the next call to the ExportService.
            15. Create the Report in the location provided in the profile.
            16. updateBatchProgress(BatchProcessJobBo jobBo) is called to updated the job running status to completed and end time, total records processed, % processed and time spent.

    1. BatchProcessOrderRecordData

      This BatchProcessOrderRecordData performs order record ingest and creates Requisitions and Purchase Orders based on the batchProcessProfile selected by the user.

      getFileContent(BatchProcessJobBO batchProcessJobBO)


      This method takes content from the ingested mrc and edi files.

      validateFile(String mrcFileName, String ediFileName, String xmlFileName)
      This method takes file names and validate these files to perform orderRecord.

      if(true)

      ingestOrderRecord(BatchProcessProfile batchProcessProfile, BatchProcessJobBO batchProcessJobBO)
      This method takes batchProcessProfile and batchProcessJobBO as parameters and load mrc and edi files content into IngestRecord object.
      isPreProcessingRequired(MultipartFile marcFile, MultipartFile ediFile)
      This method checks file extensions returns boolean
      start(IngestRecord ingestRecord, BatchProcessProfile BatchProcessProfile)
      This method performs order record operation.
      else
      Displays error message.

    2. BatchProcessLocationIngestData

      This BatchProcessLocationIngestData gets location details from XMl and stores in db.

       

      getFileContent(BatchProcessJobBO batchProcessJobBO)
      This method takes content from the ingested mrc and edi files.

      validateFile(String xmlFileName)
      This method takes file names and validates whether ingested file is xml or not.

      if(true)
      validateContentsAgainstSchema(InputStream inputStream)

       

      persistLocationFromFileContent(String fileContent,String locationFileName);
      This method persist location details into db.

      else
      Displays error message.

    3. BatchProcessPatronIngestData


      This BatchProcessPatronIngestData gets location details from XMl and stores in db.

      getFileContent(BatchProcessJobBO batchProcessJobBO)
      This method takes content from the ingested mrc and edi files.

      validateFile(String xmlFileName)
      This method takes file names and validates whether ingested file is xml or not.

      if(true)
      validateContentsAgainstSchema(InputStream inputStream)

      persistLocationFromFileContent(String fileContent, boolean addUnMatchedPatronFlag, String fileName, OlePatronIngestSummaryRecord olePatronIngestSummaryRecord, String addressSource, String userName);

      This method persist location details into db.

      else
      Displays error message.

 

 

 


Service Contracts
Service Implementation
 Process Diagram
 
 

ER Diagram:

 

 

 UI Screen

 UI Screen

 

 

 

 Data Model

Data Model

Entity : BATCH DEFINITION

 

Name

Max
Len

Data Type

Default Value

Input Type

Action Event

Action Event Function Name

Validation
Type

Tab Index

Remarks

 

         

 

         
  • No labels