阅读原文
在java代码中直接访问逻辑流
在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
/**
* 调用逻辑构件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数组需要和逻辑流中定义的输入参数个数和类型一致。