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 invalid input: '&' 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 acknowledgement from a regulatory agency, the Regulatory Transmission Delegate will determine the correct Regulatory Submission Processor that should receive the acknowledgement and call this method. @see RegulatoryTransmissionDelegateInterface.

      This method is responsible for recording the acknowledgement 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 acknowledgements, events should only be fired for the final acknowledgement.

      When acknowledgements 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.

      The default implementation of this method processes the provided 'transmissionContent' parameter as a UTF_8 String.

      Supported API: true

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

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

      This method is responsible for recording the acknowledgement 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 acknowledgements, events should only be fired for the final acknowledgement.

      When acknowledgements 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.

      The default implementation of this method processes the provided 'transmissionContent' parameter as a UTF_8 String.

      Supported API: true

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

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

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

      RegulatorySubmission generatePrimaryContent(RegulatorySubmission regulatorySubmission, boolean draft) 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 acknowledgement from the Regulatory Agency. The default implementation sets the submission stage attribute to Active and when null the approval date is set to the current time.

      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
    • getTransmissionDelegate

      RegulatoryTransmissionDelegateInterface getTransmissionDelegate(RegulatorySubmission regulatorySubmission) throws Exception
      Returns the RegulatoryTransmissionDelegateInterface registered for the Regulatory Submission Type in the Service Properties

      Supported API: true
      Parameters:
      regulatorySubmission -
      Returns:
      RegulatoryTransmissionDelegateInterface
      Throws:
      Exception
    • submitRegulatorySubmission

      RegulatorySubmission submitRegulatorySubmission(RegulatorySubmission regulatorySubmission) throws Exception
      Submits the Regulatory Submission using the Transmission Delegate configured for the Regulatory Submission. Do not modify the Regulatory Submission in any implementation of this method - modification customization can be performed by overriding postSubmissionProcessing(RegulatorySubmission)


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

      RegulatorySubmission postSubmissionProcessing(RegulatorySubmission regulatorySubmission) throws Exception
      Performs Post Submission Processing on a Regulatory Submission, called from submitRegulatorySubmission(RegulatorySubmission)
      Override this method to perform all custom processing that will modify the Regulatory Submission.

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

      RegulatorySubmission expireRegulatorySubmission(RegulatorySubmission submission) throws WTException
      Marks the provided regulatory submission as expired, changes its SubmissionStage to expired, and fires the RegulatoryMasterServiceEvent.AUTO_EXPIRED event. Additionally, will auto check out and check in a revision-controlled regulatory submission using the ConditionalAutoCheckoutRunner if a working copy is not provided and does not already exist

      Supported API: true
      Parameters:
      submission - The regulatory submission to be expired
      Returns:
      The version of the regulatory submission which has been expired.
      Throws:
      WTException
    • postCancellation

      RegulatorySubmission postCancellation(RegulatorySubmission regSub) throws Exception
      Used to perform work required after the cancellation of the submission process of a regulatory submission.

      Default implementation:

      On the provided regulatory submission, set the Submission Stage attribute to Terminated. Additionally, when it is null, set the terminated date to the current time.

      Supported API: true

      Parameters:
      regSub -
      Returns:
      Throws:
      Exception
    • getTransmissionPayloadCategory

      String getTransmissionPayloadCategory()
      Returns the location of the Regulatory Submission Payload content. Only supports the internal name of a RegulatoryContentCategory or the value of the of USE_PRIMARY_CONTENT_AS_TRANSMISSION_PAYLOAD.

      Supported API: true
      Returns:
    • performTrackRegSubActionValidation

      boolean performTrackRegSubActionValidation(RegulatorySubmission regSub2) throws WTException
      Supported API Method used to control/validate the visibility of the Track Regulatory Submission action.

      Supported API: true
      Parameters:
      regSub2 -
      Returns:
      Throws:
      Exception
      WTException