فرم‌ساز و وب‌پارتتست و صحه‌گذاری شده On-Premises

راهنمای پیشرفته پیاده‌سازی فرم‌های چندمرحله‌ای، تب‌بندی پویا و کنترل دسترسی ستونی با KWizCom Forms در شیرپوینت On-Premises

راهنمای فنی عمیق طراحی فرم‌های پیشرفته سازمانی با پکیج KWizCom Forms؛ تب‌بندی پویا، کنترل سطح دسترسی فیلدها و ستون‌ها، فیلترهای آبشاری، عدم شکست سقف ۵۰۰۰ آیتم شیرپوینت و استقرار آفلاین در مزرعه.

دپارتمان تخصصی فرم‌سازها و راهکارهای مشارکتی شیرپوینت Licentraتیم مهندسی و تضمین پایداری
تاریخ انتشار: ۱۲ اسفند ۱۴۰۴
زمان مطالعه: ۵ دقیقه
حجم مطلب: ۱٬۰۲۳ کلمه
اندازه متن:

آیا این راهنمای فنی برای شما مفید و کاربردی بود؟

بازخورد شما مستقیماً به تیم مهندسی نرم‌افزار سازمانی Licentra جهت غنابخشی مستندات منتقل می‌گردد.

راهنمای پیشرفته پیاده‌سازی فرم‌های چندمرحله‌ای، تب‌بندی پویا و کنترل دسترسی ستونی با KWizCom Forms در شیرپوینت On-Premises
خلاصه اجرایی و نکات کلیدی این راهنما

این مقاله به عنوان مستند فنی رسمی و راهنمای عملیاتی، نیازمندی‌ها، ساختار دیتابیس، سناریوهای مانیتورینگ و فرآیندهای راه‌اندازی و پایداری را در محیط‌های واقعی مورد تحلیل قرار می‌دهد:

محیط استقرار: شبکه‌های ایزوله On-Premises و دیتاسنترهای Air-Gapped
مخاطبان هدف: مدیران سیستم، کارشناسان دواپس و مهندسان شبکه
لایسنسینگ: دائمی و بدون نیاز به اتصال یا اعتبارسنجی اینترنتی
پشتیبانی: اعتبارسنجی‌شده در لابراتوار فارم‌های عملیاتی Licentra

در سازمان‌های بزرگ و هلدینگ‌هایی که هسته مکاتبات و ثبت اطلاعات خود را بر بستر مایکروسافت شیرپوینت (SharePoint Server 2016 / 2019 / Subscription Edition) مستقر کرده‌اند، فرم‌های پیش‌فرض شیرپوینت پاسخگوی الزامات امنیتی و فرایندی نیستند. نیاز به پنهان‌سازی ستون‌های حقوقی و مالی از پرسنل عادی، نمایش تب‌های مرحله‌ای بر اساس پیشرفت وضعیت درخواست، و اعتبارسنجی مقادیر فیلدها بر مبنای سایر لیست‌ها، مدیران سیستم را ناچار به استفاده از افزونه‌های فرم‌ساز می‌سازد.

مجموعه ابزارهای KWizCom Forms Enterprise Suite استانداردترین راهکار توسعه فرم‌ها در شیرپوینت On-Premises است؛ زیرا بر خلاف فرم‌سازهای سنگین که ساختار صفحات شیرپوینت را به کلی بازنویسی می‌کنند، KWizCom به عنوان یک لایه منطقی استاندارد (Extension Framework) روی فرم‌های بومی NewForm.aspx، EditForm.aspx و DispForm.aspx سوار می‌شود. این معماری تضمین می‌کند که هیچ خللی در خزشگر موتور جستجو (Search Crawler) یا سقف آستانه نمایش لیست‌ها (List View Threshold) ایجاد نگردد. در این مقاله تخصصی، نحوه پیاده‌سازی کنترل دسترسی فیلدی، تب‌بندی تعاملی و استقرار آفلاین در شبکه ایزوله بررسی می‌شود.

کنسول مدیریت ماژول‌های KWizCom و تنظیمات امنیتی فیلدها در شیرپوینت On-Premises
📷 کنسول مدیریت ماژول‌های KWizCom و تنظیمات امنیتی فیلدها در شیرپوینت On-Premises

