Exportieren und Importieren aus Primavera P6

Mit der dhtmlxGantt-Bibliothek können Sie Daten aus Ihrem Gantt-Diagramm einfach in Primavera P6 exportieren oder Daten aus Primavera P6 in das Gantt-Diagramm importieren.

Der Exportdienst kann kostenlos genutzt werden, jedoch wird die resultierende Datei ein Wasserzeichen haben, wenn Sie die Bibliothek unter der GPL-Lizenz verwenden. Wenn Sie eine gültige PRO-Lizenz besitzen, wird der Export während Ihres Supportzeitraums (12 Monate für alle PRO-Lizenzen) wasserzeichenfrei sein.

Es gibt mehrere Exportdienste, die Sie auf Ihrem Computer einrichten können, um Gantt-Diagramme lokal nach Primavera P6 zu exportieren. Beachten Sie, dass diese Exportdienste nicht im Gantt-Paket enthalten sind. Einzelheiten zur Nutzung jedes Dienstes finden Sie im verwandten Artikel.

Einschränkungen des Online-Exportdienstes

Der Online-Exportdienst hat einige Einschränkungen hinsichtlich der Zeit und der Anfragengröße.

Zeitbegrenzungen

Wenn der Exportvorgang mehr als 20 Sekunden dauert, wird er abgebrochen und Sie sehen eine Fehlermeldung wie diese:

Error: Timeout trigger 20 seconds

Wenn mehrere Benutzer gleichzeitig Gantt-Diagramme exportieren, kann der Vorgang etwas länger dauern. Die für jede Benutzeranfrage aufgewendete Zeit wird jedoch individuell berechnet.

Anfragengrößenbegrenzungen

Der allgemeine API-Endpunkt https://export.dhtmlx.com/gantt wird für alle Exportmethoden verwendet (exportToPDF, exportToPNG, exportToMSProject, etc.). Die maximale Anfragengröße beträgt hier 10 MB.

Für die Export-/Importdienste von MS Project und Primavera P6 (exportToMSProject, importFromMSProject, exportToPrimaveraP6, importFromPrimaveraP6) steht ein dedizierter API-Endpunkt zur Verfügung: https://export.dhtmlx.com/gantt/project. Dieser Endpunkt erlaubt eine größere Anfragengröße von 40 MB.

Verwendung von Exportmodulen

Wenn Sie größere Diagramme verarbeiten müssen, sollten Sie das Standalone-Exportmodul verwenden. Dieses Modul ist kostenlos enthalten, wenn Sie eine Commercial, Enterprise oder Ultimate Lizenz besitzen. Alternativ können Sie es separat erwerben.

Weitere Details zur Verwendung des Exportmoduls für MS Project finden Sie in der Dokumentation. Dieses Modul unterstützt sowohl den Export als auch den Import für MS Project und Primavera P6.

Export nach Primavera P6

Das Gantt-Komponente ermöglicht den Export von Aufgaben, Verknüpfungen und Ressourcen nach Primavera P6.

Um Daten aus dem Gantt-Diagramm nach Primavera P6 zu exportieren, befolgen Sie diese Schritte:

  • Aktivieren Sie das export_api Plugin über die plugins Methode, wenn Sie den Online-Exportdienst verwenden:
gantt.plugins({
    export_api: true
});

Für Gantt-Versionen älter als 8.0 müssen Sie https://export.dhtmlx.com/gantt/api.js in Ihre Seite einbinden, um den Online-Exportdienst zu nutzen. Zum Beispiel:

<script src="codebase/dhtmlxgantt.js"></script>
<script src="https://export.dhtmlx.com/gantt/api.js"></script>

gantt.exportToPrimaveraP6();

Diese Methode sendet eine Anfrage an den Remote-Dienst, der entweder eine XML-Projektdatei generiert oder einen Link zum Herunterladen der Datei bereitstellt.

Related sample:  Export data : MS Project, PrimaveraP6, Excel & iCal

