
package org.jeecg.modules.workFlow.flowlong.engine.impl;

import org.jeecg.modules.workFlow.flowlong.engine.TaskAccessStrategy;
import org.jeecg.modules.workFlow.flowlong.engine.assist.ObjectUtils;
import org.jeecg.modules.workFlow.flowlong.engine.entity.FlwTaskActor;

import java.util.List;
import java.util.Objects;

/**
 * 基于用户或组（角色、部门等）的访问策略类
 * 该策略类适合组作为参与者的情况
 *

 */
public class GeneralAccessStrategy implements TaskAccessStrategy {

    /**
     * 如果创建人ID所属的组只要有一项存在于参与者集合中，则表示可访问
     */
    @Override
    public FlwTaskActor isAllowed(String userId, List<FlwTaskActor> taskActors) {
        if (null == userId || ObjectUtils.isEmpty(taskActors)) {
            return null;
        }
        // 参与者 ID 默认非组，作为用户ID判断是否允许执行
        return taskActors.stream().filter(t -> Objects.equals(t.getActorId(), userId))
                .findFirst().orElse(null);
    }
}
