ACS ile APS Entegrasyonu
Alfresco içerik hizmetleri ile APS iş süreçleri yönetimi entegrasyonu

Merhaba Alfresco fanları!

ACS ve APS sürümünün heyecan verici bir entegrasyon projesi hakkında bilgi vermek istiyorum. Yoğun bir çalışma ile ilerledik ve şimdiye kadar her şey yolunda gitti denebilir. Evet şimdi heyecan verici bir challenge karşı karşıyayız. ACS'den APS'deki süreçleri başlatmak istedik. Ancak, normalde ACS ve APS arasındaki bu tür entegrasyonları kolaylaştıran Share Connector gibi bir bağlayıcı kullanmadan bu mümkün değil gibiydi. ACS 6.0'dan bu yana, Share Konektörü artık Alfresco tarafından desteklenmiyor!

Sorun

ACS ve APS, CMIS veya REST API'leri aracılığıyla birbirleriyle iletişim kurabilen iki bağımsız hizmettir. ACS'yi bir içerik yönetim sistemi olarak ayarlamak ve dolayısıyla verileri doğrudan ACS'de (içerikleri ve metadataları) depolamak ve almak mümkün. Süreçler APS'den başlatıldığı sürece bu harika çalışıyor. Ancak, süreçlerin ACS'den başlatılması gerektiği kullanım durumunu da mükemmel bir şekilde hayal ettik. Örneğin, bir belge belirli bir ACS (Alfresco Share) klasörüne yüklenirse, bu belge ile APS'de bir süreç başlatılmalıydı.

Esasen bu sorun, ACS 5.2 için Share Konnektörü ile çözülebilir. Bu, ACS'yi REST ile APS'deki süreçleri başlatabilen web komut dosyalarıyla olabilir. Ek olarak, Share Bağlayıcısı, APS entegrasyonu için bazı Share UI uzantıları sunar. Share Konnektörünü yeni ACS sürümleri için kullanmak hala mümkün olabilir, ancak bu durumda Alfresco, onunla herhangi bir sorun yaşarsanız artık destek sunmuyor.

Aşağıda, Share Connector kullanmadan bir URL'den APS'de bir sürecin nasıl başlatılacağına dair 2 yöntem açıklanacak. Ardından bir webhook, işlem parçası olarak bu URL'yi ACS'de nasıl adlandırılacağı açıklanacak.

1. Yöntem

Bir Süreç Başlatmak için Özel Uç Nokta

APS, Java kodu aracılığıyla özel uç noktaları uygulama imkanı sunar. Bu daha sonra süreçleri başlatmak ve değişkenleri sürece aktarmak için kullanılabilir. Alfresco belgelerini burada bulabilirsiniz. Böyle bir özel uç nokta uygulanırsa, ACS'den bir süreç başlatmak için ACS'de WebHook olarak kullanılabilir. Belgelerde açıklandığı gibi, uç nokta Java kullanılarak tanımlanır ve ardından bir jar içine paketlenir. Bunun yapılandırması biraz karmaşıktı, çünkü bazı bağımlılıklar yalnızca özel Alfresco Nexus'ta mevcut. JAR'ı oluşturmak için aşağıdaki bağımlılıklara ihtiyacım vardı:

<dependencies>
    <dependency>
        <groupId>org.alfresco</groupId>
        <artifactId>alfresco repository
    </dependency>
    <dependency>
        <groupId>com.activiti</groupId>
        <artifactId>activiti-app-rest</artifactId>
        <version>1.11.0</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
        <artifactId>spring-web>/artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
</dependencies>
...
<repositories>
    <repository>
        <id>enterprise-releases</id>
        <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-enterprise-releases</url>
    </repository>
</repositories>

Özel Alfresco Nexus deposuna erişim gereklidir. Bunlar support.alfresco.com adresinden edinilebilir. Daha sonra JAR, bir docker kullanılarak konteynere kopyalanabilir. Aşağıda JAR'ı Tomcat webapp kütüphanesine yüklemek için Docker Compose ve Docker Ayarlarını gösteriyorum.

process:
    build:
        context: ./process
    environment:
    ...

Aşağıdaki Docker dosyası ./process klasöründe bulunur.

FROM alfresco/process-services:1.11.0
ARG TOMCAT_DIR=/usr/local/tomcat
COPY target/acsaps-1.0.0-SNAPSHOT.jar $TOMCAT_DIR/webapps/activiti-app/WEB-INF/lib

Özel uç noktayı ACS Url Webhook ile aramadan önce Postman ile test etseniz iyi olur. Henüz bu yöntemin avantajlarının bir sonraki bölümde APS Sinyalleri yöntemine kıyasla ne olduğundan emin değilim. Ancak Java programlama ile daha karmaşık bir işlem çağrısının mümkün olabileceğinden şüpheleniyorum.

