در سازمانهای بزرگ، هلدینگها و نهادهای بانکی، استقرار همزمان پورتال بومی مایکروسافت شیرپوینت با تقویم خورشیدی و موتور جریان کار Nintex Workflow & Forms Enterprise، ستون فقرات اتوماسیون مکاتبات اداری، مصوبات مالی و فرایندهای پرسنلی است. با این حال، با گذشت زمان و افزایش حجم درخواستها به صدها هزار گردشکار در ماه، رشد بیرویه دیتابیسهای تراکنشی نینتکس (NintexWorkflowDB)، ایجاد قفلهای همزمانی (Deadlocks) در جداول سوابق (Workflow History) و افت سرعت اجرای تایمر جابها، کل فارم شیرپوینت را با بحران مواجه میسازد.
بهرهگیری از بسته یکپارچه SharePoint + Nintex Enterprise Suite همراه با لایسنس معتبر و پایدار سازمانی، امکان پیادهسازی معماریهای پیشرفته چنددیتابیسی (Split Database Architecture)، کلاسترینگ با AlwaysOn Availability Groups و اتوماسیون پالایش دورهای دادهها را فراهم میآورد. این راهنمای مهندسی، استانداردها و تکنیکهای پیشرفته نگهداری فارمهای شیرپوینت و نینتکس در بالاترین سطح پایداری و تابآوری را تشریح مینماید.
۱. معماری تفکیک دیتابیسهای نینتکس (Split Database Architecture) #
در حالت پیشفرض و نصب اولیه، تمام دادههای پیکربندی و سوابق اجرای فرآیندها در یک دیتابیس مشترک ذخیره میشوند. در فارمهای رده سازمانی، باید دیتابیسهای اجرایی بر اساس وباپلیکیشنها یا واحدهای سازمانی تفکیک گردند تا ترافیک I/O دیسک در استوریج SAN توزیع شود:
┌────────────────────────────────────────────────────────┐
│ کلاستر سرورهای وب و اپلیکیشن شیرپوینت │
│ [WFE 01] [WFE 02] [APP 01] [APP 02] (Nintex) │
└──────────────────────────┬─────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ دیتابیس مرکزی پیکربندی: NintexWorkflowDB_Config │
│ - نگهداری مجوزها، اکشنهای سفارشی و فرادادههای مزرعه │
└──────────────────────────┬─────────────────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌────────────────────────┐ ┌────────────────────────┐
│ دیتابیس فرآیندهای مالی │ │ دیتابیس فرآیندهای اداری│
│ NintexDB_Finance_Prod │ │ NintexDB_HR_Prod │
│ (سهم استوریج پرسرعت) │ │ (سهم استوریج استاندارد)│
└────────────────────────┘ └────────────────────────┘
این تفکیک با استفاده از دستورات خط فرمان اختصاصی NWAdmin.exe انجام میشود:
# ایجاد دیتابیس اختصاصی جدید برای بخش فرآیندهای مالی
NWAdmin.exe -o AddDatabases -serverInstance "SQL-AG-LISTENER.licentra.lan" `
-databaseName "NintexDB_Finance_Prod"
# نگاشت دیتابیس جدید به وب اپلیکیشن مالی سازمان
NWAdmin.exe -o MapDatabaseToSite -databaseName "NintexDB_Finance_Prod" `
-url "https://portal.licentra.lan/sites/finance"
۲. مقایسه معماری State Machine در برابر Sequential Workflows #
یکی از متداولترین خطاهای معماران فرآیند، پیادهسازی فرآیندهای طولانیمدت به شکل خطی (Sequential) است. جدول زیر دلایل برتری الگوی State Machine را در فرآیندهای سازمانی نشان میدهد:
| مؤلفه ارزیابی فنی | فرآیندهای ترتیبی (Sequential) | فرآیندهای مبتنی بر ماشین حالت (State Machine) |
|---|---|---|
| بازگشت به مراحل قبلی (Loop-back) | نیازمند حلقههای تو در تو و رشد انفجاری حافظه | تغییر مستقیم State با اکشن Change State بدون سربار رم |
| تابآوری در ریاستارت سرور | ریسک خطای Corrupted Instance در وسط فرآیند | ذخیره وضعیت در دیتابیس و ادامه شفاف پس از ریبوت سرور |
| حجم سوابق تولیدی در دیتابیس | ثبت صدها اکشن تکراری در جدول سوابق | ثبت صرفاً تغییر وضعیتهای اصلی و کاهش ترافیک SQL |
| انعطاف در تغییرات فرآیندی | دشوار و اغلب نیازمند بازطراحی کامل | امکان افزودن یک حالت جدید به ماتریس بدون تغییر سایر بخشها |
| خوانایی نقشه فرآیند در کنسول | فلوچارتهای طویل با طول چندین متر | نمودار بلوکی منظم با جهتدهی شفاف بین وضعیتها |
۳. اتوماسیون پالایش دورهای دادههای تاریخی (Purge History Automation) #
جداول WorkflowProgress و WorkflowInstance در صورت پاکسازی نشدن، به سرعت به دهها گیگابایت میرسند و باعث کندی شدید باز شدن فرمهای کارتابل میشوند. اسکریپت پاورشل زیر به صورت زمانبندی شده در تایمر سرور اجرا شده و سوابق فرآیندهای تکمیلشده قدیمیتر از ۹۰ روز را پاکسازی میکند:
<#
.SYNOPSIS
Automated Purge of Nintex Workflow History Records for Large Enterprise Farms
#>
[CmdletBinding()]
param(
[int]$DaysOld = 90,
[string]$SiteUrl = "https://portal.licentra.lan",
[int]$BatchSize = 1000
)
$ErrorActionPreference = "Stop"
Write-Host "[INFO] Starting Nintex History Purge Routine (Older than $DaysOld days)..." -ForegroundColor Cyan
# Ensure SharePoint Snapin is available
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$nwAdminPath = "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\BIN\NWAdmin.exe"
if (-not (Test-Path $nwAdminPath)) {
throw "[FATAL] NWAdmin.exe not found at path: $nwAdminPath"
}
# Step 1: Purge Completed Workflow Data in chunks
Write-Host "[EXEC] Purging Completed Workflows..." -ForegroundColor Yellow
$purgeArgs = @(
"-o", "PurgeHistoryListData",
"-siteCollectionUrl", $SiteUrl,
"-days", $DaysOld,
"-state", "Completed",
"-batchSize", $BatchSize
)
Start-Process -FilePath $nwAdminPath -ArgumentList $purgeArgs -NoNewWindow -Wait
# Step 2: Purge Cancelled and Error Workflows
Write-Host "[EXEC] Purging Cancelled & Error Workflows..." -ForegroundColor Yellow
$purgeCancelledArgs = @(
"-o", "PurgeHistoryListData",
"-siteCollectionUrl", $SiteUrl,
"-days", $DaysOld,
"-state", "Cancelled",
"-batchSize", $BatchSize
)
Start-Process -FilePath $nwAdminPath -ArgumentList $purgeCancelledArgs -NoNewWindow -Wait
Write-Host "[SUCCESS] Nintex Workflow History purged successfully. SQL Fragmentation reduced." -ForegroundColor Green
۴. کلاسترینگ دیتابیسها با SQL Server AlwaysOn Availability Groups #
برای دستیابی به آپتایم ۹۹.۹۹٪ در فارمهای پدافندی و بانکی، تمام دیتابیسهای شیرپوینت و نینتکس در یک کلاستر چندگرهی قرار میگیرند:
-
1
مدل بازیابی (Recovery Model): تمامی دیتابیسهای نینتکس باید روی حالت Full تنظیم شوند.
-
2
پیکربندی Synchronous Commit: بین نود اصلی و نود ثانویه در دیتاسنتر اصلی، همگامسازی بیدرنگ بدون افت داده (Zero Data Loss) تنظیم گردد.
-
3
تنظیمات MultiSubnetFailover: رشته اتصال در پیکربندی فارم باید به شنونده AlwaysOn (Listener) متصل بوده و فلگ
MultiSubnetFailover=Trueفعال باشد تا در صورت جابجایی کلاستر، سرویس بدون نیاز به ریست IIS به کار خود ادامه دهد.
۵. چکلیست سلامت هفتگی فارم نینتکس #
برای پیشگیری از توقف فرآیندهای سازمانی:
-
اجرای دستور
NWAdmin.exe -o CheckWorkflowInstancesجهت شناسایی فرآیندهای معلق یا بدون پاسخ. -
بازبینی شاخص تکهتکهشدن (Index Fragmentation) جداول
WorkflowProgressدر دیتابیس و اجرای Reorganize / Rebuild در روزهای تعطیل. -
اطمینان از سلامت سرویس اکانت اجرای نینتکس و عدم انقضای پسورد در دایرکتوری ایزوله اکتیودایرکتوری.
-
بررسی دائمی وضعیت لایسنس پکیج در کنسول Central Administration جهت تضمین اعتبار مادامالعمر در سراسر سرورهای مزرعه.