۱. معماری لایه‌ای KWizCom Forms و تفاوت آن با ابزارهای بازنویسی فرم #

بسیاری از سازمان‌ها تجربه تلخی از به‌کارگیری فرم‌سازهایی دارند که تمام کدهای صفحه را به یک iframe یا اسکریپت جاوااسکریپت غیرخوانا تبدیل می‌کنند. شکل زیر نحوه تزریق لایه‌ای KWizCom را در مقایسه با سایر ابزارها نشان می‌دهد:

text
       ┌────────────────────────────────────────────────────────┐
       │             درخواست کاربر / مرورگر پرسنل              │
       └──────────────────────────┬─────────────────────────────┘
                                  │
                                  ▼
       ┌────────────────────────────────────────────────────────┐
       │         موتور ارزیابی قوانین KWizCom (Client & Server) │
       │  - بررسی عضویت کاربر در گروه‌های امنیتی AD / SP        │
       │  - ارزیابی وضعیت گردش‌کار و شرایط مقادیر فیلدها          │
       │  - اعمال قوانین مخفی‌سازی / غیرفعال‌سازی ستون‌ها       │
       └──────────────────────────┬─────────────────────────────┘
                                  │
                                  ▼
       ┌────────────────────────────────────────────────────────┐
       │         صفحه فرم استاندارد شیرپوینت (New / Edit Form)  │
       │  - تولید ساختار تب‌ها (Tabs & Accordion Containers)    │
       │  - اتصال به فیلترهای آبشاری (Cascading Lookups)        │
       │  - اتصال مستقیم به دیتابیس بدون دستکاری سورس صفحه      │
       └────────────────────────────────────────────────────────┘

۲. جدول مقایسه قابلیت‌های امنیتی ستون‌ها در KWizCom و شیرپوینت خام #

شیرپوینت در حالت استاندارد هیچ مکانیزمی برای تفکیک دسترسی ستون‌ها (Column-Level Security) ندارد. جدول زیر نشان می‌دهد KWizCom چگونه این شکاف امنیتی را پر می‌کند:

سناریوی عملیاتی سازمانشیرپوینت خام (Out-of-the-Box)شیرپوینت مجهز به KWizCom Forms Suite
مخفی‌سازی فیلدهای مالی از کارشناسغیرممکن (همه ستون‌ها برای افراد دارای دسترسی خواندن/نوشتن باز است)اعمال مجوز ستونی بر اساس گروه کاربری یا مقدار فیلد وضعیت
فیلدهای فقط‌خواندنی (Read-Only) شرطیفقط با کدنویسی پیچیده JS Link / SPFxتعریف قوانین بصری No-Code برای فقط‌خواندنی شدن ستون
تب‌بندی و گروه‌بندی فرم‌های طولانیفرم‌های بی‌پایان با اسکرول عمودی بسیار زیاددسته‌بندی در تب‌های افقی، عمودی، یا آکاردئونی واکنش‌گرا
فیلترهای آبشاری (استان -> شهر -> شعبه)نیازمند کدهای غیرپایدار REST و جاوااسکریپتماژول Cascading Lookup با کش سمت کلاینت و سرعت بالا
عبور از سقف ۵۰۰۰ آیتم (List View Threshold)خطا در زمان باز شدن فرم و کرش کوئری‌هاصفحه‌بندی هوشمند و اتصال به ایندکس‌های کامپایل‌شده
پشتیبانی از شبکه‌های بدون اینترنت (Air-Gapped)نیازمند اتصال CDN در بسیاری از فریمورک‌های فرانت‌اند۱۰۰٪ فایل‌های JS/CSS به صورت محلی در Hive 15/16 ذخیره هستند

۳. پیکربندی قوانین امنیتی فیلدها (Field-Level Permissions) #

یکی از پرکاربردترین سناریوها، مخفی‌سازی ستون "نظر مدیرعامل" و "سقف اعتبار مصوب" در فرم درخواست وام است. در KWizCom، این قوانین از طریق فایل XML یا کنسول وب ذخیره می‌شوند:

