ADF ile Arama Arayüzü Oluşturma

Mehmet Demirel

ADF ile Arama Arayüzü Oluşturma


Bir geliştirme çerçevesi olarak, bir arama arayüzü oluşturmak için izlenmesi gereken birkaç yol vardır. Tamamen sıfırdan başlayabilir, bir AngularJS uygulaması oluşturabilir ve gerektiğinde ADF bileşenlerini kullanabiliriz. Veya sağlanan demo uygulamalarından birini klonlayabilir ve gerektiğinde değiştirmeye başlayabiliriz. Bu yazı yazıldığı sırada Alfresco tarafından sağlanan iki demo uygulaması vardı. Biri çekirdek ADFAlfresco NG2 Components” kod tabanının bir parçası olan demo kabuk uygulamasıdır. Bu uygulama, kullanıcı odaklı bir uygulamaya karşı bir geliştirici kaynağından daha fazladır, bu nedenle buradan başlayan geliştiricilerin büyük miktarda değiştirmesi gerekecektir. Diğer uygulama ise, demo kabuk uygulaması kadar çok özelliği olmayan ancak çok daha kullanıcı odaklı olan Alfresco Örnek İçerik Uygulamasıdır. Alfresco'nun zaman geçtikçe örnek içerik uygulamasına özellikler ekleyeceğini tahmin ederiz.


ADF Demo Uygulaması:




Örnek İçerik Uygulaması:




Çoğu kuruluşun “kutudan çıktığı haliyle” başlamak istediği göz önüne alındığında, çoğu ADF uygulamasının bu örneklerden birini klonlayarak başlayacağını tahmin ediyoruz. Hem demo kabuğu hem de içerik uygulaması birincil arama odağını "Google" tarzı başlık arama çubuğuna yerleştirdi. ADF Arama karşılaştırması ve Paylaşım arama karşılaştırması yayınlarımızda daha önce belirtildiği gibi, bu tür arama çoğu ECM kullanım örneği için çok pratik değildir.

Belirli bir nesne türünü hedefleyen ve kullanıcıların meta verilere göre sonuçları daraltmasına izin veren bir arama yapmak isteyen müşteriler için, bir geliştiricinin ADF bileşenlerini kullanarak sıfırdan bir arama arayüzü oluşturması gerekir. Neyse ki, demo kabuk uygulaması geliştiricinin başlayabileceği çok basit bir örneğe sahiptir. Soldaki gezinme çubuğunda "Genişletilmiş Arama" başlıklı bir bölüm var. Bir ADF uygulama geliştiricisi bu bölümü arama arayüzünü oluşturmaya rehberlik etmek için kullanabilir. Genişletilmiş Arama görünümünde, tek bir metin kutusu kullanıcının arama ölçütlerini girmesine izin verir:


Alan, search-extended.component.html dosyasındaki şu html'den oluşur:

<div id="container-for-custom-input" class="search-extended-input-containers">
    <mat-form-field>
        <label>{{'APP_LAYOUT.WORD_TO_SEARCH' | translate}}</label>
        <input type="text" matInput
                id="custom-input" [(ngModel)]="searchedWord" [searchAutocomplete]="auto">
    </mat-form-field>
</div>


Demo kabuk uygulaması yalnızca bir girdi sağlarken, geliştirici kullanıcının birden çok meta veri parçası girmesi için başka alanlar oluşturmak üzere bu kodu kullanabilir.


Kullanıcı enter tuşuna bastığında, search-extended.component.ts içindeki TypeScript kodu aramayı başlatır:


generateQueryBody(searchTerm: string): QueryBody {
  if (this.useServiceApproach) {
    return null;
  } else {
    return {
      query: {
        query: searchTerm ? `${searchTerm}* OR name:${searchTerm}*` : searchTerm
      },
      include: ['path', 'allowableOperations'],
      filterQueries: [
        /*tslint:disable-next-line */
        { query: "TYPE:'cm:folder' OR TYPE:'cm:content'" },
        { query: 'NOT cm:creator:System' }]
    };
  }
}


Yukarıdaki kodda, geliştirici arama terimini değiştirecek ve özel meta veriler için filterQueries bölümüne ek olarak bir tür belirtimi ekleyecektir. Sorgu yürütüldükten sonra, sonuçlar search-extended.component.html dosyasında bulunan bir <adf-search> bileşenine yerleştirilir.

ADF'nin bir yararı, bir geliştirme çerçevesi olduğundan, sistemin tam olarak işletme kullanıcılarının istediği gibi görünüp davranabilmesidir. Örnek uygulamalar, geniş çaplı değişiklikler olmaksızın uygulamaların işletme kullanıcıları tarafından kabul edilebilir olması şartıyla bir başlangıç ​​sağlar. Bununla birlikte, en azından bir düzeyde geliştirme gereklidir ve kullanıcı gereksinimlerine bağlı olarak kapsamlı bir geliştirme çabası gerekebilir. Ayrıca, bileşenler yalnızca kod aracılığıyla "yapılandırılabilir". Gereksinimlerdeki herhangi bir güncelleme (ör: arama ölçütlerinde yapılan değişiklikler, arama için başka bir belge türü ekleme), tüm ortamlarda kod güncellemeleri ve yeniden dağıtım gerektirir.