예제 #1
0
 public HumanWorkProvider(HumanAvatar user, WorkAgent workAgent,
     WorkflowProvider workflow, IDecompositionService<WorkItem> decompService,
     GoalService goalService)
 {
     _user = user;
     _workflow = workflow;
     WorkAgent = workAgent;
     _decompService = decompService;
     _goalService = goalService;
     _workitemGoals = new Dictionary<WorkItem, List<Goal>>();
     _completedGoals = new Dictionary<WorkItem, List<Goal>>();
 }
예제 #2
0
        public static HumanWorkProvider MapWorkProviderFromNPC(BotAvatar npc, HumanAvatar human, 
            GoalService goalService, IDecompositionService<WorkItem> decompService)
        {
            HumanWorkProvider worker = new HumanWorkProvider
                (human, npc.WorkProvider.GetWorkAgent(), npc.WorkProvider.GetWorkflowProvider(),
                decompService, goalService);

            // Any currently processing tasks, remove
            npc.WorkProvider.GetWorkAgent().processing.Clear();

            // Now add all the tasks that had been started to the worker
            foreach (var workItem in npc.WorkProvider.GetWorkAgent().started)
            {
                worker.AddWork(workItem);
            }

            return worker;
        }
예제 #3
0
        public void Bind(HumanAvatar worklistOwner, string uuid)
        {
            UUID = uuid;
            UserName = worklistOwner.Name ?? worklistOwner.ActingName;
            var goals = worklistOwner.WorkProvider.GetGoals();

            foreach (var goal in goals)
            {
                var model = new WorkListItemModel();
                model.Bind(goal.Key, goal.Value);
                ProcessingWorkItems.Add(model);
            }

            foreach (var offered in worklistOwner.WorkProvider.WorkAgent.offered)
            {
                var model = new WorkListItemModel();
                model.Bind(offered, new List<Goal>());
                OfferedWorkItems.Add(model);
            }
        }