2. Yöntem

Süreci Başlatmak için APS Sinyali kullanmak

APS'de başlatma sinyallerinin kullanılması, ACS ve APS'yi bağlamanın farklı bir yoludur. Özel uç nokta yöntemine kıyasla en büyük avantaj, Java kodunun oluşturulmasının gerekmemesi ve her şeyin / activiti-app'deki kullanıcı arayüzü aracılığıyla yapılandırılabilmesidir. Diğer bir avantaj, Başlatma Sinyallerinin birkaç bağımsız süreci başlatabilmesidir. Fakat örneğimizde tek bir sürece bağlı kalacağız. jtsmith, Start Signal Event with REST example adlı blog gönderisinde prosedürü çok iyi açıklıyor. Kısaca, APS kullanılarak bir Temel Kimlik Doğrulama Uç Noktası oluşturulur. Daha sonra, sinyali kesecek ve onu bitiş noktasına eşleyecek bir sinyal süreci modellenir. İstek eşlemesinin aşağıdaki biçime sahip olması önemlidir:

APS Sinyal Playload

{
   "signalName": "mysignal",
   "tenantId": "tenant_1",
   "async": "false",
   "variables":
   [
        {
            "name": "document",
            "value": "${document.nodeRef}"
        }
    ]
}

Lütfen linkteki orijinal gönderideki özelliklerin tüm işlevlerini okuyun. Daha sonra, süreci başlatmak için mysignal sinyalini başlangıç ​​olayı olarak kullanabilen süreçler oluşturabilirsiniz. Sinyal işleminin modeli daha sonra kolayca dışa aktarılabilir ve yeniden kullanılabilir.

ACS Webhook İşlemi

Önceki bölümler, bir URL'den bir APS işleminin nasıl başlatılacağını açıkladı. Şimdi eksik olan tek şey, tam olarak bunu ACS ile yapma imkanı. Bir klasördeki bir dosya ACS'ye yüklendiğinde bir kullanıcının bir süreç başlatmak istediği kullanım durumunu düşünüyorum. Bunun için iki unsur gerekli. Klasör için, yeni bir belge oluşturulduğunda etkinleştirilen bir kural oluşturmalıyız. Daha sonra bir WebHook eylemi yürütülmelidir.

Maalesef Alfresco bir Webhook eylem ootb sunmuyor. Bunu arşivlemek için iki olasılık var. Ya kendiniz bir Alfresco Webhook eylemi yaratırsınız ya da Acosix GmBH'nin sofistike Webhook eylemini kullanırsınız. Bu, yükü veya oldukça havalı olan Webhook URL'sini tanımlamak için FreeMarker metin giriş alanları gibi birçok harika özellikle birlikte gelir. Webhook Eylemi, çalışma zamanında oluşturulabilen / özelleştirilebilen playload şablonlarıyla çalışır.

Yukarıda bahsedilen APS Sinyal Playload zaten sağlayan bir APS Yük Şablonu sağladım. Webhook kullanarak Alfresco özellikleri gibi daha fazla değişkeni aktarmak istiyorsanız, yalnızca değişkenler bölümündeki yük şablonunu genişletmeniz gerekir. Axel'den Webhook Eylemi ayrıca olası hataları bulmak için mükemmel hata ayıklama seçenekleri sunar.


Özet

ACS ve APS, şirketlerin sonunda uzun zamandır beklenen, optimum dijital çözümü bulmalarına yardımcı olmak için bir araya gelen güçlü araçlardır. ACS'nin APS ile entegrasyonu birçok Alfresco mühendisi için zorluklar ortaya çıkarmaktadır. Bu entegrasyonun gerçekleştirilebileceği iki yolu listeledim ve ACS ve APS kullanarak ECM ile BPM hedeflerinize ulaşmanıza yardımcı olacağını umuyorum. Müşteri tesisindeki ACS'den APS'ye entegrasyonumuz, APS'de karmaşık süreçler yazmayı planladığımızdan ACS ile APS arasındaki bütünlüğü düşündüğümüzden heyecan verici. Başardıysanız ACS APS entegrasyonunuzun nasıl göründüğünü bize yazın.

Bu makalenin harika okuyucularına, her türden geri bildirimin memnuniyetle karşılanacağını söylüyorum. Gelecekte buraya bir tartışma ve yorum özelliği eklemeye çalışacağım. Bu arada, lütfen Twitter veya FaceBook gibi sosyal medya hesaplarım aracılığıyla bana geri bildirim göndermekten çekinmeyin. Çok teşekkür ederim :).

Bu arada Martin Muller'in www.github.com/mmuller88 adresinde kullanabileceğiniz birçok şey var. Oradaki çalışmayı kullanabilirsiniz.




İşletmeler için Alfresco Dijital Çalışma Alanı
Alfresco Dijital Workspace