InstallPayload alır ({ previousVersion?: string; newVersion: string } — yeni bir kurulumda previousVersion, undefined olur); kaldırma kancası ise bir UninstallPayload alır ({ version?: string } — kaldırılan sürüm).
Her uygulama, her bir kanca türünden (kurulum öncesi, kurulum sonrası, kaldırma) en fazla bir tane tanımlayabilir. Her türden birden fazla tespit edilirse manifest derlemesi hata verir.
Bir bakışta
Kural: varsayılan olarak post-install kullanın. Yalnızca geçişin kendisi yıkıcıysa ve önceki durum yok olmadan önce onu yakalamanız gerekiyorsa kurulum öncesine başvurun.
Her iki kanca tarafından paylaşılan davranış
- Yapılandırma, tetikleyici ayarları çıkarılmış bir
defineLogicFunctionyapılandırmasıdır ve buna ek olarakshouldRunOnVersionUpgradeiçerir. - Ne zaman çalışır: varsayılan olarak yalnızca ilk kurulumlarda. Yükseltmelerde de çalışması için
shouldRunOnVersionUpgrade: trueolarak ayarlayın. Yükseltme yoluna göre dallanmak içinpreviousVersion/newVersionkullanın. - İdempotans önemlidir: asenkron post-install yeniden denenebilir ve
shouldRunOnVersionUpgradeaçıkken her iki kanca da yükseltmelerde yeniden çalıştırılır. - Alışıldık mantık işlevi ortamı (
APPLICATION_ID,APP_ACCESS_TOKEN,API_URL) enjekte edilir, böylece Twenty API’sini uygulamanızın jetonuyla çağırabilirsiniz. - Kanca, derleme zamanında otomatik olarak uygulama manifestine (
preInstallLogicFunction/postInstallLogicFunction) eklenir —defineApplication()içinde referans verilecek bir şey yoktur. - Varsayılan
timeoutSeconds, veri tohumlama gibi daha uzun kurulum görevlerine izin vermek için 300 olarak ayarlanmıştır. - Geliştirme modunda yürütülmez:
yarn twenty devkurulum akışını atlar ve dosyaları doğrudan senkronize eder, bu nedenle kancalar burada asla çalışmaz. Bunları bunun yerine manuel olarak tetikleyin:
definePostInstallLogicFunction
Çalışma alanı üstveri (metadata) geçişi uygulanıp tamamlandıktan sonra çalışır
definePostInstallLogicFunction
Çalışma alanı üstveri (metadata) geçişi uygulanıp tamamlandıktan sonra çalışır
Uygulamanızın kurulumu tamamlandıktan sonra bir kez çalışır: üstveri senkronize edilmiştir, SDK istemcisi oluşturulmuştur, yeni şema sorgulanabilir durumdadır. Örnek — ilk kurulumlarda varsayılan bir kaydı tohumlamak:
src/logic-functions/post-install.ts
shouldRunSynchronously bayrağı yürütme modelini kontrol eder:false(varsayılan) — mesaj kuyruğuna alınır (retryLimit: 3) ve bir worker tarafından çalıştırılır. Kurulum yanıtı, iş kuyruğa alınır alınmaz döner. Uzun süreli işler için kullanın — büyük veri kümelerinin tohumlanması, yavaş üçüncü taraf API’leri.true— kurulum akışı sırasında satır içi olarak yürütülür. Kurulum isteği, işleyici bitene kadar bloke olur; fırlatılan bir hata, çağıranaPOST_INSTALL_ERRORolarak yansır (yeniden deneme yoktur). Hızlı ve yanıt dönmeden önce mutlaka tamamlanması gereken işler için kullanın. Bu noktada geçiş zaten uygulanmıştır, bu nedenle bir hata şema değişikliklerini geri almaz — yalnızca hatayı görünür kılar.
definePreInstallLogicFunction
Çalışma alanı üstveri (metadata) geçişi uygulanmadan önce çalışır
definePreInstallLogicFunction
Çalışma alanı üstveri (metadata) geçişi uygulanmadan önce çalışır
Üstveri geçişinden önce, önceki şemaya karşı çalışır — bir geçişin kaybedeceği verileri yedeklemek veya riskli bir yükseltmeyi reddetmek için doğru yerdir. Çalıştırmadan önce, sunucu yalnızca ekleyici bir “indirgenmiş eşitleme” yürütür; bu, yalnızca yeni sürümün kurulum öncesi işlevini kaydeder, diğer her şey — önceki sürümün nesneleri, alanları ve verileri — işleyiciniz çalıştığında dokunulmadan kalır.Kurulum öncesi her zaman senkrondur ve kurulumu bloke eder. İşleyici bir hata fırlatırsa, herhangi bir şema değişikliğinden önce kurulum iptal edilir — çalışma alanı, tutarlı bir durumda önceki sürümde kalır. Bu kasıtlıdır: kurulum öncesi, riskli bir yükseltmeyi reddetmek için son şansınızdır.Örnek — geçiş onu düşürmeden önce eski bir alanın değerlerini kopyalamak:
src/logic-functions/pre-install.ts
Kaldırma kancası
defineUninstallLogicFunction, bir kullanıcı uygulamanızı kaldırdığında çalışan bir kancayı bildirir. Bu kanca, uygulamanın üst verileri, verileri ve kodu kaldırılmadan önce çalışır — silme geçişi (migration) çalıştıktan sonra çalıştırılacak hiçbir şey kalmaz — bu nedenle işleyiciniz uygulamanın nesnelerini ve kayıtlarını hâlâ sorgulayabilir. Bunu harici kaynakların temizliği için kullanın: API kaynaklarının tahsisini geri alın, kalan botları silin, web kancalarını (webhook) iptal edin.
Notlar:
- Kanca, en iyi gayret esasına göre çalışır: senkron olarak çalışır, ancak bir hata günlüğe kaydedilir ve kaldırmayı asla engellemez — temizleme, bir uygulamanın kaldırılamaz hale gelmesine neden olmamalıdır.
- Kaldırma kancası,
UninstallPayloadalır ({ version?: string }— kaldırılan sürüm). - Başarısız olan yeni bir kurulum geri alındığında çalışmaz — uygulama kurulumunu hiçbir zaman tamamlamamıştır.
- Kanca, uygulama kaldırıldıktan sonra çalışamaz; bu nedenle, uygulama verilerine bağlı olan harici temizlik (örneğin kayıtlarda saklanan bot kimlikleri) harici zamanlanmış bir işte değil, burada yapılmalıdır.
- Kurulum kancalarında olduğu gibi, bu kanca da geliştirme modunda çalıştırılmaz — bunun yerine manuel olarak tetikleyin:
src/logic-functions/uninstall.ts