주 머신 워크 플로에서 주어진 역할에 대한 가능한 전환 목록을 어떻게 얻을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/614969

문제

주어진 상태 기계 워크 플로에서 주어진 역할에 대한 가능한 전환을 어떻게 알 수 있습니까? 내 시나리오에서는 특정 역할 만 특정 활동을 수행 할 수있는 권한이 있습니다. 그 목록을 가져와야합니다. 도우미 수업 StateMachineWorkflowInstance 배우의 역할을 무시하고 가능한 모든 전환을 반환하기 때문에 여기서 도움이되지 않습니다.

여기서 도움을 주시면 감사하겠습니다.

감사합니다, 소크라테스.

도움이 되었습니까?

해결책

이 작업을 수행하는 직접적인 방법이없는 것 같습니다. 나는이 방법을 대략 솔루션에 따라 썼습니다. Ruurd Boeke의 블로그 . 가능한 이벤트 목록을 얻은 다음 사용자 역할로 실행할 수 있는지 살펴 봅니다. 그것은 주변의 일이지만 여전히 잘 작동합니다.

public string[] GetTransistions(string strUser)
{
    string[] strRoles = System.Web.Security.Roles.GetRolesForUser(strUser);
    List<string> strActivity = new List<string>();
    ReadOnlyCollection<WorkflowQueueInfo> queues = workflowInstance.GetWorkflowQueueData();
    foreach (WorkflowQueueInfo info in queues)
    {
        if (!info.QueueName.Equals("SetStateQueue"))
        {
            foreach (string subscribedActivity in info.SubscribedActivityNames)
            {
                HandleExternalEventActivity heea = workflowInstance.GetWorkflowDefinition().GetActivityByName(subscribedActivity) as HandleExternalEventActivity;

                #region check roles
                if (heea.Roles != null)
                {
                    foreach (WorkflowRole workflowRole in heea.Roles)
                    {
                        foreach (string strRole in strRoles)
                        {
                            if (workflowRole.Name.Equals(strRole))
                            {
                                strActivity.Add(heea.EventName);
                                //permissionLog += workflowRole.Name + " can perform " + heea.EventName + " Activity. ";
                            }
                        }
                    }
                }
                #endregion
            }
        }
    }
    return strActivity.ToArray();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top