Power BI görsellerinde "işleme" olayları

Bir görselin sertifikalanması için işleme olaylarını içermesi gerekir. Bu olaylar dinleyicilerin (öncelikli olarak PDF'ye aktar ve PowerPoint'e aktar) görselin ne zaman işlendiğini ve dışarı aktarma için hazır olduğunu bilmesini sağlar.

Önemli

Verileri dışarı aktaran tüm görseller (örneğin, bir PowerPoint veya .pdf dosyası) dışarı aktarma işleminin görsel işleme tamamlanmadan başlamadığından emin olmak için işleme olayları içermelidir.

İşleme olayları API'si işleme sırasında çağrılacak üç yöntemden oluşur:

  • renderingStarted: İşlemenin başlatıldığını belirtmek için bu yöntemi çağır. İşleme işlemi burada başladığından bu yöntemi her zaman güncelleştirme yönteminizin ilk satırı olarak çağırın.

  • renderingFinished: İşleme başarıyla tamamlandığında, dinleyicilere görselin görüntüsünün dışarı aktarma için hazır olduğunu bildirmek için bu yöntemi çağırın. Bu çağrı, görsel güncelleştirildiğinde çalıştırılacak son kod satırı olmalıdır. Genellikle güncelleştirme yönteminin son satırıdır ancak her zaman değildir.

  • renderingFailed: İşleme sırasında bir sorun oluşursa dinleyicilere işlemenin tamamlanmadığını bildirmek için bu yöntemi çağırabilirsiniz. Hatanın nedenini sağlamak için isteğe bağlı bir dize geçirebilirsiniz.

Not

İşleme olayları , görsellerin sertifikasyonu için bir gereksinimdir. Bunlar olmadan görseliniz İş Ortağı Merkezi tarafından yayımlanmak üzere onaylanmayacaktır. Daha fazla bilgi için bkz . sertifika gereksinimleri.

İşleme olayları API'sini kullanma

İşleme yöntemlerini çağırmak için önce türünü içeri aktarın IVisualEventService .

  1. Dosyanıza visual.ts aşağıdaki içeri aktarmayı ekleyin:

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. IVisual sınıfında özel bir alan ekleyin:

    private events: IVisualEventService;
    
  3. constructor sınıfının yönteminde IVisual alanını başlatın:

    this.events = options.host.eventService;
    

Artık güncelleştirme yönteminizde uygun olan yerlerde , this.events.renderingFinished(options);ve this.events.renderingFailed(options); çağırabilirsinizthis.events.renderingStarted(options);.

Olay yaşam döngüsünü işleme

Her update() döngüde şu kuralları izleyin:

  1. İşleme başladığında çağrısı renderingStarted .
  2. Bu döngü için tam olarak bir tamamlama yöntemi çağırın:
    • renderingFinished işleme başarılı olduğunda veya
    • renderingFailed işleme başarısız olduğunda.
  3. Zaman uyumsuz işleme için yalnızca işleme tamamlandıktan sonra çağrısı renderingFinished .

Önemli

Tamamlanma sinyali vermeden yöntemin çıkışına update() izin vermeyin. çağrısı renderingStartedyaptıktan sonra, her zaman veya renderingFailedöğesini çağırmalısınızrenderingFinished.

Kod uygulama desenleri

Hata işleme ile zaman uyumlu güncelleştirme

public update(options: VisualUpdateOptions): void {
  this.host.eventService.renderingStarted(options);

  try {
    this.renderView(options); // visual rendering logic
    this.host.eventService.renderingFinished(options);
  } catch (error) {
    this.host.eventService.renderingFailed(options, String(error));
    throw error;
  }
}

Hata işleme ile zaman uyumsuz güncelleştirme

public async update(options: VisualUpdateOptions): Promise<void> {
  this.host.eventService.renderingStarted(options);

  try {
    await this.renderAsync(options); // visual rendering logic
    this.host.eventService.renderingFinished(options);
  } catch (error) {
    this.host.eventService.renderingFailed(options, String(error));
    throw error;
  }
}

ile promise zinciri .then().catch()

public update(options: VisualUpdateOptions): void {
  this.host.eventService.renderingStarted(options);

  this.renderAsync(options) // visual rendering logic
    .then(() => {
      this.host.eventService.renderingFinished(options);
    })
    .catch((error) => {
      this.host.eventService.renderingFailed(options, String(error));
      throw error;
    });
}