Beim Exportieren von Daten nach Primavera stellen Sie sicher, dass die Summary-Eigenschaft für Projektaufgaben auf true gesetzt ist, um eine ordnungsgemäße Funktionalität zu gewährleisten:

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 sample:  Custom properties for WBS tasks (PrimaveraP6's Summary tasks)

Antwort

Die Antwort enthält ein JSON-Objekt mit folgender Struktur:

{
    data: {},
    config: {},
    resources: [],
    worktime: {}
}
  • data: Ein Gantt-Datenobjekt mit Aufgabendetails wie id, open, parent, progress, start_date, text und resource. Daten sind als Zeichenfolgen im Format "%Y-%m-%d %H:%i" formatiert.
  • config: Ein Gantt-Konfigurationsobjekt mit Einstellungen, die aus der Projektdatei abgeleitet wurden.
  • resources: Ein Array von Objekten, jedes mit Eigenschaften wie id, name und type, das die Liste der Ressourcen aus der Projektdatei darstellt.
  • worktime: Ein Objekt mit Arbeitszeiteinstellungen aus dem Projektkalender.

Export-Einstellungen

Die exportToPrimaveraP6() Methode ermöglicht den Export von Daten durch Übergabe eines Objekts mit mehreren optionalen Eigenschaften:

  • name - (string) Legt den Namen für die exportierte Datei fest. Standardmäßig wird sie 'gantt.xml' genannt.
gantt.exportToPrimaveraP6({
    name: 'custom.xml'
});
  • auto_scheduling - (boolean) Bestimmt den Planungsmodus für Aufgaben im exportierten Projekt. Wenn auf true gesetzt, werden Aufgaben als automatisch geplant markiert. Wenn auf false gesetzt, werden Aufgaben manuell geplant (Standard).
gantt.exportToPrimaveraP6({
    auto_scheduling: false
});
  • skip_circular_links - (boolean) Gibt an, ob zirkuläre Verknüpfungen ausgeschlossen werden sollen. Standardmäßig ist es true, was bedeutet, dass zirkuläre Verknüpfungen entfernt werden. Setzen Sie es auf false, wenn Sie sie behalten möchten.
gantt.exportToPrimaveraP6({
    skip_circular_links: false
});
  • project - (object) Ermöglicht die Definition benutzerdefinierter Eigenschaften für die exportierte Projekteigenschaft.
gantt.exportToPrimaveraP6({
    project: {
        'Author': 'I am!',
        'MinutesPerDay': function () {
            return gantt.config.hours_per_day * 60;
        }
    }
});

Die Eigenschaften in diesem Objekt stimmen mit den entsprechenden Eigenschaften der Projekteigenschaft überein. Die Liste der unterstützten Eigenschaften finden Sie hier. Diese Eigenschaften können entweder feste Werte haben oder Funktionen sein, die während des Exports ausgeführt werden.

  • tasks - (object) Ermöglicht die Definition benutzerdefinierter Eigenschaften für die exportierten Aufgabenposten.
gantt.exportToPrimaveraP6({
   tasks: {
        'StartVariance': function (task) {
           return task.startVariance || 0;
        },
        'PercentWorkComplete': function (task) {
           return task.progress + 0.1;
        },
        'Custom': function (task) {
           return 'Custom value';
        },
        'Custom 2': 'My Custom value'
    }
});

Die Eigenschaften in diesem Objekt stimmen mit den entsprechenden Eigenschaften der Aufgabeneigenschaft überein. Die Liste der unterstützten Eigenschaften finden Sie hier. Diese können feste Werte oder Funktionen sein, die für jede Aufgabe während des Exports ausgeführt werden.

  • data - (object) Ermöglicht Ihnen die Angabe einer benutzerdefinierten Datenquelle für das exportierte Gantt-Diagramm.

Stellen Sie sicher, dass start_date und end_date sowohl Datum als auch Uhrzeit enthalten (%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 sample:  Gantt. Export custom data

  • callback - (function) Wenn Sie eine URL zum Herunterladen der generierten XML erhalten möchten, verwenden Sie die callback Eigenschaft. Sie erhält ein JSON-Objekt mit einer url Eigenschaft.
gantt.exportToPrimaveraP6({
    callback: function(res){
        alert(res.url);
    }
});
  • resources - (array) Ermöglicht Ihnen die Angabe einer Liste von Ressourcen in der exportierten Primavera P6-Datei.
gantt.exportToPrimaveraP6({
    resources: [
        {"id":"1","name":"John","type":"work"},
        {"id":"2","name":"Mike","type":"work"},
        {"id":"3","name":"Anna","type":"work"}
    ]
});

Ressourcentypen können "work", "cost" oder "material" sein. Sie können Ressourcenaufgaben über die ResourceAssignments Eigenschaft in der Aufgaben-Konfiguration angeben:

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){
            return u.key !== '0'; // skip the default option
        })
        .map(function(u){
            return {
                id: u.key,
                name: u.label,
                type: "work"
            };
        }),
    tasks: {
        ResourceAssignments: function(task){              return task.user;                          }                                          }
});

