[]
        
(Showing Draft Content)

리소스 및 할당

간트 시트 리소스 기능을 사용하면 작업, 일정, 리소스를 효율적으로 관리할 수 있습니다. 간트 시트 리소스를 사용하면 각 작업에 어떤 리소스를 할당할지 지정하고, 여러 작업을 다양한 리소스에 할당할 수 있습니다.

프로젝트에 필요한 모든 리소스를 간트 시트에 나열하고 작업과 연결함으로써 작업의 진행 상황을 보다 정확하게 추정하고 추적할 수 있습니다. 또한, 리소스의 할당과 활용을 최적화함으로써 프로젝트의 효율성과 효과를 높이고 비용을 적절히 관리할 수 있습니다.

다음은 간트 시트 리소스 기능에 대해 자세히 설명합니다.

리소스 로드하기

리소스 기능을 사용하려면 먼저 리소스 및 할당(Assignment)에 대한 관련 데이터 소스를 설정하여 필요한 관계를 생성해야 합니다.

작업(Task), 할당(Assignment), 리소스(Resources) 테이블을 관계로 연결하여 리소스를 추가할 수 있습니다. 또한, Task와 Assignment 테이블 간의 관계에는 source name과 target name이 있어야 합니다. Resources 열은 설정된 관계로부터 직접 리소스 이름을 가져올 수 있습니다.

다음 샘플 코드는 Resources 열에 드롭다운 상자를 추가하는 TaskResources 데이터 유형을 설정하는 방법을 보여줍니다.

dataManager.addRelationship(assignmentTable, "taskId", "task", taskTable, "id", "taskId");
dataManager.addRelationship(assignmentTable, "resourceId", "resource", resourceTable, "id", "assignment");
ganttView = taskTable.addView("ganttView", [
    { value: "id", caption: "ID", width: 60 },
    { value: "parentId", caption: "PID", width: 60 },
    { value: "taskNumber", caption: "Task Number", width: 120 },
    { value: "mode", caption: "Mode", width: 65 },
    { value: "name", caption: "Task Name", width: 200 },
    { value: "duration", caption: "Duration", width: 90 },
    { value: "predecessors", caption: "Predecessors", width: 120 },
    { value: "taskId.resource.name", caption: "Resources Name", dataType: "TaskResources", width: 300 },
]);
ganttView.fetch().then(function() {
    ganttSheet.bindGanttView(ganttView);
});

위 코드의 출력 결과는 아래 이미지와 같이 간트 시트 상단에 해당 **리소스 이름(Resources Name)**을 표시합니다.


image

리소스 할당 변경하기

간트 시트에서는 Resources 열을 사용하여 리소스를 할당할 수 있습니다.

간트 시트의 Resources 열에는 모든 리소스의 내용이 표시됩니다.

image


리소스 이름 열이 있고 리소스 테이블이 바인딩되어 있으면, 현재 열의 셀 유형은 드롭다운으로 모든 리소스를 표시합니다. 드롭다운을 사용하여 활성 작업에 리소스를 추가하거나 업데이트할 수 있습니다. 모든 할당 업데이트는 Assignment 테이블의 변경으로 이어집니다. 간트 시트는 현재 작업을 여러 개의 insert 및 remove 동작으로 나눈 후 Assignment 테이블에 필요한 변경 내용을 저장합니다.

또한, 간트 시트에서 작업과 리소스를 삭제할 수도 있으며, 이 경우 여러 관련 할당이 동시에 삭제될 수 있습니다.

Assignment 변경 사항 제출하기

모든 변경 작업이 완료되면 Assignment에 대한 변경 사항을 제출해야 합니다. 리소스가 없는 경우에는 현재 뷰만 변경되며, 리소스가 추가되었을 경우 Assignment 정보도 함께 제출되어야 하며, Task 정보와 Assignment 정보가 함께 GanttSheet.submitChanges를 통해 제출되어야 합니다.

리소스 업데이트

Resources 테이블은 TableSheet에서만 변경할 수 있습니다. 간트 시트에 사용된 리소스 내용을 업데이트하려면 현재 수정된 내용을 데이터 소스에 제출한 후 해당 내용을 다시 불러와야 합니다.

Resources 테이블이 최신 변경 내용을 데이터베이스에 커밋한 경우에만, 간트 시트는 다시 데이터를 불러와 Resources 열의 내용을 정확하게 반영할 수 있습니다.

할당 작업 시간 설정하기

작업에 리소스를 할당하는 것은 작업의 기간에는 영향을 주지 않지만, 해당 작업의 작업 시간(Working Time)을 증가시킵니다.

작업 시간은 현재 작업에 할당된 모든 리소스의 작업량을 나타내며, 기본 단위는 시간(Hour)입니다.

image


작업 시간 열을 추가하려면 뷰에 workTime이라는 이름의 열을 추가해야 합니다. 예를 들어, 작업 기간이 1일이고 2명의 리소스가 동시에 작업하는 경우, 작업 시간은 2일이며, 일일 작업 시간이 8시간일 경우 총 작업 시간은 16시간이 됩니다.

var view = taskTable.addView("ganttView1", [
    ...
    { value: "workTime" },
    ...
]);

참고:

  • 일반 작업에서는 작업 시간 = 기간 × 리소스 수

  • 요약 작업에서는 작업 시간 = (기간 × 리소스 수) + 하위 노드 작업 시간

  • 요약 작업에 리소스가 없을 경우, 작업 시간 = 모든 하위 노드 작업 시간의 합계


SpreadJS 디자이너 사용하기

SpreadJS 디자이너에서는 다음과 같은 단계로 간트시트 리소스를 추가하고 업데이트할 수 있습니다.

  1. 데이터(DATA) 탭 클릭 > 데이터원본(DataSource) 추가

  2. 데이터원본(DataSource) 창에서 Task, Resources, Assignment 테이블 추가

    image


  3. Task 및 Assignment 추가

  4. taskId 열에서 관계 추가

    image


  5. Task 테이블의 id 열을 기본 키로 설정

    image


  6. 리소스 및 할당 추가

  7. resourceId 열에서 관계 추가

    image


  8. Resources 테이블의 id 열을 기본 키로 설정

    image


  9. 작업 시간(Work Time) 열 추가

    image


  10. 리소스(Resources) 열 추가

    image


    리소스 열의 값은 "TaskTable_id.AssignmentTable_resourceId.name" 형식이며, 이는 Task 테이블의 대상 관계명이 Assignment 테이블의 소스 관계명을 가리킨다는 의미입니다.


  11. 리소스 포함 간트 시트 추가

    image


  12. 리소스 업데이트

    리소스 열은 계산 열로 추가되었기 때문에 읽기 전용입니다. 리소스를 업데이트하려면 읽기 전용 상태를 해제해야 합니다.

    image