Baca Gantt Chart of Project menggunakan Java

MS Project adalah perangkat lunak manajemen proyek yang populer, banyak digunakan untuk mengatur, mengelola, dan melacak aktivitas proyek secara efisien. Ini memungkinkan pembuatan tugas, menambahkan sumber daya, mengalokasikan tugas ke sumber daya, memantau kemajuan, dan mengelola aktivitas terkait anggaran. Tampilan bagan Gantt adalah tampilan default proyek. Ini mencantumkan tugas proyek dan menunjukkan hubungan mereka satu sama lain. Itu juga menunjukkan jadwal proyek menggunakan Gantt bar. Pada artikel ini, kita akan mempelajari cara membaca Gantt chart dari proyek MS menggunakan Java.

Topik-topik berikut akan dibahas dalam artikel ini:

Apa itu Gantt Chart di Microsoft Project

Bagan Gantt adalah jenis bagan batang yang menunjukkan jadwal proyek. Ini adalah representasi grafis dari tugas-tugas proyek terhadap waktu dan menawarkan pandangan sekilas dari keseluruhan proyek. Tampilan bagan Gantt di Microsoft Project menunjukkan hal berikut:

  • Jadwal proyek
  • Perkiraan waktu
  • Sumber daya proyek & anggota tim
  • Prioritas tugas
  • Ketergantungan tugas

Java API untuk Membaca Gantt Chart of Project

Untuk membaca tampilan bagan Gantt Proyek dari file MPP, kita akan menggunakan API Aspose.Tasks for Java. Ini memungkinkan pembuatan, pengeditan, atau manipulasi file Microsoft Project secara terprogram dalam aplikasi Java. Kelas Project dari API mewakili sebuah proyek. Ini adalah kelas utama yang memaparkan berbagai metode untuk melakukan fungsi yang berbeda. Itu juga memungkinkan membaca salah satu format manajemen proyek yang didukung seperti MPP, MPT, MPX, dan XML. Kelas GanttChartView API mewakili tampilan bagan Gantt. Itu memaparkan berbagai properti dan metode untuk bekerja dengan bagan Gantt secara terprogram.

Harap unduh JAR API atau tambahkan konfigurasi pom.xml berikut dalam aplikasi Java berbasis Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tasks</artifactId>
    <version>22.5</version>
    <classifier>jdk18</classifier>
</dependency>

Baca Gantt Chart View dan Retrieve Bar Styles

Kelas GanttBarStyle API mewakili gaya bar yang digunakan oleh MS Project dalam tampilan bagan Gantt. Kita dapat membaca tampilan Gantt chart dan mengambil bar style dengan mengikuti langkah-langkah berikut:

  1. Pertama, muat file proyek menggunakan kelas Proyek.
  2. Selanjutnya, dapatkan tampilan default dari ViewCollection dengan indeksnya.
  3. Kemudian, buat instance kelas GanttChartView dan tampilan typecast.
  4. Secara opsional, baca properti dasar dan tampilkan data.
  5. Setelah itu, dapatkan daftar gaya batang dari tampilan bagan Gantt menggunakan getBarStyles().
  6. Terakhir, ulangi gaya bar sebagai objek kelas GanttBarStyle dan tampilkan nilai.

Contoh kode berikut menunjukkan cara membaca gaya batang tampilan bagan Gantt di Jawa.

