Kurulum kancaları, kurulum veya yükseltme yaşam döngüsü sırasında çalışan özel mantık işlevleridir. Bunlar, normal mantık işlevleri ile aynı işleyici çalışma zamanını paylaşır ve birDocumentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
InstallPayload alırlar, ancak kendi tanımlama işlevleri — definePostInstallLogicFunction() ve definePreInstallLogicFunction() — ile bildirilirler ve normal tetikleyici modelinin (HTTP, cron, veritabanı olayları) dışında yaşarlar.
Her uygulama en fazla bir kurulum öncesi ve en fazla bir kurulum sonrası işlev tanımlayabilir. Her ikisinden de birden fazla tespit edilirse manifest oluşturma hataya düşer.
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
Kurulum sonrası işlev, uygulamanız bir çalışma alanına kurulmasını tamamladıktan sonra otomatik olarak çalışır. Sunucu, uygulamanın meta verileri senkronize edildikten ve SDK istemcisi oluşturulduktan sonra bunu yürütür; böylece çalışma alanı tamamen kullanıma hazırdır ve yeni şema kullanıma alınmıştır. Tipik kullanım örnekleri arasında varsayılan verilerin tohumlanması, başlangıç kayıtlarının oluşturulması, çalışma alanı ayarlarının yapılandırılması veya üçüncü taraf hizmetlerde kaynak sağlanması yer alır.Ayrıca kurulum sonrası işlevi istediğiniz zaman CLI kullanarak manuel olarak çalıştırabilirsiniz:Önemli noktalar:
src/logic-functions/post-install.ts
- Kurulum sonrası işlevler
definePostInstallLogicFunction()kullanır — tetikleyici ayarlarını atlayan (cronTriggerSettings,databaseEventTriggerSettings,httpRouteTriggerSettings,toolTriggerSettings,workflowActionTriggerSettings) özel bir varyanttır. - İşleyici,
{ previousVersion?: string; newVersion: string }içeren birInstallPayloadalır —newVersion, yüklenen sürümdür;previousVersionise daha önce yüklü olan sürümdür (veya ilk kurulumdaundefined). Bu değerleri ilk kurulumları yükseltmelerden ayırt etmek ve sürüme özgü geçiş (migration) mantığını çalıştırmak için kullanın. - Kanca ne zaman çalışır: varsayılan olarak yalnızca ilk kurulumlarda. Uygulama önceki bir sürümden yükseltildiğinde de çalışmasını istiyorsanız
shouldRunOnVersionUpgrade: truegeçin. Belirtilmediğinde, bayrak varsayılan olarakfalseolur ve yükseltmeler kancayı atlar. - Yürütme modeli — varsayılan olarak eşzamansız, isteğe bağlı senkron:
shouldRunSynchronouslybayrağı kurulum sonrası işlemin nasıl yürütüldüğünü kontrol eder.shouldRunSynchronously: false(varsayılan) — kanca,retryLimit: 3ile mesaj kuyruğuna alınır ve bir worker içinde eşzamansız çalışır. İş kuyruğa alınır alınmaz kurulum yanıtı döner; dolayısıyla yavaşlayan veya hata veren bir işleyici çağıranı engellemez. Worker en fazla üç kez yeniden deneyecektir. Bunu uzun süre çalışan işler için kullanın — büyük veri kümelerini tohumlama, yavaş üçüncü taraf API’lerini çağırma, harici kaynakları sağlama; makul bir HTTP yanıt süresini aşabilecek her şey.shouldRunSynchronously: true— kanca kurulum akışı sırasında satır içi olarak yürütülür (kurulum öncesi ile aynı yürütücü). İşleyici bitene kadar kurulum isteği engellenir; hata fırlatırsa, kurulum çağıranı birPOST_INSTALL_ERRORalır. Otomatik yeniden deneme yok. Bunu, yanıt dönmeden mutlaka tamamlanması gereken hızlı işler için kullanın — örneğin, kullanıcıya bir doğrulama hatası iletmek veya kurulum çağrısı döner dönmez istemcinin ihtiyaç duyacağı hızlı bir kurulum yapmak. Kurulum sonrası çalıştığında, üstveri (metadata) geçişinin zaten uygulanmış olduğunu unutmayın; bu nedenle, senkron moddaki bir hata şema değişikliklerini geri almaz — yalnızca hatayı görünür kılar.
- İşleyicinizin idempotent olduğundan emin olun. Eşzamansız modda kuyruk en fazla üç kez yeniden deneyebilir; her iki modda da
shouldRunOnVersionUpgrade: trueiken yükseltmelerde kanca tekrar çalışabilir. - Ortam değişkenleri
APPLICATION_ID,APP_ACCESS_TOKENveAPI_URLişleyici içinde kullanılabilir (diğer mantık işlevlerinde olduğu gibi), böylece uygulamanıza özel kapsamda bir uygulama erişim belirteciyle Twenty API’sini çağırabilirsiniz. - Uygulama başına yalnızca bir kurulum sonrası işlevine izin verilir. Birden fazla tespit edilirse manifest oluşturma hataya düşer.
- İşlevin
universalIdentifier,shouldRunOnVersionUpgradeveshouldRunSynchronouslydeğerleri, derleme sırasında uygulama manifestinepostInstallLogicFunctionalanı altında otomatik olarak eklenir — bunlaradefineApplication()içinde atıfta bulunmanıza gerek yoktur. - Varsayılan zaman aşımı, veri tohumlama gibi daha uzun kurulum görevlerine izin vermek için 300 saniye (5 dakika) olarak ayarlanmıştır.
- Geliştirme modunda çalıştırılmaz: bir uygulama yerel olarak kaydedildiğinde (
yarn twenty devaracılığıyla), sunucu kurulum akışını tamamen atlar ve dosyaları doğrudan CLI watcher üzerinden eşitler — bu nedenle,shouldRunSynchronouslyne olursa olsun, kurulum sonrası geliştirme modunda hiç çalışmaz. Çalışan bir çalışma alanında bunu elle tetiklemek içinyarn twenty exec --postInstallkullanın.
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
Kurulum öncesi işlev, kurulum sırasında otomatik olarak çalışır ve çalışma alanı üstveri (metadata) geçişi uygulanmadan önce yürütülür. Kurulum sonrası ile (Ayrıca kurulum öncesi işlevi istediğiniz zaman CLI kullanarak manuel olarak çalıştırabilirsiniz:Önemli noktalar:
InstallPayload) aynı yük (payload) biçimini paylaşır, ancak kurulum akışında daha erken konumlandığından yaklaşan geçişin bağlı olduğu durumu hazırlayabilir — tipik kullanımlar arasında verileri yedeklemek, yeni şemayla uyumluluğu doğrulamak veya yeniden yapılandırılacak ya da kaldırılacak kayıtları arşivlemek yer alır.src/logic-functions/pre-install.ts
- Kurulum öncesi işlevler
definePreInstallLogicFunction()kullanır — kurulum sonrasıyla aynı özel yapılandırma, sadece yaşam döngüsünde farklı bir yuvaya eklenir. - Hem kurulum öncesi hem de kurulum sonrası işleyiciler aynı
InstallPayloadtürünü alır:{ previousVersion?: string; newVersion: string }. Bunu bir kez içe aktarın ve her iki kanca için yeniden kullanın. - Kanca ne zaman çalışır: çalışma alanı üstveri (metadata) geçişinden hemen önce konumlandırılır (
synchronizeFromManifest). Çalıştırmadan önce, sunucu yalnızca ekleyici bir “indirgenmiş eşitleme” yürütür; bu, çalışma alanı üstverisinde yeni sürümün kurulum öncesi işlevini kaydeder — başka hiçbir şeye dokunulmaz — ve ardından bunu yürütür. Bu eşitleme yalnızca ekleyici olduğundan, işleyiciniz çalıştığında önceki sürümün nesneleri, alanları ve verileri hâlâ sağlamdır: geçiş öncesi durumu güvenle okuyabilir ve yedekleyebilirsiniz. - Yürütme modeli: kurulum öncesi senkron olarak yürütülür ve kurulumu bloklar. İşleyici bir hata fırlatırsa, herhangi bir şema değişikliği uygulanmadan ö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.
- Kurulum sonrası ile aynı şekilde, uygulama başına yalnızca bir kurulum öncesi işlevine izin verilir. Derleme sırasında uygulama manifestine
preInstallLogicFunctionaltında otomatik olarak eklenir. - Geliştirme modunda çalıştırılmaz: kurulum sonrasında olduğu gibi — yerel olarak kaydedilen uygulamalarda kurulum akışı tamamen atlanır, bu nedenle
yarn twenty devaltında kurulum öncesi hiç çalışmaz. Bunu elle tetiklemek içinyarn twenty exec --preInstallkullanın.
Kurulum öncesi vs kurulum sonrası: hangisini ne zaman kullanmalı
Doğru kurulum kancasını seçme
Kurulum öncesi vs kurulum sonrası: hangisini ne zaman kullanmalı
Doğru kurulum kancasını seçme
Her iki kanca da aynı kurulum akışının parçasıdır ve aynı Bir geçiş mevcut verileri aksi takdirde silecek veya bozacaksa Kural olarak:
InstallPayload’ı alır. Fark, çalışma alanı üstveri (metadata) geçişine göre ne zaman çalıştıklarıdır ve bu, güvenle erişebilecekleri verileri değiştirir.Kurulum öncesi her zaman senkrondur (kurulumu bloke eder ve iptal edebilir). Kurulum sonrası varsayılan olarak asenkrondur — otomatik yeniden denemelerle bir worker üzerinde kuyruğa alınır — ancak shouldRunSynchronously: true ile senkron yürütmeye geçebilir. Her modun ne zaman kullanılacağı için yukarıdaki definePostInstallLogicFunction akordeonuna bakın.Yeni şemanın mevcut olmasını gerektiren her şey için post-install kullanın. Bu yaygın durumdur:- Yeni eklenen nesne ve alanlara karşı varsayılan verileri tohumlama (ilk kayıtları, varsayılan görünümleri, demo içeriği oluşturma).
- Uygulamanın kimlik bilgileri artık mevcut olduğuna göre, üçüncü taraf hizmetlerle webhook’ları kaydetmek.
- Eşitlenmiş üstveriye (metadata) bağlı kurulumu tamamlamak için kendi API’nizi çağırmak.
- Her yükseltmede durumu uzlaştırması gereken idempotent “bu mevcut olsun” mantığı —
shouldRunOnVersionUpgrade: trueile birleştirin.
PostCard kaydı tohumlama:src/logic-functions/post-install.ts
pre-install kullanın. Kurulum öncesi önceki şemaya karşı çalıştığı ve hatalandığında yükseltmeyi geri aldığı için, riskli olan her şey için doğru yerdir:- Kaldırılmak veya yeniden yapılandırılmak üzere olan verileri yedekleme — örn. v2’de bir alanı kaldırıyorsunuz ve geçiş çalışmadan önce değerlerini başka bir alana kopyalamanız veya depolamaya aktarmanız gerekiyor.
- Yeni bir kısıtın geçersiz kılacağı kayıtları arşivleme — örn. bir alan
NOT NULLoluyor ve önce null değerli satırları silmeniz veya düzeltmeniz gerekiyor. - Uyumluluğu doğrulama ve mevcut veriler temiz bir şekilde geçirilemiyorsa yükseltmeyi reddetme — işleyiciden hata fırlatın ve kurulum, herhangi bir değişiklik uygulanmadan iptal edilir. Bu, uyumsuzluğu geçişin ortasında keşfetmekten daha güvenlidir.
- İlişkilendirmeyi kaybettirecek bir şema değişikliğinden önce verileri yeniden adlandırma veya yeniden anahtarlama.
src/logic-functions/pre-install.ts
| Şunu yapmak istiyorsunuz… | Kullan |
|---|---|
| Varsayılan verileri tohumlamak, çalışma alanını yapılandırmak, harici kaynakları kaydetmek | post-install |
| Kurulum yanıtını engellememesi gereken uzun süreli tohumlama veya üçüncü taraf çağrılarını çalıştırmak | post-install (varsayılan — shouldRunSynchronously: false, worker yeniden denemeleriyle) |
| Kurulum çağrısı döner dönmez çağıranın güveneceği hızlı kurulumu çalıştırmak | post-install ile shouldRunSynchronously: true |
| Yaklaşan geçişin kaybedeceği verileri okumak veya yedeklemek | pre-install |
| Mevcut verileri bozacak bir yükseltmeyi reddetmek | pre-install (işleyiciden hata fırlatmak) |
| Her yükseltmede uzlaştırma çalıştırmak | post-install ile shouldRunOnVersionUpgrade: true |
| Yalnızca ilk kurulumda tek seferlik kurulum yapmak | post-install ile shouldRunOnVersionUpgrade: false (varsayılan) |
Emin değilseniz, varsayılan olarak kurulum sonrasını tercih edin. Yalnızca geçişin kendisi yıkıcıysa ve önceki durum yok olmadan önce onu yakalamanız gerekiyorsa kurulum öncesine başvurun.