Die ResourceAssignments Eigenschaft sollte eine Funktion sein, die ein Aufgabenobjekt nimmt und eine Zeichenfolge/Zahl oder ein Array davon zurückgibt.

tasks: {
    ResourceAssignments: function(task){
        return [task.user, task.office];
    }
}

Related sample:  Export Gantt with resources to Primavera P6

  • server - (string) Gibt den API-Endpunkt für die Anfrage an. Sie können dies für eine lokale Exportdienstinstallation verwenden. Standardwert: https://export.dhtmlx.com/gantt.
gantt.exportToPrimaveraP6({
    server: "https://myapp.com/myexport/gantt"
});

Import aus Primavera P6

Um eine XML- oder XER-Datei zu konvertieren, senden Sie die folgende Anfrage an den Exportdienst:

  • Request URL: https://export.dhtmlx.com/gantt
  • Request Method: POST
  • Content-Type: multipart/form-data

Parameter beinhalten:

  • file: Eine XER- oder XML-Primavera P6-Datei.
  • type: "primaveraP6-parse".
  • data: (optional) Ein JSON-String mit Einstellungen.

Beispiel:

<form action="https://export.dhtmlx.com/gantt" method="POST" 
    enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="hidden" name="type" value="primaveraP6-parse">
    <button type="submit">Get</button>
</form>

Alternativ können Sie die Client-seitige API verwenden:

gantt.importFromPrimaveraP6({
    data: file,
    taskProperties: ["Notes", "Name"],
    callback: function (project) {
        if (project) {
            gantt.clearAll();
            if (project.config.duration_unit) {
                gantt.config.duration_unit = project.config.duration_unit;
            }                    
            gantt.parse(project.data);
        }
     }
});

Related sample:  Import Primavera P6 file

Hier ist file eine File Instanz, die eine XML- oder XER-Projektdatei enthält.

gantt.importFromPrimaveraP6 erfordert Unterstützung durch die HTML5 File API.


Antwort

Die Antwort enthält ein JSON-Objekt mit folgender Struktur:

{
    data: {},
    config: {},
    resources: [],
    worktime: {}
}
  • data: Ein Gantt-Datenobjekt. Jede Aufgabe enthält Eigenschaften wie id, open, parent, progress, start_date, text und resource. Daten sind als "%Y-%m-%d %H:%i" formatiert.
  • config: Ein Gantt-Konfigurationsobjekt mit Einstellungen aus der Projektdatei.
  • resources: Ein Array von Objekten, die Ressourcen repräsentieren, jedes mit Eigenschaften wie id, name und type.
  • worktime: Ein Objekt mit Arbeitszeiteinstellungen aus dem Projektkalender.

Import-Einstellungen

Festlegen der Dauer-Einheit

Sie können die erwartete Dauer-Einheit mit der durationUnit Eigenschaft ("minute", "hour", "day", "week", "month", "year") definieren.

<form action="https://export.dhtmlx.com/gantt" method="POST" 
    enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="hidden" name="type" value="primaveraP6-parse">
    <input type="hidden" name="data" 
        value="{ \"durationUnit\": \"hour\" }" />
    <button type="submit">Get</button>
</form>

oder

gantt.importFromPrimaveraP6({
    data: file,
    durationUnit: "hour",
    callback: function(project){}
});

Abrufen von Projekteigenschaften

Um Projektfelder abzurufen, fügen Sie den projectProperties Parameter mit einem Array der gewünschten Felder hinzu. Diese Felder werden in die config Eigenschaft der Antwort extrahiert. Die Liste der unterstützten Eigenschaften finden Sie hier.

<form action="https://export.dhtmlx.com/gantt" method="POST" 
    enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="hidden" name="type" value="primaveraP6-parse">
    <input type="hidden" name="data" 
        value="{ \"projectProperties\": [\"Author\", \"Title\"] }" />
    <button type="submit">Get</button>
</form>

oder

gantt.importFromPrimaveraP6({
    data: file,
    durationUnit: "hour",
    projectProperties: ["Author", "Title"],
    callback: function(project){
        var config = project.config;
        alert(config.$custom_properties.Author);
    }
});

Abrufen von Aufgabeneigenschaften

Um Aufgabenfelder abzurufen, verwenden Sie den taskProperties Parameter mit einem Array der erforderlichen Felder. Diese Felder werden in die data Eigenschaft der Antwort extrahiert. Unterstützte Eigenschaften sind hier aufgelistet.