public static void main(String[] args) throws Exception
{
    // Path ke direktori dokumen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Muat proyek
    Project project = new Project(dataDir + "Project.mpp");

    // Dapatkan tampilan default sebagai GanttChartView
    View view = project.getViews().toList().get(0);
    GanttChartView gcView = (GanttChartView) view;

    // Menampilkan informasi dasar
    System.out.println("Bar Rounding: " + gcView.getBarRounding());
    System.out.println("Show Bar Splits: " + gcView.getShowBarSplits());
    System.out.println("Show Drawings: " + gcView.getShowDrawings());
    System.out.println("RollUp Gantt Bars: " + gcView.getRollUpGanttBars());
    System.out.println("Hide Rollup Bars When Summary Expanded: " + gcView.getHideRollupBarsWhenSummaryExpanded());
    System.out.println("Bar Size: " + gcView.getBarSize());
    System.out.println("Bar Styles count: " + gcView.getBarStyles().size());
    System.out.println("-----------------------------------------------");

    // Tampilkan gaya bilah
   for (GanttBarStyle barStyle : gcView.getBarStyles())
    {	
      System.out.println("Row: " +  barStyle.getRow());
        System.out.println("Name: " +  barStyle.getName());
        System.out.println("ShowFor: " +  barStyle.getShowForTaskUid());
        System.out.println("From:" +  getbarStylesFromToName(barStyle.getFrom()));
        System.out.println("To:" +   getbarStylesFromToName(barStyle.getTo()));
        System.out.println("Middle Shape:" +   getbarStylesMiddleShapeName(barStyle.getMiddleShape()));
        System.out.println("Middle Shape Color:" + barStyle.getMiddleShapeColor());
        System.out.println("Start Shape:" +   getbarStylesShapeName(barStyle.getStartShape()));
        System.out.println("End Shape:" +   getbarStylesShapeName(barStyle.getEndShape()));
        System.out.println("End Shape Color:" + barStyle.getEndShapeColor());
        System.out.println("-----------------------------------------------");
    }
}

// Fungsi ini mengembalikan nama Bidang
private static String getbarStylesFromToName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = Field.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Fungsi ini mengembalikan nama bentuk Tengah
private static String getbarStylesMiddleShapeName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = GanttBarMiddleShape.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Fungsi ini mengembalikan nama bentuk Awal atau Akhir
private static String getbarStylesShapeName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = GanttBarEndShape.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
Bar Rounding: true
Show Bar Splits: true
Show Drawings: true
RollUp Gantt Bars: false
Hide Rollup Bars When Summary Expanded: false
Bar Size: 3
Bar Styles count: 40
-----------------------------------------------
Row: 1
Name: Task
ShowFor: null
From:TaskStart
To:TaskFinish
Middle Shape:RectangleBar
Middle Shape Color:java.awt.Color[r=0,g=0,b=255]
Start Shape:NoBarEndShape
End Shape:NoBarEndShape
End Shape Color:java.awt.Color[r=0,g=0,b=0]
-----------------------------------------------
...

Baca Garis Kisi Tampilan Bagan Gantt di Jawa

Kelas Garis Kisi API mewakili garis kisi yang muncul dalam tampilan bagan Gantt. Kita dapat membaca warna, interval, pola, dan jenis garis grid dengan mengikuti langkah-langkah berikut:

  1. Pertama, muat file proyek menggunakan kelas Proyek.
  2. Selanjutnya, dapatkan tampilan default dari ViewCollection dengan indeksnya.
  3. Kemudian, buat instance kelas GanttChartView dan tampilan typecast.
  4. Setelah itu, dapatkan daftar garis Grid dari tampilan bagan Gantt menggunakan getGridlines().
  5. Terakhir, lewati garis grid sebagai objek kelas Gridlines dan tampilkan nilai.

Contoh kode berikut menunjukkan cara membaca garis kisi tampilan bagan Gantt di Jawa.

public static void main(String[] args) throws Exception
{
    // Path ke direktori dokumen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Muat proyek
    Project project = new Project(dataDir + "Project.mpp");

    // Dapatkan tampilan default sebagai GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Tampilkan informasi Gridlines
    System.out.println("Gridlines Count: " + gcView.getGridlines().size());
    Gridlines gridlines = gcView.getGridlines().get(0);

    System.out.println("Gridlines Type: " + gridlines.getType());
    System.out.println("Gridlines Interval: " + gridlines.getInterval());
    System.out.println("Gridlines NormalColor: " + gridlines.getNormalColor());
    System.out.println("Gridlines NormalPattern: " + getLinePatternName(gridlines.getNormalPattern()));
    System.out.println("Gridlines IntervalPattern: " +gridlines.getIntervalPattern());
    System.out.println("Gridlines IntervalColor: " + gridlines.getIntervalColor());
}

// Fungsi ini mengembalikan nama pola Garis
private static String getLinePatternName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = LinePattern.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
Gridlines Count: 14
Gridlines Type: 3
Gridlines Interval: 0
Gridlines NormalColor: java.awt.Color[r=192,g=192,b=192]
Gridlines NormalPattern: Solid
Gridlines IntervalPattern: 0
Gridlines IntervalColor: java.awt.Color[r=192,g=192,b=192]

