*/
public void action(final ActivityStartEvent event, final ActivityInst activityInst, ActivityElement activityXml, final IAction action) {
String invokePattern = activityXml.getInvokePattern();
final String transactionType = activityXml.getTransactionType();
ExecutorService executor = event.getProcessEngine().getExecutorService();
if(Constants.ACT_AUTO_CALL_SYN.equalsIgnoreCase(invokePattern)) {
Object result = null;
//同步调用可以返回运行结果,前提是要设置返回运行结果。
try {
result = executor.execute(new Callable<Object>() {
@Override
public Object call() throws Exception {
if(Constants.ACT_TRANSACTION_JOIN.equalsIgnoreCase(transactionType)) {
return action.execute(event, activityInst);
} else {
return executeLogicInNewTransaction(event, activityInst, action);
}
}
}, invokePattern);
} catch (Exception e) {
handleException(e, event, activityXml);
}
//执行结果放入相关数据区。
saveResultRelaData(event, result, activityXml);
} else {
//异步执行使用suspend事务。忽略异常
try {
executor.execute(new Callable<Object>() {
public Object call() throws Exception {
return executeLogicInNewTransaction(event, activityInst, action);
}
}, invokePattern);
} catch (Exception e) {