<form action="https://export.dhtmlx.com/gantt" method="POST" 
    enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="hidden" name="type" value="primaveraP6-parse">
    <input type="hidden" name="data" 
        value="{ \"taskProperties\": [\"Contact\", \"Priority\"] }" />
    <button type="submit">Get</button>
</form>

oder

gantt.importFromPrimaveraP6({
    data: file,
    durationUnit: "hour",
    taskProperties: ["Contact", "Priority"],
    callback: function(project){
        var config = project.config;
        alert(config.$custom_properties.Author);
        gantt.parse(project.data);
    }
});
gantt.attachEvent("onTaskLoading", function(task) {
    if (task.$custom_data) {
        task.contact = task.$custom_data["Contact"];
        task.priority = task.$custom_data["priority"];
        delete task.$custom_data;
    }
    return true;
});

Abrufen von Aufgabentypen

Zur Bestimmung des Aufgabentyps ist die Logik einfach: Aufgaben, die als Projekt gekennzeichnet sind, haben die Eigenschaft Summary: "1", während Aufgaben, die als Meilenstein gekennzeichnet sind, die Eigenschaft Milestone: "1" haben. Die Idee ist, Daten zu importieren, die diese Eigenschaften enthalten, und dann den Aufgabentyp entsprechend festzulegen.

So sieht der Import-Funktionsaufruf aus:

gantt.importFromPrimaveraP6({
    data: file,
    taskProperties: [
        "Summary", 
        "Milestone",
    ],
    callback: function (project) {
        if (project) {
            console.log(project)
            gantt.clearAll();
            if (project.config.duration_unit) {
                gantt.config.duration_unit = project.config.duration_unit;
            }
            console.log('import: ', project.data);
            gantt.parse(project.data);
        }
    }
});

Sobald die Daten importiert sind, können Sie Aufgabentypen basierend auf den erhaltenen Eigenschaften anpassen. Hier ist ein Beispiel:

gantt.attachEvent("onTaskLoading", function (task) {
    if (task.$custom_data) {
        if (task.$custom_data.Summary == "1") {
            task.type = "project";
        }
        if (task.$custom_data.Milestone == "1") {
            task.type = "milestone";
        }
        // delete task.$custom_data;
    }
    return true;
});

Related sample:  Gantt. Import Primavera P6 files. Get task type from properties

Begrenzungen der Anfragengröße und Importieren großer Dateien

Es stehen zwei API-Endpunkte zur Verfügung, um den Export-/Importdienst von Primavera P6 zu handhaben:

  • https://export.dhtmlx.com/gantt - Dies ist der Standardendpunkt für alle Exportmethoden (exportToPDF, exportToPNG, exportToPrimaveraP6, etc.). Die maximale Anfragengröße beträgt 10 MB.
  • https://export.dhtmlx.com/gantt/project - Dieser Endpunkt ist speziell für MSProject und Primavera P6 Dienste (exportToMSProject, importFromMSProject, exportToPrimaveraP6, importFromPrimaveraP6) ausgelegt. Er unterstützt Anfragen bis zu 40 MB.

Der Endpunkt kann mit der server Eigenschaft im Exportkonfigurationsobjekt festgelegt werden:

gantt.importFromPrimaveraP6({
    server:"https://export.dhtmlx.com/gantt",
    data: file,
    callback: function(project){
       // some logic
    }
});

Wenn kein Endpunkt angegeben ist, wird der Standardendpunkt https://export.dhtmlx.com/gantt verwendet. Zum Beispiel funktioniert der folgende Aufruf genauso wie der obige:

gantt.importFromPrimaveraP6({
    data: file,
    callback: function(project){
       // some logic
    }
});

Für die Bearbeitung größerer Projekte (über 4 MB) kann der zweite Endpunkt verwendet werden:

gantt.importFromPrimaveraP6({
    server:"https://export.dhtmlx.com/gantt/project",
    data: file,
    callback: function(project){
       // some logic
    }
});

Dieser Endpunkt unterstützt Anfragen bis zu 40 MB und ist speziell für Primavera P6 Exporte und Importe konzipiert. Beachten Sie, dass er nur für Primavera P6-bezogene Operationen anwendbar ist.

Die Verwendung dieses Endpunkts für andere Methoden, wie gantt.exportToPDF({server:"https://export.dhtmlx.com/gantt/project"}), führt zu einem Serverfehler.

Zurück nach oben