Ekstrak Gaya Teks Tampilan Bagan Gantt di Jawa

Kelas TextStyle API mewakili gaya visual teks untuk item dalam tampilan bagan Gantt. Kita dapat membaca warna, warna latar belakang, font, dan gaya font dengan mengikuti langkah-langkah berikut:

  1. Pertama, muat file proyek menggunakan kelas Proyek.
  2. Selanjutnya, dapatkan tampilan default dari ViewCollection dengan indeksnya.
  3. Kemudian, buat instance kelas GanttChartView dan tampilan typecast.
  4. Setelah itu, dapatkan daftar gaya teks tampilan bagan Gantt menggunakan getTextStyles().
  5. Terakhir, inisialisasi objek kelas TextStyle untuk gaya teks pertama dan tampilkan nilai.

Contoh kode berikut menunjukkan cara membaca gaya teks tampilan bagan Gantt di Jawa.

public static void main(String[] args) throws Exception
{
    // Path ke direktori dokumen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Muat proyek
    Project project = new Project(dataDir + "Project.mpp");

    // Dapatkan tampilan default sebagai GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Tampilkan informasi Gaya Teks
    System.out.println("Text Styles Count: " + gcView.getTextStyles().size());
    TextStyle textStyle = gcView.getTextStyles().get(0);

    System.out.println("Background Color: " + textStyle.getBackgroundColor());
    System.out.println("Text Color: " + textStyle.getColor());
    System.out.println("Font Family: " + textStyle.getFont().getFontFamily());
    System.out.println("Font Size: " + textStyle.getFont().getSize());
    System.out.println("Font Style: " + getFontStyleName(textStyle.getFont().getStyle()));
}

// Fungsi ini mengembalikan nama Font Style
private static String getFontStyleName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = FontStyles.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
Text Styles Count: 19
Background Color: java.awt.Color[r=0,g=0,b=0]
Text Color: java.awt.Color[r=0,g=0,b=255]
Font Family: Arial
Font Size: 8.0
Font Style: Regular

Ambil Garis Kemajuan Tampilan Bagan Gantt di Jawa

Garis progres muncul di tampilan Bagan Gantt yang menunjukkan apakah tugas terlambat, atau sesuai jadwal. Kita dapat membaca berbagai properti dari garis progres dengan mengikuti langkah-langkah di bawah ini:

  1. Pertama, muat file proyek menggunakan kelas Proyek.
  2. Selanjutnya, dapatkan tampilan default dari ViewCollection dengan indeksnya.
  3. Kemudian, buat instance kelas GanttChartView dan tampilan typecast.
  4. Setelah itu, dapatkan daftar garis progres tampilan bagan Gantt menggunakan getProgressLines().
  5. Terakhir, tampilkan nilai atribut garis progres.

Contoh kode berikut menunjukkan cara membaca garis kemajuan tampilan bagan Gantt di Jawa.

