Class CapabilityLanguageFlowController

  • All Implemented Interfaces:
    FlowController

    public class CapabilityLanguageFlowController
    extends CasFlowController_ImplBase
    FlowController for the CapabilityLanguageFlow, which uses a linear flow but may skip some of the AEs in the flow if they do not handle the language of the current document or if their outputs have already been produced by a previous AE in the flow.
    • Constructor Detail

      • CapabilityLanguageFlowController

        public CapabilityLanguageFlowController()
    • Method Detail

      • initialize

        public void initialize​(FlowControllerContext aContext)
                        throws ResourceInitializationException
        Description copied from interface: FlowController
        Performs any startup tasks required by this component. The framework calls this method only once, just after the FlowController has been instantiated.

        The framework supplies this FlowController with a reference to the FlowControllerContext that it will use, for example to access configuration settings or resources. This FlowController should store a reference to this Context for later use.

        Specified by:
        initialize in interface FlowController
        Overrides:
        initialize in class FlowController_ImplBase
        Parameters:
        aContext - Provides access to services and resources managed by the framework. This includes configuration parameters, logging, and access to external resources. Also provides the FlowController with the metadata of all of the AnalysisEngines that are possible targets for routing CASes.
        Throws:
        ResourceInitializationException - if the FlowController cannot initialize successfully.
      • computeFlow

        public Flow computeFlow​(CAS aCAS)
                         throws AnalysisEngineProcessException
        Description copied from class: CasFlowController_ImplBase
        This method must be overriden by subclasses. It takes a CAS and returns a Flow object that is responsible for routing this particular CAS through the components of this Aggregate. The Flow object should be given a handle to the CAS, so that it can use information in the CAS to make routing decisions.

        FlowController implementations will typically define their own class that implements Flow by extending from the base class CasFlow_ImplBase. This method would then just instantiate the flow object, call its setCas method to provide a handle to the CAS, and return the flow object.

        Specified by:
        computeFlow in class CasFlowController_ImplBase
        Parameters:
        aCAS - the CAS to be routed
        Returns:
        a Flow object that will be used to route aCAS
        Throws:
        AnalysisEngineProcessException - if a problem occurs during processing
        See Also:
        FlowController.computeFlow(AbstractCas)
      • computeFlowTable

        protected Map<String,​List<AnalysisSequenceCapabilityNode>> computeFlowTable​(Capability[] aCapabilities)
        method computeFlowTable create the flow table for faster processing. The flow table includes the corresponding flow sequence for all languages in the capabilities
        Parameters:
        aCapabilities - aggregate engine capabilities
        Returns:
        Map - flow table includes all sequences for all languages
      • computeSequence

        protected List<AnalysisSequenceCapabilityNode> computeSequence​(String language,
                                                                       Capability[] aCapabilities)
        method computeSequence creates a capabilityLanguageAnalysisSequence for the given language
        Parameters:
        language - current language
        aCapabilities - output capabilities of the aggregate engine
        Returns:
        List - capabilityLanguageAnalysisSequence for the current language