Export and Import from Primavera P6
dhtmlxGantt 라이브러리는 Gantt 차트의 데이터를 Primavera P6로 내보내는 것과 Primavera P6에서 Gantt 차트로 데이터를 가져오는 것을 지원합니다.
이 서비스는 무료로 사용할 수 있지만, 내보낸 파일에는 GPL 라이선스 하에 라이브러리의 워터마크가 포함됩니다. 라이선스를 구매하면 유효한 지원 기간(모든 PRO 라이선스의 경우 12개월) 동안 워터마크가 제거됩니다.
여러 가지 내보내기 서비스가 로컬 컴퓨터에 설치할 수 있도록 제공되어, Gantt 차트를 직접 Primavera P6로 내보낼 수 있습니다. 내보내기 서비스는 Gantt 패키지에 포함되어 있지 않다는 점을 유념하세요. 사용 조건에 대한 자세한 내용은 관련 문서를 참고하세요.
온라인 내보내기 서비스 제한 사항
내보내기 서비스는 처리 시간과 요청 크기에 제한이 있습니다.
시간 제한
내보내기 과정이 20초를 초과하면, 작업이 취소되고 다음과 같은 오류가 표시됩니다:
Error: Timeout trigger 20 seconds
여러 사용자가 동시에 Gantt 차트를 내보내는 경우, 처리 시간이 평소보다 오래 걸릴 수 있습니다. 그러나 각 사용자의 내보내기 요청에 소요되는 시간은 별도로 계산되므로, 이는 정상적인 동작입니다.
요청 크기 제한
공통 API 엔드포인트 **https://export.dhtmlx.com/gantt**는 모든 내보내기 메서드(exportToPDF, exportToPNG, exportToMSProject 등)를 처리하며, 최대 요청 크기는 10 MB입니다.
또한 MSProject 및 Primavera P6 내보내기/가져오기 서비스(exportToMSProject / importFromMSProject / exportToPrimaveraP6 / importFromPrimaveraP6)를 위한 전용 API 엔드포인트 **https://export.dhtmlx.com/gantt/project**도 있습니다. 이 엔드포인트는 최대 요청 크기 40 MB를 지원합니다.
내보내기 모듈 사용하기
대용량 차트 내보내기를 위해 독립 실행형 내보내기 모듈을 사용할 수 있습니다. 이 모듈은 Commercial, Enterprise, Ultimate 라이선스가 있으면 무료이며, 이 링크를 통해 별도로 구매할 수도 있습니다.
MS Project에서 내보내기 모듈 사용에 관한 자세한 내용은 이 가이드를 참고하세요. 이 모듈은 MS Project와 Primavera P6 모두에 대해 내보내기/가져오기를 지원합니다.
Primavera P6로 내보내기
Gantt 컴포넌트는 링크, 작업, 리소스를 Primavera P6로 내보낼 수 있습니다.
Gantt 차트에서 Primavera P6로 데이터를 내보내려면 다음 단계를 따르세요:
- export_api 플러그인을 plugins 문서에 설명된 대로 활성화하세요:
gantt.plugins({
export_api: true
});
Gantt 8.0 이전 버전에서는 온라인 내보내기 서비스를 활성화하려면 **https://export.dhtmlx.com/gantt/api.js**를 페이지에 포함해야 합니다. 예시:
<script src="codebase/dhtmlxgantt.js"></script>
<script src="https://export.dhtmlx.com/gantt/api.js"></script>
- exportToPrimaveraP6() 메서드를 사용하여 Gantt 차트의 데이터를 내보냅니다:
gantt.exportToPrimaveraP6();
이 메서드는 원격 서비스로 요청을 보내며, XML Project 파일을 생성하여 반환하거나 파일을 다운로드할 수 있는 URL을 제공합니다.
Export data : MS Project, PrimaveraP6, Excel & iCal
Primavera로 데이터를 내보낼 때, 프로젝트 작업의 Summary 속성이 true를 반환해야 올바르게 동작합니다:
gantt.exportToPrimaveraP6({
tasks: {
Summary: function (task) {
return !!gantt.hasChild(task.id);
},
CustomProperty: function (task) {
return task.custom_property;
},
SlateId: function (task) {
return task.id + "";
},
}
});
Related example: Custom properties for WBS tasks (PrimaveraP6's Summary tasks)
응답
내보내기 서비스의 응답은 다음과 같은 구조의 JSON 객체입니다:
{
data: {},
config: {},
resources: [],
worktime: {}
}
- data - id, open, parent, progress, start_date, text, resource 등의 속성을 포함하는 작업이 있는 gantt data object입니다. 날짜는 "%Y-%m-%d %H:%i" 형식의 문자열입니다.
- config - 프로젝트 파일에서 추출된 설정이 담긴 gantt configuration 객체입니다.
- resources - 프로젝트 파일의 리소스를 나타내는 (id: string, name:string, type:string) 객체 배열입니다.
- worktime - 프로젝트 캘린더의 근무 시간 설정을 담고 있는 객체입니다.
내보내기 설정
exportToPrimaveraP6() 메서드는 여러 가지 선택적 속성을 가진 객체를 인자로 받을 수 있습니다:
- name - (string) 내보내는 파일의 이름을 지정합니다(기본값: 'gantt.xml').
gantt.exportToPrimaveraP6({
name:'custom.xml'
});
- auto_scheduling - (boolean) 내보낸 프로젝트에서 작업의 일정 모드를 정의합니다. true로 설정하면 자동 일정, false(기본값)로 설정하면 수동 일정이 됩니다.
gantt.exportToPrimaveraP6({
auto_scheduling: false
});
- skip_circular_links - (boolean) 순환 링크를 제거할지 여부를 결정합니다. true(기본값)이면 제거, false이면 유지합니다.
gantt.exportToPrimaveraP6({
skip_circular_links: false
});
- project - (object) 내보내는 프로젝트 엔터티에 사용자 정의 속성을 할당할 수 있습니다.
gantt.exportToPrimaveraP6({
project: {
'Author': 'I am!',
'MinutesPerDay': function () {
return gantt.config.hours_per_day * 60;
}
}
});
이 속성들은 Project entity의" 속성에 해당합니다. 지원되는 속성 목록은 여기에서 확인할 수 있습니다. 값은 고정값이거나 내보내기 시 실행되는 함수일 수 있습니다.
- tasks - (object) 내보낸 작업 항목에 대한 사용자 정의 속성을 정의할 수 있습니다.
gantt.exportToPrimaveraP6({
tasks: {
'StartVariance': function (task) {
if (task.startVariance)
return task.startVariance;
else
return 0;
},
'PercentWorkComplete': function (task) {
return (task.progress + 0.1);
},
'Custom': function (task) {
return 'Custom value';
},
'Custom 2': 'My Custom value'
}
});
이 속성들은 Task entity에" 해당하며, 지원되는 속성 목록이 있습니다. 값은 고정값이거나 각 작업별로 호출되는 함수일 수 있습니다.
- data - (object) 출력 Gantt 차트에 사용할 사용자 정의 데이터 소스를 제공합니다.
start_date와 end_date는 날짜와 시간(%d-%m-%Y %H:%i)이 모두 포함된 형식이어야 합니다.
const customData = {
"data": [
{ "id": "10", "text": "Project #5", "start_date": "01-04-2025 00:00",
"duration": 3, "order": 10, "progress": 0.4, "open": true,
"end_date": "04-04-2025 00:00", "parent": 0
},
{ "id": "1", "text": "Task #67", "start_date": "02-04-2025 00:00",
"duration": 2, "order": 10, "progress": 0.6, "parent": "10",
"end_date": "04-04-2025 00:00"
},
{ "id": "2", "text": "Task #89", "start_date": "01-04-2025 00:00",
"duration": 2, "order": 20, "progress": 0.6, "parent": "10",
"end_date": "03-04-2025 00:00"
},
],
"links": [
{ "id": 1, "source": 1, "target": 2, "type": "1" },
]
}
gantt.exportToPrimaveraP6({
data: customData
});
Related example: Gantt. Export custom data
))
- callback - (function) 생성된 XML 파일의 다운로드 URL을 받아올 때 사용할 수 있습니다. 콜백은 url 속성이 포함된 JSON 객체를 인자로 받습니다:
gantt.exportToPrimaveraP6({
callback: function(res){
alert(res.url);
}
});
- resources - (array) Primavera P6 파일에 리소스 목록을 내보낼 수 있습니다.
gantt.exportToPrimaveraP6({
resources: [
{"id":"1","name":"John","type":"work"},
{"id":"2","name":"Mike","type":"work"},
{"id":"3","name":"Anna","type":"work"}
]
});
리소스 타입은 "work", "cost", "material" 중 하나일 수 있습니다. 리소스 할당은 작업 설정의 ResourceAssignments 속성을 통해 지정합니다:
var users = [// resources
{key:'0', label: "N/A"},
{key:'1', label: "John"},
{key:'2', label: "Mike"},
{key:'3', label: "Anna"}
];
gantt.exportToPrimaveraP6({
resources: users
.filter(function(u){
if(u.key === '0')//기본 옵션 제외
return false;
return true;
})
.map(function(u){
return {
id: u.key,
name: u.label,
type: "work"
};
}),
tasks: {
ResourceAssignments: function(task){ /*!*/
return task.user; /*!*/
} /*!*/
}
});
ResourceAssignments 속성은 작업 객체를 받아 문자열/숫자 또는 문자열/숫자 배열을 반환하는 함수일 수 있습니다:
tasks: {
ResourceAssignments: function(task){
return [task.user, task.office];
}
}
Related example: Export Gantt with resources to Primavera P6
- server - (string) 내보내기 요청의 API 엔드포인트를 지정합니다. 로컬 내보내기 서비스를 설치한 경우 사용할 수 있습니다. 기본값은 **https://export.dhtmlx.com/gantt**입니다.
gantt.exportToPrimaveraP6({
server:"https://myapp.com/myexport/gantt"
});