주 머신 워크 플로에서 주어진 역할에 대한 가능한 전환 목록을 어떻게 얻을 수 있습니까?
-
03-07-2019 - |
문제
주어진 상태 기계 워크 플로에서 주어진 역할에 대한 가능한 전환을 어떻게 알 수 있습니까? 내 시나리오에서는 특정 역할 만 특정 활동을 수행 할 수있는 권한이 있습니다. 그 목록을 가져와야합니다. 도우미 수업 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();
}
제휴하지 않습니다 StackOverflow