Geliştirici Dokümantasyonu
.NET 10 ve .NET Aspire mikroservis mimarisi üzerine kurulu NotusFlow süreç motorunu REST API, Webhooks, C# Scripting Sandbox ve AI servisleri ile sistemlerinize entegre edin.
Sistem Mimarisi & .NET Aspire
NotusFlow, dağıtık ve ölçeklenebilir mikroservis mimarisine sahiptir. Tüm servisler **.NET 10** platformunda geliştirilmiş olup **.NET Aspire** orkestrasyon motoru ile yönetilmektedir.
Gelen tüm HTTP/REST istekleri NotusFlow.Gateway (YARP) üzerinden doğru mikroservise (Identity, Workflow, Reporting) yönlendirilir.
Servisler arası iletişim Aspire Service Discovery URL yapıları ile gerçekleşir (http://identity, http://workflow).
Identity ve Workflow veritabanları PostgreSQL üzerinde izole depolanırken, oturum ve delegeler Redis ile önbelleğe alınır.
Kimlik Doğrulama & Multi-Tenancy
API istekleri oturum açınca verilen JWT ya da NotusFlow › API Token'ları sayfasından oluşturulan kişisel bir token (nf_…) ile doğrulanır. Token, sahibinin şirketi, rolleri ve izinleriyle bütün servislerde geçerlidir. Kiracı (Tenant) yalıtımı otomatik olarak DbContext seviyesinde uygulanır.
IgnoreQueryFilters() kullanımı SuperAdmin rolleri haricinde kesinlikle engellenmiştir.REST API İş Akışı & Görev Yönetimi
Süreç tetikleme, aktif kullanıcı görevlerini listeleme ve görev tamamlama işlemleri için YARP arkasındaki WorkflowExecution ve UserTasks uç noktalarını kullanın.
# 1. Yeni bir İş Akışı Örneği (Instance) Başlatmacurl -X POST https://gateway.notusflow.com/api/workflow-execution/start \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "definitionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "inputs": { "MusteriAdi": "Notussoft Yazılım", "SiparisTutari": 75000 } }'# 2. Bekleyen Kullanıcı Görevini Tamamlamacurl -X POST https://gateway.notusflow.com/api/user-tasks/task-9982/complete \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "OnayDurumu": "Approved", "Aciklama": "Bütçe onaylandı." }'
Webhook Entegrasyonu & HMAC-SHA256
NotusFlow süreci tamamlandığında veya görev atandığında alıcı URL adresinize HMAC-SHA256 imzalı POST istekleri gönderilir.
workflow.started, workflow.completed, task.created, task.completed, task.assigned
X-Notus-Event: <eventType>, X-Notus-Signature: <hex_hmac_sha256>, X-Notus-Delivery: <guid>, X-Notus-Attempt: <n>
Teslimat en az bir kez garantisiyle çalışır. Ulaşmayan bir gönderim 1 dk, 5 dk, 15 dk, 1 saat ve 6 saat aralıklarıyla beş kez denenir; zaman aşımı, bağlantı hatası, 5xx, 408 ve 429 yeniden denenir, diğer 4xx yanıtları reddedilmiş sayılır ve tekrar denenmez. Uç noktanız aynı olayı ikinci kez alabileceği için, X-Notus-Delivery değerini kullanarak tekrarları ayıklayın — bu değer denemeler arasında değişmez. Her gönderimin sonucu yönetim arayüzündeki Webhook > Gönderim kayıtları bölümünde 30 gün saklanır ve elle yeniden gönderilebilir.
bool VerifyWebhookSignature(string rawJsonBody, string receivedSignature, string secret) {using var hmac = new System.Security.Cryptography.HMACSHA256(Encoding.UTF8.GetBytes(secret));var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(rawJsonBody));var computedSignature = Convert.ToHexString(hash).ToLower();return string.Equals(computedSignature, receivedSignature, StringComparison.OrdinalIgnoreCase); }
C# Betik Motoru (Scripting) & Dynamic UI
NotusFlow ScriptingService altyapısı, form alanları ve iş akışı adımları üzerinde dinamik Roslyn C# betikleri yürütür. Kodlar ConcurrentDictionary ile temsilci (delegate) seviyesinde önbelleğe alınarak milisaniyelik hızla derlenir.
// Model verilerine erişim ve UI elemanı kontrolleridecimal siparisTutari = Convert.ToDecimal(Model.SiparisTutari ?? 0);string musteriTipi = Model.MusteriTipi?.ToString() ?? "Standart";decimal indirim = 0m;if (musteriTipi == "Premium" && siparisTutari > 50000m) { indirim = siparisTutari * 0.15m; UI.IndirimAlani.Visible = "true"; UI.OnayDugmesi.Disabled = "false"; }else{ UI.IndirimAlani.Visible = "false"; } Model.IndirimTutari = indirim; Model.NetToplam = siparisTutari - indirim;
Yapay Zeka (AI) Entegrasyon Servisi
NotusFlow AI mikroservisi, doğal dil komutları ile iş akışları oluşturmanıza ve kod tabanınızı indeksleyerek otomatik süreç önerileri sunmanıza imkan tanır.
Süreç şablonlarını doğal dille üretir ve iyileştirme tavsiyeleri verir.
Uygulamanızın C# betiklerini ve form tiplerini AI bellek havuzuna indeksler.
MCP: NotusFlow'u Yapay Zekâ Asistanınızdan Yönetin
NotusFlow bir MCP (Model Context Protocol) sunucusudur. Claude, ChatGPT, VS Code Copilot gibi bir yapay zekâ istemcisi süreçlerinizi okur, yeni bir süreç ya da mevcut sürecin yeni sürümünü hazırlar, doğrular, örnek veriyle dener ve onayınıza sunar. İstemci sizin yetkilerinizle ve yalnızca kendi şirketinizin verisiyle çalışır. Claude ve ChatGPT'de yalnızca adresi girersiniz; NotusFlow giriş ve onay ekranı açılır (OAuth). Claude Code, VS Code ve betikler kişisel API token'ıyla bağlanır.
- Claude (web ve masaüstü): Settings › Connectors › Add custom connector. Ad olarak NotusFlow, adres olarak
https://api.notusflow.com/mcpyazın ve Connect'e basın. NotusFlow'a giriş yapıp "İzin ver" dediğinizde bağlantı kurulur; token gerekmez, OAuth Client ID/Secret alanlarını boş bırakın. - ChatGPT: Ayarlar › Bağlayıcılar (geliştirici modu) › Oluştur. Adres olarak
https://api.notusflow.com/mcp, kimlik doğrulama olarak OAuth seçin; aynı NotusFlow onay ekranı açılır. - Erişimi yönetin: Bağladığınız uygulamalar NotusFlow'da API Token'ları › Bağlı uygulamalar bölümünde görünür; "Erişimi iptal et" bir dakika içinde etkili olur.
- Token ile bağlanacaksanız: NotusFlow'da API Token'ları sayfasından bir token oluşturun. Token yalnızca bir kez gösterilir; sizin yerinize işlem yapar, paylaşmayın ve gerekmeyince iptal edin.
- Claude Code:
claude mcp add --transport http notusflow https://api.notusflow.com/mcp \ --header "Authorization: Bearer nf_..." - VS Code (Copilot):
.vscode/mcp.json{ "servers": { "notusflow": { "type": "http", "url": "https://api.notusflow.com/mcp", "headers": { "Authorization": "Bearer ${input:notusflow-token}" } } }, "inputs": [ { "type": "promptString", "id": "notusflow-token", "description": "NotusFlow API token", "password": true } ] } - Claude Desktop:
claude_desktop_config.json(Node.js gerekir){ "mcpServers": { "notusflow": { "command": "npx", "args": ["mcp-remote", "https://api.notusflow.com/mcp", "--header", "Authorization:Bearer ${NOTUSFLOW_TOKEN}"], "env": { "NOTUSFLOW_TOKEN": "nf_..." } } } } - Deneyin: "NotusFlow'da hangi süreçler var?" diye sorun. İstemci önce
whoamiile kim olarak bağlandığını, sonra süreç listesini gösterir.
Süreç tanımları ve tam tanım JSON'u.
Süreçler, açık görevler, geçmiş ve form verisi.
Veri kaynakları, zamanlanmış işler, departman, pozisyon ve kişiler. Bağlantı dizesi ve kişisel bilgi dönmez.
Tanımı kaydetmeden doğrular; sorunları düğüm adıyla raporlar.
Örnek veriyle dener: betikler çalışır, hiçbir şey gönderilmez ya da kaydedilmez.
Yeni süreç ya da yeni sürüm önerir; yönetici onayıyla yayımlanır.
Sizin adınıza gerçek işlemler; kurallar ekrandakiyle aynı.
Kullanıcı listesini içe aktarmadan önce satır satır önizler.
notusflow://docs/definition-spec kaynağından okur.Raporlama & Analiz Servisi
NotusFlow.Reporting mikroservisi, tamamlanan süreçlerin tamamlama sürelerini, darboğaz oluşturan görev adımlarını ve kullanıcı bazlı performans analizlerini REST API üzerinden sağlar.
Audit Logging & Bildirim Servisleri
Süreçler üzerindeki tüm veri değişiklikleri ve adım geçişleri değişmez (immutable) denetim günlüklerine kaydedilir.
Belirtilen süreç örneğinin tüm geçmiş adımlarını ve parametre değişimlerini döndürür.
Kullanıcının aktif sistem bildirimlerini topluca okundu olarak işaretler.
Hata Standartları & HTTP Yanıt Formatı
NotusFlow API katmanı tüm yanıtlarında standart ApiResponse<T> sarmalayıcısını kullanır.
{ "success": true, "data": { "instanceId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "Running" }, "error": null, "timestamp": "2026-07-22T12:00:00Z" }Zamanlanmış Tetikleyiciler & Veri Kaynakları
Zamanlanmış bir tetikleyici, cron ifadesiyle ya da basit zaman seçiciyle çalışır ve bir veri kaynağındaki her yeni satır için bir süreç başlatır. İşlenen satırlar kayıt altına alındığı için aynı satır iki kez süreç açmaz. Veritabanı bağlantıları süreç tanımında değil, şifreli veri kaynağı kayıtlarında tutulur.
GET /api/workflow-schedules
Kiracının zamanlanmış işleri. {id}/runs koşu geçmişini, {id}/run elle tetiklemeyi, {id}/enabled açıp kapamayı sağlar.
GET /api/datasources
Tanımlı veri kaynakları. {id}/columns sütun listesini, execute/{id} parametreli sorgu çalıştırmayı döndürür.
Bağlantı dizeleri Data Protection ile şifrelenerek saklanır ve API yanıtlarında maskelenir. Süreç tanımını görebilen bir kullanıcı bağlantı bilgisini göremez. SQL Server ve PostgreSQL desteklenir; Logo, Netsis ve Mikro için hazır sorgu şablonları tasarımcıda listelenir.
Entegrasyon Konnektörleri
Yeni bir sağlayıcı eklemek için kod yazılmaz. Sağlayıcıyı bildirimsel bir tanımla anlatırsınız; tanım Integration:Providers ayarında saklanır ve tasarımcıdaki entegrasyon düğümünde operasyonlarıyla listelenir. Elle yazılmış bir konnektör aynı anahtarı kullanırsa tanımın yerine geçer.
{ "Key": "kargo-takip", "BaseUrl": "https://api.kargofirmasi.com", "AuthMode": "OAuth2ClientCredentials", "TokenPath": "/oauth/token", "IdempotencyHeader": "X-Idempotency-Key", "Operations": [ { "Key": "gonderi-olustur", "Method": "POST", "Path": "/v1/shipments", "IsWrite": true, "Inputs": ["alici", "adres", "agirlik"], "OutputMappings": { "takipNo": "trackingNumber" } } ] }AuthMode
ApiKey, Basic ve OAuth2ClientCredentials. Alınan token süresi boyunca önbellekte tutulur.
IsWrite
Yazan operasyonlar çağrı kaydıyla eşleşir; aynı süreç adımı tekrarlansa bile istek sağlayıcıya iki kez gitmez.
OutputMappings
Yanıttaki alanları süreç değişkenine bağlar; sonraki adımlar {{takipNo}} ile kullanır.
Kimlik bilgileri tanımın içinde değil, ayrı ve şifreli bir kimlik deposunda tutulur; yönetim portalındaki entegrasyon ayarları ekranından girilir.
Süreç Madenciliği & Süreç Testleri
Süreç madenciliği ucu, bir tanımın geçmiş koşularından düğüm ve kenar istatistiklerini döndürür: her adımın medyan ve p95 süresi, hata sayısı ve her bağlantının kaç kez geçildiği. Tasarım tuvalindeki ısı haritası bu veriyi çizer.
GET /api/reports/process-mining/{definitionId}
Kiracı kapsamlıdır; tarih aralığı sorgu parametreleriyle daraltılabilir.
Süreç testleri, bir akışı gerçek veri yazmadan senaryolara karşı koşturur. Senaryo, grafikten türetilir: hangi düğümde hangi kararın verileceğini ve hangi değerin döneceğini senaryo söyler, onay ve zamanlayıcı adımları koşucu tarafından sürülür.
GET /api/workflow-tests/definition/{id}
Tanıma bağlı senaryolar. POST ile yeni senaryo, PUT/DELETE ile güncelleme ve silme.
POST /api/workflow-tests/definition/{id}/run
Tanımın tüm senaryolarını koşturur. Tek senaryo için {id}/run, geçmiş için {id}/runs.
Testler bellekte, izole bir yürütme bağlamında koşar: e-posta gitmez, dış çağrı yapılmaz, kalıcı kayıt oluşmaz. Yayın ekranı senaryosu düşen bir akış için uyarı gösterir, yayını engellemez.
Geliştirici Sıkça Sorulan Sorular (SSS)
14. Teknik Destek ve SLA Kılavuzu
Notussoft güvencesiyle, entegrasyon süreçlerinizin kesintisiz yürümesi için kurumsal seviyede öncelikli teknik destek ve Hizmet Seviyesi Anlaşması (SLA) şartları sunuyoruz.
L1 - Kritik Hata SLA
Kritik çalışma zamanı ve kesinti durumları için en geç 2 saat içinde müdahale garantisi.
L2 - Entegrasyon SLA
API entegrasyonu ve C# script geliştirmeleri için en geç 1 iş günü yanıt süresi.
Doğrudan Mimar Desteği
Notussoft kıdemli yazılım mimarları ile canlı video konferans entegrasyon toplantıları.
Teknik yardıma mı ihtiyacınız var?
Mühendislerimiz entegrasyon sorularınız için hazır bekliyor.