xml
<!-- نمونه پیکربندی قانون دسترسی فیلد بر اساس گروه امنیتی -->
<FieldPermissionRule FieldName="ApprovedCreditLimit" TargetState="Hidden">
  <Conditions Operator="And">
    <Condition Field="RequestStatus" Operator="Equal" Value="Draft" />
    <UserCondition Type="NotInGroup" TargetGroup="FinancialManagers" />
  </Conditions>
</FieldPermissionRule>

<FieldPermissionRule FieldName="ManagerComments" TargetState="ReadOnly">
  <Conditions Operator="Or">
    <Condition Field="RequestStatus" Operator="Equal" Value="Approved" />
    <Condition Field="RequestStatus" Operator="Equal" Value="Rejected" />
  </Conditions>
</FieldPermissionRule>

این قوانین علاوه بر سمت مرورگر، در زمان فراخوانی‌های ذخیره‌سازی داده اعتبارسنجی می‌شوند تا پرسنل آشنا به ابزارهای Inspect نتوانند با تغییر DOM مقادیر غیرمجاز ثبت کنند.

۴. استقرار خودکار پکیج WSP در سراسر مزرعه با PowerShell #

برای استقرار پکیج در مزارع چندسروری شامل سرورهای Front-End و Application بدون نیاز به اینترنت، اسکریپت زیر در محیط PowerShell اجرا می‌شود:

powershell
<#
.SYNOPSIS
    Deploy KWizCom Enterprise Forms Suite WSP to SharePoint Farm
#>
$ErrorActionPreference = "Stop"

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

Write-Host "[DEPLOY] Checking KWizCom Solution Packages..." -ForegroundColor Cyan

$wspDirectory = "C:\Installers\KWizCom"
$solutions = @(
    "KWizCom.Forms.Foundation.wsp",
    "KWizCom.Forms.FieldPermissions.wsp",
    "KWizCom.Forms.CascadingLookups.wsp"
)

foreach ($wsp in $solutions) {
    $fullPath = Join-Path $wspDirectory $wsp
    if (-not (Test-Path $fullPath)) {
        throw "[FATAL] Package $wsp not found at $fullPath"
    }

    $existing = Get-SPSolution -Identity $wsp -ErrorAction SilentlyContinue
    if (-not $existing) {
        Write-Host "[ADD] Adding $wsp to Farm Solution Store..." -ForegroundColor Yellow
        Add-SPSolution -LiteralPath $fullPath
    }

    Write-Host "[INSTALL] Deploying $wsp globally with Full-Trust..." -ForegroundColor Green
    Install-SPSolution -Identity $wsp -GACDeployment -AllWebApplications -Force
}

# Restart Web Applications Application Pools
Write-Host "[POOLS] Recycling IIS Worker Processes..." -ForegroundColor Cyan
Invoke-Command -ScriptBlock {
    Get-ChildItem "IIS:\AppPools" | Where-Object { $_.Name -like "SharePoint*" } | Restart-WebAppPool
}

Write-Host "[SUCCESS] KWizCom Suite successfully deployed and active farm-wide." -ForegroundColor Green

۵. بهینه‌سازی فرم‌های حجیم و عبور از خطای سقف ۵۰۰۰ آیتم #

هنگامی که لیست‌های مرجع در فرم‌ها به بیش از ۵,۰۰۰ رکورد می‌رسند، فراخوانی‌های عادی در شیرپوینت با خطای List View Threshold Exceeded متوقف می‌شوند. برای جلوگیری از این بحران:

  1. 1
    ایندکس‌گذاری فیلدهای والد در Cascading Lookup: در لیست‌های مرجع، تمام فیلدهایی که در شروط برابری شرکت دارند، باید حتماً در بخش Indexed Columns لیست شیرپوینت ثبت گردند.
  2. 2
    فعال‌سازی کشینگ سمت سرور KWizCom: در تنظیمات عمومی مزرعه، گزینه Enable Cache for Lookups فعال شود تا مقادیر تکراری جداول پایه به جای دیتابیس از حافظه رم سرویس فرانت‌اند خوانده شوند.
  3. 3
    محدودسازی نتایج جستجو به ۲۰ رکورد: فیلد آبشاری را به حالت جستجوی حین تایپ (Auto-Complete Search) تغییر دهید تا از لود شدن هزاران گزینه درون المنت