public static void main(String[] args) throws Exception
{
    // Path ke direktori dokumen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Muat proyek
    Project project = new Project(dataDir + "Project.mpp");

    // Dapatkan tampilan default sebagai GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Tampilkan informasi garis Kemajuan
    System.out.println("ProgressLines.BeginAtDate: " + gcView.getProgressLines().getBeginAtDate().toString());
    System.out.println("ProgressLines.isBaselinePlan: " + gcView.getProgressLines().isBaselinePlan());
    System.out.println( "ProgressLines.DisplaySelected: " + gcView.getProgressLines().getDisplaySelected());
    System.out.println("ProgressLines.SelectedDates.Count: " + gcView.getProgressLines().getSelectedDates().size());

    System.out.println("ProgressLines.DisplayAtRecurringIntervals: " + gcView.getProgressLines().getDisplayAtRecurringIntervals());
    System.out.println("ProgressLines.RecurringInterval.Interval: " +  gcView.getProgressLines().getRecurringInterval().getInterval()  );
    System.out.println("ProgressLines.RecurringInterval.WeeklyDays.Count" +  gcView.getProgressLines().getRecurringInterval().getWeeklyDays().size());
    System.out.println("RecurringInterval.DayType.Friday: "  +  (int) gcView.getProgressLines().getRecurringInterval().getWeeklyDays().get(1));
    System.out.println("RecurringInterval.DayType.Saturday: "  + (int)gcView.getProgressLines().getRecurringInterval().getWeeklyDays().get(2));
    System.out.println("RecurringInterval.DayType.Sunday: " +  (int)gcView.getProgressLines().getRecurringInterval().getWeeklyDays().get(0));

    System.out.println("ProgressLines.ShowDate" + gcView.getProgressLines().getShowDate());

    System.out.println("ProgressLines.ProgressPointShape: " +  gcView.getProgressLines().getProgressPointShape());
    System.out.println("ProgressLines.ProgressPointColor: " +  gcView.getProgressLines().getProgressPointColor());
    System.out.println("ProgressLines.LineColor: " + gcView.getProgressLines().getLineColor());
    System.out.println("ProgressLines.LinePattern" +  gcView.getProgressLines().getLinePattern());

    System.out.println("ProgressLines.OtherProgressPointShape: " + gcView.getProgressLines().getOtherProgressPointShape());
    System.out.println("ProgressLines.OtherProgressPointColor: " + gcView.getProgressLines().getOtherProgressPointColor().toString());
    System.out.println("ProgressLines.OtherLineColor: " + gcView.getProgressLines().getOtherLineColor());
}

Baca Tingkat Skala Waktu Bawah di Jawa

Skala waktu menunjukkan satuan waktu, hari, bulan, tahun kalender, atau tahun fiskal. Ada tiga tingkat skala waktu dalam tampilan proyek untuk menunjukkan nilai skala waktu untuk setiap tingkat seperti jumlah, unit, label, perataan, dll. Kita dapat membaca tingkat skala waktu paling bawah dengan mengikuti langkah-langkah berikut:

  1. Pertama, muat file proyek menggunakan kelas Proyek.
  2. Selanjutnya, dapatkan tampilan default dari ViewCollection dengan indeksnya.
  3. Kemudian, buat instance kelas GanttChartView dan tampilan typecast.
  4. Setelah itu, dapatkan pengaturan tingkat skala waktu bawah tampilan menggunakan getBottomTimescaleTier().
  5. Terakhir, tampilkan nilai tingkat skala waktu terbawah.

Contoh kode berikut menunjukkan cara membaca skala waktu terbawah dari tampilan bagan Gantt di Java.

public static void main(String[] args) throws Exception
{
    // Path ke direktori dokumen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Muat proyek
    Project project = new Project(dataDir + "Project.mpp");

    // Dapatkan tampilan default sebagai GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Tampilkan informasi Tingkat Skala Waktu Bawah
    System.out.println("BottomTimescaleTier Count: " + gcView.getBottomTimescaleTier().getCount());
    System.out.println("BottomTimescaleTier Unit: " + getTimescaleUnitName(gcView.getBottomTimescaleTier().getUnit()));
    System.out.println("BottomTimescaleTier UsesFiscalYear: " + gcView.getBottomTimescaleTier().getUsesFiscalYear());
    System.out.println("BottomTimescaleTier Alignment: " + getAlignmentName(gcView.getBottomTimescaleTier().getAlignment()));
    System.out.println("BottomTimescaleTier ShowTicks: " + gcView.getBottomTimescaleTier().getShowTicks());
    System.out.println("BottomTimescaleTier Label: " + getDateLabelName(gcView.getBottomTimescaleTier().getLabel()));
}

// Fungsi ini mengembalikan nama Label Data Skala Waktu
private static String getDateLabelName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = DateLabel.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Fungsi ini mengembalikan judul Alignment
private static String getAlignmentName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = StringAlignment.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Fungsi ini mengembalikan nama Unit Skala Waktu
private static String getTimescaleUnitName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = TimescaleUnit.class.getDeclaredFields();
 for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
BottomTimescaleTier Count: 2
BottomTimescaleTier Unit: Days
BottomTimescaleTier UsesFiscalYear: true
BottomTimescaleTier Alignment: Center
BottomTimescaleTier ShowTicks: true
BottomTimescaleTier Label: DayOfMonthDd

