Interface RegulatorySubmissionProcessorInterface

All Known Implementing Classes:
AbstractRegSubmission2Processor, AbstractRegulatorySubmissionProcessor, AERSubmissionProcessor, ERSubmissionProcessor, RegulatorySubmission2Processor, RPSSubmissionProcessor, SimpleRegulatorySubmissionProcessor, UDISubmissionProcessor

public interface RegulatorySubmissionProcessorInterface
Defines the methods required to implement a Regulatory Submission Process. Standard workflows and actions need to call methods on this interface for their implementations. This should be done via the RegulatorySubmissionProcessorHelper.getRegulatorySubmissionProcessor() method.

It is expected that this interface will become large and grow over time as new areas of customization as defined.



Supported API: true

Extendable: true

  • Method Details

    • revisePopulatePreNewVersion

      void revisePopulatePreNewVersion(RegulatorySubmission regulatorySubmission) throws Exception
      This method populates all the regulatory submission data when revise action is performed. It is expected that this method can be overwritten to achieve customization when you are extending this class.

      Called prior to the new Version of the Regulatory Submission object being persisted. This allows the modification of attributes and IBA during the creation of the new version. Do not call save() or store() object methods as this will be performed by the framework.

      Supported API: true

      Throws:
      Exception
    • revisePopulateNewVersion

      void revisePopulateNewVersion(RegulatorySubmission regulatorySubmission) throws Exception
      Called after the new Version of the Regulatory Submission is persisted. Content, Subjects and Drivers have already been propagated to the new Version. This is where you can delete, update or add related Content, Subjects and Drivers.

      Supported API: true
      Throws:
      Exception
    • preCreatePopulate

      void preCreatePopulate(RegulatorySubmission regulatorySubmission) throws Exception
      This method populates Regulatory Submission data when the create action is performed, prior to persistence. It is expected that this method can be overwritten to achieve customization when you are extending this class.

      Called prior to the new Regulatory Submission object being persisted. This allows the modification of attributes and IBAs during the creation of the Regulatory Submission. Do not call save() or store() object methods as this will be performed by the framework.

      Supported API: true
      Throws:
      Exception
    • createPopulate

      void createPopulate(RegulatorySubmission regulatorySubmission) throws Exception
      This method populates Regulatory Submission data when the create action is performed, after persistence. It is expected that this method can be overwritten to achieve customization when you are extending this class.

      Called after the Regulatory Submission object & it's respective content, subjects, and drivers have already been persisted. This is where you can add, delete, and update related content, subjects, and drivers.

      Supported API: true
      Throws:
      Exception
    • enableCustomEditAction

      boolean enableCustomEditAction()
      Used to configure the Edit Action for Regulatory Submissions. Default implementation will return false. Override this method to return true if a custom Edit URL has been configured by overriding the createCustomEditUrl method. When a custom Edit Action is enabled the OOTB Windchill Edit Wizard will be disabled and the custom URL will be invoked

      Supported API: true
    • createCustomEditUrl

      String createCustomEditUrl(RegulatorySubmission regulatorySubmission)
      Used to configure a custom Edit URL used by the custom Edit Action for Regulatory Submissions. Default implementation will return null. Override this method to return the custom Edit URL which will be used for editing a Regulatory Submission, If the enableCustomEditAction is configured to return true and this method is not configured, an error will be displayed. There is no need to encode because it will be done by the framework

      Supported API: true
    • processAcknowledgement

      boolean processAcknowledgement(String transmissionName, String transmissionContent) throws Exception
      Upon receipt of an acknowledgment from a regulatory agency, the Regulatory Transmission Delegate will determine the correct Regulatory Submission Processor that should receive the acknowledgment and call this method. @see RegulatoryTransmissionDelegateInterface.

      This method is responsible for recording the acknowledgment body as Regulatory Content by calling RegulatoryContentHelper.getService().storeRegulatoryContent(). It is also responsible for parsing the Regulatory Agency specific acknowledgement format to determine if it is successful or not and then dispatching the correct event. RegulatorySubmissionProcessorHelper.dispatchAcknowledgmentSuccessfulEvent(regulatorySubmission) or RegulatorySubmissionProcessorHelper.dispatchAcknowledgmentFailedEvent(regulatorySubmission) If the agency sends multiple acknowledgments, events should only be fired for the final acknowledgement.

      When acknowledgments contain tracking data such as Remote Identifier, Remote URL, Certificate Number, or agency specific IBAs, this method should update the Regulatory submission attributes with those values. To find a regulatory submission based upon a unique value stored in a tracking attribute use RegulatorySubmissionHelper.getService().findRegulatorySubmissionByTypeAndAttribute().

      The default implementation of this method processes the simulated acknowledgements generated by simulateSuccessfulAcknowledgement() and simulateFailedAcknowledgement() methods.

      Supported API: true

      Parameters:
      transmissionName -
      transmissionContent -
      Returns:
      Throws:
      Exception
    • generatePrimaryContent

      RegulatorySubmission generatePrimaryContent(RegulatorySubmission regulatorySubmission) throws Exception
      This method generates a human readable version of the data represented by the Regulatory Submission and sets it as Primary Content.

      Supported API: true
      Throws:
      Exception
      See Also:
    • cleanTransmissionContent

      RegulatorySubmission cleanTransmissionContent(RegulatorySubmission regulatorySubmission) throws Exception
      Used to Delete Regulatory Content created by the submitting process. Transmission Regulatory Content must be cleaned because exceptions are thrown when attempting to overwrite existing Regulatory Content. Cleaning is required due to the loop back in Regulatory Submission Submitting Workflow when asked to resubmit.

      Supported API: true
      Throws:
      Exception
    • postComplete

      RegulatorySubmission postComplete(RegulatorySubmission regulatorySubmission) throws Exception
      Used to Perform work required after a successful acknowledgment from the Regulatory Agency. The default implementation sets the Regulatory Submission stage attribute to Active, and the Regulatory Submission Stage for the predecessor Regulatory Submission (If one exists) to History.

      Supported API: true
      Throws:
      Exception
    • generatePayload

      RegulatorySubmission generatePayload(RegulatorySubmission regulatorySubmission) throws Exception
      Generates the file that will be transmitted to the regulatory agency and stores it as Regulatory Content of type "REGULATORY_SUBMISSION_PAYLOAD". Method uses RegulatoryContentHelper.getService().storeRegulatoryContent() to store the generated content. The file can be any format; often generated as XML, PDF, Document, or Spreadsheet. Default implementation will generate a JSON file containing select attributes from the Regulatory Submission.

      Supported API: true
      Parameters:
      regulatorySubmission -
      Returns:
      RegulatorySubmission
      Throws:
      Exception