具有固定持续时间的 mpxj 项目 c# 资源分配

mpxj Project c# resource assignment with fixed duration

我正在使用 mpxj 库来构建 MS Project 计划。我想将资源分配给具有固定持续时间的任务,以便它每天显示偶数小时数。例如,如果任务为期 3 天,工作时间为 9 小时,则项目将显示每天 3 小时。

我尝试了所有方法但未能找到解决方案,这是我的代码:

Task task = file.addTask();                           
task.setName(name);
UID = java.lang.Integer.valueOf(c);
taskFielding.setUniqueID(UID);
mainTask.addChildTask(task, 2);
task.setActualStart(startdate);
task.setConstraintType(ConstraintType.MUST_START_ON);
task.setConstraintDate(startdate);
task.setEffortDriven(false);   
task.setType(TaskType.FIXED_DURATION);
task.setDuration(duration);
task.setActualDuration(durationFielding);
task.setManualDuration(durationFielding);
task.setOutlineNumber(outlinecount + "." + outlinesubcount);
task.setOutlineLevel(java.lang.Integer.valueOf(2));
ResourceAssignment resourceAssignment =         task.addResourceAssignment(assignedResource);
resourceAssignment.setWork(Duration.getInstance(15, TimeUnit.HOURS));
resourceAssignment.setActualWork(Duration.getInstance(5, TimeUnit.HOURS));
resourceAssignment.setRemainingWork(Duration.getInstance(10, TimeUnit.HOURS));
resourceAssignment.setStart(taskFielding.getStart());

您需要设置资源分配的 units 属性以减少您的资源每天可用的时间量。这是一个例子:

Resource assignedResource = file.addResource();
assignedResource.Name = "Assigned Resource";

Task task = file.addTask();
task.Name = "Whosebug Example Task";
task.Start = DateTime.Parse("2017-03-13").ToJavaDate();
task.Duration = Duration.getInstance(3, TimeUnit.DAYS);
task.Work = Duration.getInstance(15, TimeUnit.HOURS);
task.RemainingWork = Duration.getInstance(15, TimeUnit.HOURS);

double hoursPerDay = 8.0;
double hoursWorkedPerDay = 5.0;

ResourceAssignment resourceAssignment = task.addResourceAssignment(assignedResource);
resourceAssignment.Start = DateTime.Parse("2017-03-13").ToJavaDate();
resourceAssignment.Work = Duration.getInstance(15, TimeUnit.HOURS);
resourceAssignment.RemainingWork = Duration.getInstance(15, TimeUnit.HOURS);
resourceAssignment.Units = NumberHelper.getDouble((hoursWorkedPerDay / hoursPerDay) * 100.0);

这将创建一个持续时间为 3 天的任务,但每天只执行 5 小时的工作。

关键部分是计算单位属性的值。这里我们假设一个 8 小时的工作日(您可以将其设置为项目的一部分)。单位是百分比,所以我们计算我们想要工作的一天的分数(在本例中为 5 小时/8 小时)并乘以 100 得到一个百分比。