You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ea...@apache.org on 2013/07/24 21:44:57 UTC
svn commit: r1506677 - in
/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main:
java/org/apache/uima/ducc/ java/org/apache/uima/ducc/common/uima/
resources/org/ resources/org/apache/ resources/org/apache/uima/
resources/org/apache/uima/ducc/ resourc...
Author: eae
Date: Wed Jul 24 19:44:57 2013
New Revision: 1506677
URL: http://svn.apache.org/r1506677
Log:
UIMA-3110
Added:
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem.java
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem_Type.java
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobFlowControlTS.xml
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml
- copied, changed from r1504164, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml
Removed:
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.java
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem.java?rev=1506677&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem.java Wed Jul 24 19:44:57 2013
@@ -0,0 +1,180 @@
+
+
+/* First created by JCasGen Fri Jul 19 18:26:47 EDT 2013 */
+package org.apache.uima.ducc;
+
+import org.apache.uima.jcas.JCas;
+import org.apache.uima.jcas.JCasRegistry;
+import org.apache.uima.jcas.cas.TOP_Type;
+
+import org.apache.uima.jcas.cas.TOP;
+
+
+/**
+ * Updated by JCasGen Fri Jul 19 18:26:47 EDT 2013
+ * XML source: /users1/eae/workspace-ducc/uima-ducc/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobFlowControlTS.xml
+ * @generated */
+public class Workitem extends TOP {
+ /** @generated
+ * @ordered
+ */
+ public final static int typeIndexID = JCasRegistry.register(Workitem.class);
+ /** @generated
+ * @ordered
+ */
+ public final static int type = typeIndexID;
+ /** @generated */
+ public int getTypeIndexID() {return typeIndexID;}
+
+ /** Never called. Disable default constructor
+ * @generated */
+ protected Workitem() {}
+
+ /** Internal - constructor used by generator
+ * @generated */
+ public Workitem(int addr, TOP_Type type) {
+ super(addr, type);
+ readObject();
+ }
+
+ /** @generated */
+ public Workitem(JCas jcas) {
+ super(jcas);
+ readObject();
+ }
+
+ /** <!-- begin-user-doc -->
+ * Write your own initialization here
+ * <!-- end-user-doc -->
+ @generated modifiable */
+ private void readObject() {}
+
+
+
+ //*--------------*
+ //* Feature: inputfile
+
+ /** getter for inputfile - gets
+ * @generated */
+ public String getInputfile() {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_inputfile == null)
+ jcasType.jcas.throwFeatMissing("inputfile", "org.apache.uima.ducc.Workitem");
+ return jcasType.ll_cas.ll_getStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_inputfile);}
+
+ /** setter for inputfile - sets
+ * @generated */
+ public void setInputfile(String v) {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_inputfile == null)
+ jcasType.jcas.throwFeatMissing("inputfile", "org.apache.uima.ducc.Workitem");
+ jcasType.ll_cas.ll_setStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_inputfile, v);}
+
+
+ //*--------------*
+ //* Feature: outputfile
+
+ /** getter for outputfile - gets
+ * @generated */
+ public String getOutputfile() {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_outputfile == null)
+ jcasType.jcas.throwFeatMissing("outputfile", "org.apache.uima.ducc.Workitem");
+ return jcasType.ll_cas.ll_getStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_outputfile);}
+
+ /** setter for outputfile - sets
+ * @generated */
+ public void setOutputfile(String v) {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_outputfile == null)
+ jcasType.jcas.throwFeatMissing("outputfile", "org.apache.uima.ducc.Workitem");
+ jcasType.ll_cas.ll_setStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_outputfile, v);}
+
+
+ //*--------------*
+ //* Feature: encoding
+
+ /** getter for encoding - gets Optional parameter to use when converting input files into Java characters
+ * @generated */
+ public String getEncoding() {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_encoding == null)
+ jcasType.jcas.throwFeatMissing("encoding", "org.apache.uima.ducc.Workitem");
+ return jcasType.ll_cas.ll_getStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_encoding);}
+
+ /** setter for encoding - sets Optional parameter to use when converting input files into Java characters
+ * @generated */
+ public void setEncoding(String v) {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_encoding == null)
+ jcasType.jcas.throwFeatMissing("encoding", "org.apache.uima.ducc.Workitem");
+ jcasType.ll_cas.ll_setStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_encoding, v);}
+
+
+ //*--------------*
+ //* Feature: language
+
+ /** getter for language - gets Optional parameter to specify the text language
+ * @generated */
+ public String getLanguage() {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_language == null)
+ jcasType.jcas.throwFeatMissing("language", "org.apache.uima.ducc.Workitem");
+ return jcasType.ll_cas.ll_getStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_language);}
+
+ /** setter for language - sets Optional parameter to specify the text language
+ * @generated */
+ public void setLanguage(String v) {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_language == null)
+ jcasType.jcas.throwFeatMissing("language", "org.apache.uima.ducc.Workitem");
+ jcasType.ll_cas.ll_setStringValue(addr, ((Workitem_Type)jcasType).casFeatCode_language, v);}
+
+
+ //*--------------*
+ //* Feature: blocksize
+
+ /** getter for blocksize - gets Optional parameter to process input files in smaller chunks
+ * @generated */
+ public int getBlocksize() {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_blocksize == null)
+ jcasType.jcas.throwFeatMissing("blocksize", "org.apache.uima.ducc.Workitem");
+ return jcasType.ll_cas.ll_getIntValue(addr, ((Workitem_Type)jcasType).casFeatCode_blocksize);}
+
+ /** setter for blocksize - sets Optional parameter to process input files in smaller chunks
+ * @generated */
+ public void setBlocksize(int v) {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_blocksize == null)
+ jcasType.jcas.throwFeatMissing("blocksize", "org.apache.uima.ducc.Workitem");
+ jcasType.ll_cas.ll_setIntValue(addr, ((Workitem_Type)jcasType).casFeatCode_blocksize, v);}
+
+
+ //*--------------*
+ //* Feature: blockindex
+
+ /** getter for blockindex - gets Optional parameter to specify block offset into input file to start processing
+ * @generated */
+ public int getBlockindex() {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_blockindex == null)
+ jcasType.jcas.throwFeatMissing("blockindex", "org.apache.uima.ducc.Workitem");
+ return jcasType.ll_cas.ll_getIntValue(addr, ((Workitem_Type)jcasType).casFeatCode_blockindex);}
+
+ /** setter for blockindex - sets Optional parameter to specify block offset into input file to start processing
+ * @generated */
+ public void setBlockindex(int v) {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_blockindex == null)
+ jcasType.jcas.throwFeatMissing("blockindex", "org.apache.uima.ducc.Workitem");
+ jcasType.ll_cas.ll_setIntValue(addr, ((Workitem_Type)jcasType).casFeatCode_blockindex, v);}
+
+
+ //*--------------*
+ //* Feature: sendToCC
+
+ /** getter for sendToCC - gets
+ * @generated */
+ public boolean getSendToCC() {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_sendToCC == null)
+ jcasType.jcas.throwFeatMissing("sendToCC", "org.apache.uima.ducc.Workitem");
+ return jcasType.ll_cas.ll_getBooleanValue(addr, ((Workitem_Type)jcasType).casFeatCode_sendToCC);}
+
+ /** setter for sendToCC - sets
+ * @generated */
+ public void setSendToCC(boolean v) {
+ if (Workitem_Type.featOkTst && ((Workitem_Type)jcasType).casFeat_sendToCC == null)
+ jcasType.jcas.throwFeatMissing("sendToCC", "org.apache.uima.ducc.Workitem");
+ jcasType.ll_cas.ll_setBooleanValue(addr, ((Workitem_Type)jcasType).casFeatCode_sendToCC, v);}
+ }
+
+
\ No newline at end of file
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem_Type.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem_Type.java?rev=1506677&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem_Type.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/Workitem_Type.java Wed Jul 24 19:44:57 2013
@@ -0,0 +1,211 @@
+
+/* First created by JCasGen Fri Jul 19 18:26:47 EDT 2013 */
+package org.apache.uima.ducc;
+
+import org.apache.uima.jcas.JCas;
+import org.apache.uima.jcas.JCasRegistry;
+import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.cas.impl.FSGenerator;
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.impl.FeatureImpl;
+import org.apache.uima.cas.Feature;
+import org.apache.uima.jcas.cas.TOP_Type;
+
+/**
+ * Updated by JCasGen Fri Jul 19 18:26:47 EDT 2013
+ * @generated */
+public class Workitem_Type extends TOP_Type {
+ /** @generated */
+ protected FSGenerator getFSGenerator() {return fsGenerator;}
+ /** @generated */
+ private final FSGenerator fsGenerator =
+ new FSGenerator() {
+ public FeatureStructure createFS(int addr, CASImpl cas) {
+ if (Workitem_Type.this.useExistingInstance) {
+ // Return eq fs instance if already created
+ FeatureStructure fs = Workitem_Type.this.jcas.getJfsFromCaddr(addr);
+ if (null == fs) {
+ fs = new Workitem(addr, Workitem_Type.this);
+ Workitem_Type.this.jcas.putJfsFromCaddr(addr, fs);
+ return fs;
+ }
+ return fs;
+ } else return new Workitem(addr, Workitem_Type.this);
+ }
+ };
+ /** @generated */
+ public final static int typeIndexID = Workitem.typeIndexID;
+ /** @generated
+ @modifiable */
+ public final static boolean featOkTst = JCasRegistry.getFeatOkTst("org.apache.uima.ducc.Workitem");
+
+ /** @generated */
+ final Feature casFeat_inputfile;
+ /** @generated */
+ final int casFeatCode_inputfile;
+ /** @generated */
+ public String getInputfile(int addr) {
+ if (featOkTst && casFeat_inputfile == null)
+ jcas.throwFeatMissing("inputfile", "org.apache.uima.ducc.Workitem");
+ return ll_cas.ll_getStringValue(addr, casFeatCode_inputfile);
+ }
+ /** @generated */
+ public void setInputfile(int addr, String v) {
+ if (featOkTst && casFeat_inputfile == null)
+ jcas.throwFeatMissing("inputfile", "org.apache.uima.ducc.Workitem");
+ ll_cas.ll_setStringValue(addr, casFeatCode_inputfile, v);}
+
+
+
+ /** @generated */
+ final Feature casFeat_outputfile;
+ /** @generated */
+ final int casFeatCode_outputfile;
+ /** @generated */
+ public String getOutputfile(int addr) {
+ if (featOkTst && casFeat_outputfile == null)
+ jcas.throwFeatMissing("outputfile", "org.apache.uima.ducc.Workitem");
+ return ll_cas.ll_getStringValue(addr, casFeatCode_outputfile);
+ }
+ /** @generated */
+ public void setOutputfile(int addr, String v) {
+ if (featOkTst && casFeat_outputfile == null)
+ jcas.throwFeatMissing("outputfile", "org.apache.uima.ducc.Workitem");
+ ll_cas.ll_setStringValue(addr, casFeatCode_outputfile, v);}
+
+
+
+ /** @generated */
+ final Feature casFeat_encoding;
+ /** @generated */
+ final int casFeatCode_encoding;
+ /** @generated */
+ public String getEncoding(int addr) {
+ if (featOkTst && casFeat_encoding == null)
+ jcas.throwFeatMissing("encoding", "org.apache.uima.ducc.Workitem");
+ return ll_cas.ll_getStringValue(addr, casFeatCode_encoding);
+ }
+ /** @generated */
+ public void setEncoding(int addr, String v) {
+ if (featOkTst && casFeat_encoding == null)
+ jcas.throwFeatMissing("encoding", "org.apache.uima.ducc.Workitem");
+ ll_cas.ll_setStringValue(addr, casFeatCode_encoding, v);}
+
+
+
+ /** @generated */
+ final Feature casFeat_language;
+ /** @generated */
+ final int casFeatCode_language;
+ /** @generated */
+ public String getLanguage(int addr) {
+ if (featOkTst && casFeat_language == null)
+ jcas.throwFeatMissing("language", "org.apache.uima.ducc.Workitem");
+ return ll_cas.ll_getStringValue(addr, casFeatCode_language);
+ }
+ /** @generated */
+ public void setLanguage(int addr, String v) {
+ if (featOkTst && casFeat_language == null)
+ jcas.throwFeatMissing("language", "org.apache.uima.ducc.Workitem");
+ ll_cas.ll_setStringValue(addr, casFeatCode_language, v);}
+
+
+
+ /** @generated */
+ final Feature casFeat_blocksize;
+ /** @generated */
+ final int casFeatCode_blocksize;
+ /** @generated */
+ public int getBlocksize(int addr) {
+ if (featOkTst && casFeat_blocksize == null)
+ jcas.throwFeatMissing("blocksize", "org.apache.uima.ducc.Workitem");
+ return ll_cas.ll_getIntValue(addr, casFeatCode_blocksize);
+ }
+ /** @generated */
+ public void setBlocksize(int addr, int v) {
+ if (featOkTst && casFeat_blocksize == null)
+ jcas.throwFeatMissing("blocksize", "org.apache.uima.ducc.Workitem");
+ ll_cas.ll_setIntValue(addr, casFeatCode_blocksize, v);}
+
+
+
+ /** @generated */
+ final Feature casFeat_blockindex;
+ /** @generated */
+ final int casFeatCode_blockindex;
+ /** @generated */
+ public int getBlockindex(int addr) {
+ if (featOkTst && casFeat_blockindex == null)
+ jcas.throwFeatMissing("blockindex", "org.apache.uima.ducc.Workitem");
+ return ll_cas.ll_getIntValue(addr, casFeatCode_blockindex);
+ }
+ /** @generated */
+ public void setBlockindex(int addr, int v) {
+ if (featOkTst && casFeat_blockindex == null)
+ jcas.throwFeatMissing("blockindex", "org.apache.uima.ducc.Workitem");
+ ll_cas.ll_setIntValue(addr, casFeatCode_blockindex, v);}
+
+
+
+ /** @generated */
+ final Feature casFeat_sendToCC;
+ /** @generated */
+ final int casFeatCode_sendToCC;
+ /** @generated */
+ public boolean getSendToCC(int addr) {
+ if (featOkTst && casFeat_sendToCC == null)
+ jcas.throwFeatMissing("sendToCC", "org.apache.uima.ducc.Workitem");
+ return ll_cas.ll_getBooleanValue(addr, casFeatCode_sendToCC);
+ }
+ /** @generated */
+ public void setSendToCC(int addr, boolean v) {
+ if (featOkTst && casFeat_sendToCC == null)
+ jcas.throwFeatMissing("sendToCC", "org.apache.uima.ducc.Workitem");
+ ll_cas.ll_setBooleanValue(addr, casFeatCode_sendToCC, v);}
+
+
+
+
+
+ /** initialize variables to correspond with Cas Type and Features
+ * @generated */
+ public Workitem_Type(JCas jcas, Type casType) {
+ super(jcas, casType);
+ casImpl.getFSClassRegistry().addGeneratorForType((TypeImpl)this.casType, getFSGenerator());
+
+
+ casFeat_inputfile = jcas.getRequiredFeatureDE(casType, "inputfile", "uima.cas.String", featOkTst);
+ casFeatCode_inputfile = (null == casFeat_inputfile) ? JCas.INVALID_FEATURE_CODE : ((FeatureImpl)casFeat_inputfile).getCode();
+
+
+ casFeat_outputfile = jcas.getRequiredFeatureDE(casType, "outputfile", "uima.cas.String", featOkTst);
+ casFeatCode_outputfile = (null == casFeat_outputfile) ? JCas.INVALID_FEATURE_CODE : ((FeatureImpl)casFeat_outputfile).getCode();
+
+
+ casFeat_encoding = jcas.getRequiredFeatureDE(casType, "encoding", "uima.cas.String", featOkTst);
+ casFeatCode_encoding = (null == casFeat_encoding) ? JCas.INVALID_FEATURE_CODE : ((FeatureImpl)casFeat_encoding).getCode();
+
+
+ casFeat_language = jcas.getRequiredFeatureDE(casType, "language", "uima.cas.String", featOkTst);
+ casFeatCode_language = (null == casFeat_language) ? JCas.INVALID_FEATURE_CODE : ((FeatureImpl)casFeat_language).getCode();
+
+
+ casFeat_blocksize = jcas.getRequiredFeatureDE(casType, "blocksize", "uima.cas.Integer", featOkTst);
+ casFeatCode_blocksize = (null == casFeat_blocksize) ? JCas.INVALID_FEATURE_CODE : ((FeatureImpl)casFeat_blocksize).getCode();
+
+
+ casFeat_blockindex = jcas.getRequiredFeatureDE(casType, "blockindex", "uima.cas.Integer", featOkTst);
+ casFeatCode_blockindex = (null == casFeat_blockindex) ? JCas.INVALID_FEATURE_CODE : ((FeatureImpl)casFeat_blockindex).getCode();
+
+
+ casFeat_sendToCC = jcas.getRequiredFeatureDE(casType, "sendToCC", "uima.cas.Boolean", featOkTst);
+ casFeatCode_sendToCC = (null == casFeat_sendToCC) ? JCas.INVALID_FEATURE_CODE : ((FeatureImpl)casFeat_sendToCC).getCode();
+
+ }
+}
+
+
+
+
\ No newline at end of file
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.java?rev=1506677&r1=1506676&r2=1506677&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.java Wed Jul 24 19:44:57 2013
@@ -20,32 +20,40 @@ package org.apache.uima.ducc.common.uima
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
+import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
import org.apache.uima.analysis_engine.metadata.FixedFlow;
import org.apache.uima.analysis_engine.metadata.FlowConstraints;
import org.apache.uima.cas.CAS;
-import org.apache.uima.flow.CasFlowController_ImplBase;
-import org.apache.uima.flow.CasFlow_ImplBase;
+import org.apache.uima.ducc.Workitem;
import org.apache.uima.flow.FinalStep;
import org.apache.uima.flow.Flow;
import org.apache.uima.flow.FlowControllerContext;
+import org.apache.uima.flow.JCasFlowController_ImplBase;
+import org.apache.uima.flow.JCasFlow_ImplBase;
import org.apache.uima.flow.SimpleStep;
import org.apache.uima.flow.Step;
+import org.apache.uima.jcas.JCas;
+import org.apache.uima.jcas.cas.TOP;
import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.resource.metadata.OperationalProperties;
/**
* Ducc FlowController for Job Processes assembled from user components
- * If WI-Cas is sent to initial CM, it is then dropped
- * All other parent CASes continue thru the flow
+ * If CM delegate exists then WI-Cas is first sent there
+ * and then optionally to CC delegate if so specified by flag in WorkItem feature structure.
+ * If no CM delegate, then WI-Cas is sent to AE and CC if it exists.
*/
-public class DuccJobProcessFC extends CasFlowController_ImplBase {
+public class DuccJobProcessFC extends JCasFlowController_ImplBase {
- /**
- */
- private String cmKey="DuccXmiZipReaderCM";
+ //private String cmKey="DuccXmiZipReaderCM";
+
private List<String> mSequence;
+ private Boolean mHasCasMultiplier=false;
public void initialize(FlowControllerContext aContext) throws ResourceInitializationException {
super.initialize(aContext);
@@ -59,6 +67,17 @@ public class DuccJobProcessFC extends Ca
throw new ResourceInitializationException(ResourceInitializationException.FLOW_CONTROLLER_REQUIRES_FLOW_CONSTRAINTS,
new Object[]{this.getClass().getName(), "fixedFlow", aContext.getAggregateMetadata().getSourceUrlString()});
}
+
+ // check if first delegate is a CasMultiplier
+ Iterator aeIter = getContext().getAnalysisEngineMetaDataMap().entrySet().iterator();
+ while (aeIter.hasNext()) {
+ Map.Entry entry = (Map.Entry) aeIter.next();
+ AnalysisEngineMetaData md = (AnalysisEngineMetaData) entry.getValue();
+ OperationalProperties op = md.getOperationalProperties();
+ if (op.getOutputsNewCASes()) {
+ mHasCasMultiplier = true;
+ }
+ }
}
/*
@@ -66,14 +85,15 @@ public class DuccJobProcessFC extends Ca
*
* @see org.apache.uima.flow.CasFlowController_ImplBase#computeFlow(org.apache.uima.cas.CAS)
*/
- public Flow computeFlow(CAS aCAS) throws AnalysisEngineProcessException {
+ public Flow computeFlow(JCas aCAS) throws AnalysisEngineProcessException {
return new FixedFlowObject(0);
}
- class FixedFlowObject extends CasFlow_ImplBase {
+ class FixedFlowObject extends JCasFlow_ImplBase {
private int currentStep;
- private boolean hasBeenToDuccCM = false;
+ private boolean hasBeenToCM = false;
private boolean internallyCreatedCas = false;
+ private boolean hasBeenToCC = false;
/**
* Create a new fixed flow starting at step <code>startStep</code> of the fixed sequence.
@@ -106,24 +126,40 @@ public class DuccJobProcessFC extends Ca
* @see org.apache.uima.flow.Flow#next()
*/
public Step next() throws AnalysisEngineProcessException {
- // Drop the Work Item CAS after it has been to the Ducc CM
if (!internallyCreatedCas) {
- if (hasBeenToDuccCM) {
- return new FinalStep();
+ // this is a Work Item CAS
+ if (mHasCasMultiplier) {
+ if (!hasBeenToCM) {
+ // will send it there this time thru
+ hasBeenToCM = true;
+ }
+ else {
+ // has been to CM, see if should go to CC
+ if (!hasBeenToCC) {
+ Iterator<TOP> fsIter = this.getJCas().getJFSIndexRepository().getAllIndexedFS(Workitem.type);
+ if (fsIter.hasNext()) {
+ Workitem wi = (Workitem) fsIter.next();
+ if (fsIter.hasNext()) {
+ throw new IllegalStateException("More than one instance of Workitem type");
+ }
+ if (wi.getSendToCC()) {
+ hasBeenToCC = true;
+ return new SimpleStep((String)mSequence.get(mSequence.size()-1));
+ }
+ else {
+ return new FinalStep();
+ }
+ }
+ }
+ }
}
}
- if (currentStep >= mSequence.size()) {
- return new FinalStep(); // this CAS has finished the sequence
- }
-
- // Check if WI CAS is going to Ducc CM
- if (!internallyCreatedCas && cmKey.equals(mSequence.get(currentStep))) {
- // set flag for next time thru
- hasBeenToDuccCM = true;
+ if (hasBeenToCC || currentStep >= mSequence.size()) {
+ return new FinalStep(); // this CAS is cooked
}
- // now send the CAS to the next AE in sequence.
+ // send the CAS to the next AE in sequence.
return new SimpleStep((String)mSequence.get(currentStep++));
}
@@ -133,11 +169,8 @@ public class DuccJobProcessFC extends Ca
* @see org.apache.uima.flow.CasFlow_ImplBase#newCasProduced(CAS, String)
*/
public Flow newCasProduced(CAS newCas, String producedBy) throws AnalysisEngineProcessException {
- // start the new output CAS from the next node after the CasMultiplier that produced it
- int i = 0;
- while (!mSequence.get(i).equals(producedBy))
- i++;
- return new FixedFlowObject(i + 1, true);
+ // since the CM will always be in position 0 ...
+ return new FixedFlowObject(1, true);
}
}
}
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobFlowControlTS.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobFlowControlTS.xml?rev=1506677&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobFlowControlTS.xml (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobFlowControlTS.xml Wed Jul 24 19:44:57 2013
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
+ <name>Ducc Job Text Processing Control Types [String]</name>
+ <description>Type for communication between CR, CM, FC and CC</description>
+ <version>1.0</version>
+ <vendor>IBM</vendor>
+ <types>
+ <typeDescription>
+ <name>org.apache.uima.ducc.Workitem</name>
+ <description/>
+ <supertypeName>uima.cas.TOP</supertypeName>
+ <features>
+ <featureDescription>
+ <name>inputfile</name>
+ <description/>
+ <rangeTypeName>uima.cas.String</rangeTypeName>
+ </featureDescription>
+ <featureDescription>
+ <name>outputfile</name>
+ <description/>
+ <rangeTypeName>uima.cas.String</rangeTypeName>
+ </featureDescription>
+ <featureDescription>
+ <name>encoding</name>
+ <description>Optional parameter to use when converting input files into Java characters</description>
+ <rangeTypeName>uima.cas.String</rangeTypeName>
+ </featureDescription>
+ <featureDescription>
+ <name>language</name>
+ <description>Optional parameter to specify the text language</description>
+ <rangeTypeName>uima.cas.String</rangeTypeName>
+ </featureDescription>
+ <featureDescription>
+ <name>blocksize</name>
+ <description>Optional parameter to process input files in smaller chunks</description>
+ <rangeTypeName>uima.cas.Integer</rangeTypeName>
+ </featureDescription>
+ <featureDescription>
+ <name>blockindex</name>
+ <description>Optional parameter to specify block offset into input file to start processing</description>
+ <rangeTypeName>uima.cas.Integer</rangeTypeName>
+ </featureDescription>
+ <featureDescription>
+ <name>sendToCC</name>
+ <description/>
+ <rangeTypeName>uima.cas.Boolean</rangeTypeName>
+ </featureDescription>
+ </features>
+ </typeDescription>
+ </types>
+</typeSystemDescription>
Copied: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml (from r1504164, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml)
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml?p2=uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml&p1=uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml&r1=1504164&r2=1506677&rev=1506677&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/resources/org/apache/uima/ducc/common/uima/DuccJobProcessFC.xml Wed Jul 24 19:44:57 2013
@@ -21,12 +21,17 @@
<frameworkImplementation>org.apache.uima.java</frameworkImplementation>
<implementationName>org.apache.uima.ducc.common.uima.DuccJobProcessFC</implementationName>
<processingResourceMetaData>
- <name>Fixed Flow Controller</name>
+ <name>DUCC Job Flow Controller</name>
<description>Ducc FlowController for Job Processes assembled from user components. If WI-Cas is sent to initial CM, it is then dropped. All other parent CASes continue thru the flow.</description>
<version>1.0</version>
<vendor>IBM</vendor>
<configurationParameters/>
<configurationParameterSettings/>
+ <typeSystemDescription>
+ <imports>
+ <import location="DuccJobFlowControlTS.xml"/>
+ </imports>
+ </typeSystemDescription>
<capabilities>
<capability>
<inputs/>