private static Future invokeAnyOf()

in core/src/main/java/com/alibaba/smart/framework/engine/util/ParallelGatewayUtil.java [145:171]


    private static Future<ExecutionContext> invokeAnyOf(ExecutorService pool, List<PvmActivityTask> tasks, long timeout,
                                                   boolean ignoreTimeout) throws Exception {

        ExecutionContext pvmActivity = null;
        Exception ex = null;

        // 不处理超时的情况
        if (timeout <= 0) {
            pvmActivity = pool.invokeAny(tasks);
        } else {
            // 处理timeout的方式
            try {
                pvmActivity = pool.invokeAny( tasks, timeout, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                throw e;
            } catch (ExecutionException e) {
                throw e;
            } catch (TimeoutException e) {
                if (!ignoreTimeout) {
                    throw e;
                }
                ex = e;
            }
        }

        return new CompletedFuture<ExecutionContext>(pvmActivity, ex);
    }