Baca Tingkat Skala Waktu Tengah di Jawa

Demikian pula, kita dapat membaca skala waktu menengah dengan mengikuti langkah-langkah yang disebutkan sebelumnya. Namun, kita akan mendapatkan setelan tingkat skala waktu tengah tampilan menggunakan getMiddleTimescaleTier() di langkah 4.

Contoh kode berikut menunjukkan cara membaca tingkat skala waktu tengah tampilan bagan Gantt di Jawa.

public static void main(String[] args) throws Exception
{
    // Path ke direktori dokumen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Muat proyek
    Project project = new Project(dataDir + "Project.mpp");

    // Dapatkan tampilan default sebagai GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Tampilkan informasi Tingkat Skala Waktu Tengah
    System.out.println("MiddleTimescaleTier Count: " + gcView.getMiddleTimescaleTier().getCount());
    System.out.println("TimescaleUnit Weeks: " +  getTimescaleUnitName(gcView.getMiddleTimescaleTier().getUnit()));
    System.out.println("MiddleTimescaleTier Alignment: " + getAlignmentName(gcView.getMiddleTimescaleTier().getAlignment()));
    System.out.println("MiddleTimescaleTier ShowTicks: " + gcView.getMiddleTimescaleTier().getShowTicks());
    System.out.println("MiddleTimescaleTier Label: " +  getDateLabelName(gcView.getMiddleTimescaleTier().getLabel()));
}
MiddleTimescaleTier.Count: 1
TimescaleUnit.Weeks: Months
MiddleTimescaleTier.Alignment: Center
MiddleTimescaleTier.ShowTicks: true
MiddleTimescaleTier.Label: MonthMmmmYyyy

Ambil Tingkat Skala Waktu Teratas di Jawa

Kita juga bisa membaca timescale tier teratas dengan mengikuti langkah-langkah yang disebutkan sebelumnya. Namun, kita akan mendapatkan setelan tingkat skala waktu teratas tampilan menggunakan getTopTimescaleTier() di langkah 4.

Contoh kode berikut menunjukkan cara membaca skala waktu teratas dari tampilan bagan Gantt di Jawa.

public static void main(String[] args) throws Exception
{
    // Path ke direktori dokumen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Muat proyek
    Project project = new Project(dataDir + "Project.mpp");

    // Dapatkan tampilan default sebagai GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Tampilkan informasi Tingkat Skala Waktu Teratas
    System.out.println("TopTimescaleTier Unit: " + getTimescaleUnitName(gcView.getTopTimescaleTier().getUnit()));
    System.out.println("TopTimescaleTier UsesFiscalYear: " + gcView.getTopTimescaleTier().getUsesFiscalYear() );
    System.out.println("TopTimescaleTier Alignment: " +  getAlignmentName(gcView.getTopTimescaleTier().getAlignment()));
    System.out.println("TopTimescaleTier ShowTicks: " + gcView.getTopTimescaleTier().getShowTicks());
    System.out.println("TopTimescaleTier Label" + getDateLabelName(gcView.getTopTimescaleTier().getLabel()));
}
TopTimescaleTier Unit: Quarters
TopTimescaleTier UsesFiscalYear: true
TopTimescaleTier Alignment: Center
TopTimescaleTier ShowTicks: true
TopTimescaleTier Label: QuarterQtrQYyyy

Dapatkan Lisensi Gratis

Anda bisa mendapatkan lisensi sementara gratis untuk mencoba perpustakaan tanpa batasan evaluasi.

Kesimpulan

Pada artikel ini, kita telah mempelajari caranya

  • baca tampilan bagan Gantt secara terprogram di Jawa;
  • ekstrak gaya batang dan gaya teks tampilan bagan Gantt;
  • mengambil garis kisi dan garis progres dari tampilan bagan Gantt;
  • baca unit skala waktu tampilan bagan Gantt menggunakan Java.

Selain itu, Anda dapat mempelajari lebih lanjut tentang Aspose.Tasks for Java API menggunakan dokumentasi. Jika ada ambiguitas, jangan ragu untuk menghubungi kami di forum.

Lihat juga