在java代码中可以调用所有的逻辑流,包括公有和私有的。
说明
java代码中直接访问逻辑流不能脱离EOSServer环境,比如在单独的main函数中是无法调用的。
在某些场景下,需要在java代码中直接访问逻辑流,可以通过下面几个步骤来完成:
获得逻辑流构件实例 com.eos.engine.component.ILogicComponent comp = com.primeton.ext.engine.component.LogicComponentFactory.create("逻辑构件全名称"); 逻辑构件全名称如:com.primeton.samples.base.logicflow.ScoreManager通过逻辑流构件调用逻辑流 ? Object[] params = new Object[size]; //assign params' value; ...... Object[] returnValues = comp.invoke(logicName, params); //process return values 代码示例:参见com.primeton.samples.base.logicflow.javaCall.JavaCallLogic.java中的例子。 ? /** * 调用逻辑构件ScoreManager下面的逻辑流sendEMail * * 需要为逻辑流准备好输入的参数,返回值是一个Object[] * * @return Object[] * @throws Throwable */ public Object[] callLogicBusiness() throws Throwable { Object[] result = null ; // 逻辑构件名称 String componentName = "com.primeton.samples.base.logicflow.ScoreManager" ; // 逻辑流名称 String operationName = "sendEMail" ; ILogicComponent logicComponent = LogicComponentFactory .create(componentName); int size = 1 ; // 逻辑流的输入参数 Object[] params = new Object[size]; params[ 0 ] = new Customer(); result = logicComponent.invoke(operationName, params); // 逻辑流的返回值 return result; }说明
ILogicComponent的invoke方法中的第2个参数params数组需要和逻辑流中定义的输入参数个数和类型一致。