این خصوصیت دارای دو حالت فعال و غیر فعال است. زمانی که فعال باشد زی فریم به کاربران اجازه کارکردن به صورت همزمان بر روی دادهها و رکوردهای مربوط به این فرم را نمی دهد. به عبارتی، زمانی که یک رکورد توسط کاربر A جهت ویرایش انتخاب شود، کاربر B نمی تواند فرم مربوط به رکورد انتخابی توسط کاربر A را مشاهده نماید.
مدل اجرای ذخیره سازی اطلاعات در بانک اطلاعاتی است که این مقدار به صورت پیش فرض برابر با ZFrameMode قرار داده شده است تا عملیات CRUD در بانک اطلاعاتی صورت گیرد. در زبان های برنامه نویسی CRUD برای چهار عمل اصلی به کار می رود که روی منابع ذخیره سازی مثل دیتابیس انجام می شود. این چهار عمل عبارتند از: درج اطلاعات، خواندن اطلاعات ، ویرایش و حذف اطلاعات.
Create: به معنی ایجاد می باشد. به عملیات درج/ اضافه کردن یک رکورد جدید گفته می شود.
Read: به معنی خواندن اطلاعات از پایگاه داده گفته می شود. در بعضی منابع برای حرف R از retrieve هم استفاده می شود که به معنی واکشی اطلاعات می باشد.
Update: به معنی ویرایش اطلاعات می باشد.
Delete: به معنی حذف اطلاعات از منبع داده (پایگاه داده یا دیتابیس) می باشد.
برخی فرم ها در سامانه نیازمند ذخیره کردن اطلاعات خود در بانک اطلاعاتی هستند. به همین دلیل، زی فریم برای تسهیل این فرایند ابزارهایی را در اختیار کاربر قرار داده است تا به روش دلخواه خود این فرایند ذخیره سازی را انجام دهد. همانطور که بیان شد اگر کاربر بخواهد از عملیات CRUD برای ذخیره سازی اطلاعات استفاده کند مقدار این خصوصیت را برابر ZFrameMode قرار می دهد. اما در مواردی که کاربر برای ذخیره اطلاعات در بانک اطلاعاتی بخواهد از رویه های دیتابیسی (Procedure) استفاده کند، باید این خصوصیت را برابر با مقدار Manual قرار دهد.
این خصوصیت شامل یک کد SQL است که به صورت پیش فرض هنگام ساخته شدن یک فرم مقدار دهی می شود. این کد برای واکشی رکوردها و برای پرکردن اقلام اطلاعاتی فرم مورد نیاز است. مقدار پیش فرض:
زمانی که زی فریم به اطلاعات یک رکورد نیاز دارد با استفاده از این کد به صورت خودکار Query تکمیلی را ساخته و آن کد دستوری را به بانک اطلاعاتی منتقل می کند تا از اطلاعات خروجی برای مقداردهی کنترل های داخل فرم استفاده کند. نکته بسیار مهم برای فهم بهتر این مسئله آن است که در هر فرم یک کنترل به عنوان کلید (معمولا اولین کنترل یک فرم) در فرم و جدول وجود دارد. زمانی که کاربر در زی فریم یک رکورد را انتخاب کند (چه در GRID و یا با استفاده از API های موجود در زی فریم) زی فریم به صورت هوشمند Query تکمیلی را می سازد، که یک کوئری مشابه زیر است:
همچنین این کد را برای بانک اطلاعاتی ارسال کرده و منتظر دریافت جواب می ماند. زمانی که اطلاعات از سمت بانک اطلاعاتی به زی فریم داده شد، زی فریم مقادیر دریافتی را در کنترل های موجود جایگذاری می کند.
زمانی که یک فرم ساخته شود و این فرم از جنس Grid باشد، تمام اطلاعات جدول مربوطه در این Grid نمایش داده می شود. اما برای آنکه بتوان ستونهای دلخواه جدول نمایش داده شود یا به عبارتی برای سفارشی سازی نحوه نمایش اطلاعات داخل Grid می توان از خصوصیت Gris Data Source استفاده نمود. مقدار داخل آن یک کد Select از پایگاه داده است که اطلاعات را برای فرم مورد نظر واکشی می کند. به عبارت دیگر، تنها کافیست در این خصوصیت دستوری مشابه آنچه در SQL Server برای نمایش ستونهای دلخواه از جدول نوشته می شود، قرار داده شود.
اولین فیلد خروجی این دستور به عنوان کلید فرم و رکورد در نظر گرفته خواهد شد که به کاربر نمایش داده نخواهد شد. از این فیلد در Query موجود در خصوصیت Form Data Source (که در قسمت قبل توضیح داده شد) برای واکشی اطلاعات رکورد استفاده می شود.
این خصوصیت عنوان فرم را مشخص می کند. زمانی که یک فرم ساخته شود، امکان دارد از واژه های فنی و یا عبارت های غیر عامیانه استفاده شده باشد. با این خصوصیت می توان واژه یا عبارتی متعارف برای عنوان فرم تعیین نمود. برای مثال نام یک فرم ممکن است به صورت frmPurchaseRequest و عنوانی که به کاربر نمایش داده می شود (Caption) برابر با PurchaseRequestباشد. اگر بخواهیم از عبارتی مطلوب جهت نمایش به کاربر برای عنوان این فرم استفاده کنیم، در قسمت Caption خواهیم نوشت: "درخواست خرید"
در تصویر زیر عنوان "درخواست خرید" به عنوانCaption برای این فرم تعیین شده است.
در زی فریم می توان برای فرم هایی که ساخته می شود استایل و نمایش گرافیگی مورد نظر کاربر را ایجاد نمود.
در ساخت یک فرم، یکی از مهمترین خصوصیات آن چیدمان ذاتی فرم است. یعنی فرم ذاتا چیدمانش لاتین و چپ به راست است یا فارسی/عربی و راست به چپ است. کاربر می تواند با انتخاب بین گزینه های موجود در این خصوصیت (RightToLeft و LeftToRight)، چیدمان مورد نظر را شکل دهد.
در زی فریم توسعه نرم افزارهای چندزبانه نیز امکان پذیر است.
در برخی موارد ممکن است توسعه دهنده بخواهد از فایل های CSS و یا جاوا اسکریپت های دیگری به جز اقلام پیش فرض استفاده نماید. در این حالت، خصوصیت Header Tag کمک می کند تا او بتواند آدرس فایل های مورد نظر را در زمان Render گرفتن به قسمت Header فرم اضافه نماید.
آدرس فایل می تواند داخل آدرس دامین برنامه و یا یک آدرس خارجی باشد. برای مثال آدرس فایل های CSS مربوط به bootstrap .
اگر یک فرم از جنس Grid ساخته شده باشد، این فرم به دو صورت می تواند در اختیار کاربر قرار گیرد:
حالت اول EDIT و حالت دوم Default.
در حالت Edit زمانی که کاربر وارد یک فرم می شود، نمی تواند فرم را ببیند بلکه تنها نوار ابزار و اطلاعات داخل Grid را مشاهده می کند. همچنین زمانی که بر روی یک رکورد و یا بر روی دکمه "ثبت رکورد جدید" کلیک کند، فرم مورد نظر داخل یک پنجره جدید باز می شود. این حالت برای فرمهایی با اقلام اطلاعاتی زیاد مطلوب است.
نمایش اطلاعات Grid به صورت پیش فرض در حالت Edit
نمایش فرم پس از کلیک بر روی دکمه "ثبت رکورد جدید" در حالت Edit
در حالت Default زمانی که کاربر وارد یک فرم شود، اقلام اطلاعاتی و فرم در کنار دیگر المان ها (نوار ابزار و Grid) قابل مشاهده است. این حالت برای فرم هایی که اقلام اطلاعاتی کمی دارند پیشنهاد می گردد.
مشاهده همزمان فرم و Grid در حالت Default
به منظور دسته بندی راحت تر و مدیریت بهتر سامانه، نام فرم باید یک نام یگانه و منحصر به فرد انتخاب شود. هنگامی که یک فرم بر اساس یک جدول ساخته شود، زی فریم به صورت پیش فرض از عبارت frm به عنوان پیشوند در کنار نام جدول استفاده می کند تا یک نام منحصر به فرد برای فرم بسازد. لازم به ذکر است که کاربر می تواند به صورت دلخواه این نام را تغییر دهد.
اگر توسعه دهنده بخواهد پیش از آن که کاربر اطلاعات را ارسال کند، صحت اطلاعات ارسالی او از نظر ساختار بررسی شود (مانند اجباری بودن اقلام اطلاعاتی و همچنین صحت ساختار اطلاعات مانند آنکه کاربر فقط عدد وارد کند و یا فقط ایمیل با ساختار درست وارد نماید)، می تواند از خصوصیت Validator استفاده نماید. این خصوصیت که درون کنترل ها تعبیه شده است، تنها به توسعه دهنده اجازه می دهد تا به صورت کلی بتواند این نوع بررسی اطلاعات را درون فرم انجام دهد. در نتیجه کاربر نمی تواند اطلاعاتی خارج از ساختار تعریف شده درون خصوصیت Validator وارد نماید.
زمانی که تعداد اطلاعات مربوط به یک فرم زیاد باشد (مانند لیست تراکنش های روز در یک بانک که ممکن است به چندین هزار و یا میلیون رکورد برسد)، اگر کاربر برای نمایش اطلاعات ثبت شده در این جداول از Grid استفاده کند دچار مشکل خواهد شد. در نتیجه می بایست اطلاعات را به صورت صفحه به صفحه بارگذاری کند تا برای بانک اطلاعاتی و همچنین Application Server مشکلی در امر بارگذاری اطلاعات رخ ندهد. بنابراین علاوه بر آنکه باید مقدار این خصوصیت برابر با Dynamic باشد،Grid Count Query نیز باید مقداردهی شود. اما زمانی که حجم اطلاعات کم باشد مشکلی پیش نخواهد آمد و در نتیجه می توان مقدار این خصوصیت را static قرار داد.
همانگونه که در قسمت قبل گفته شد، در مواقعی که حجم رکوردها بالاست، باید مقدار Grid Loading Mode در حالت Dynamic قرار گیرد. در این زمان، از آنجا که سیستم درک درستی از تعداد کل رکوردها ندارد، درنتیجه نمی تواند تعداد صفحات Grid را نمایش دهد. درنتیجه نیاز به یک Query بوده تا تعیین شود که در کل چه تعداد رکورد وجود دارد و در نتیجه برای نمایش این اطلاعات به چند صفحه نیاز است. البته این اطلاعات ممکن است در قسمتهای شاخص گذاری شده داخل بانک اطلاعاتی و یا برخی از فیلدهایی که آمار و ارقام را برای کاربر ذخیره می کنند نیز باشد.
در واقع درون خصوصیت Grid Count Query یک کوئری نوشته می شود که صرفا یک عدد بر می گرداند که بیانگر تعداد رکوردهای موجود در جدول است. سیستم با استفاده از این عدد می تواند تشخیص دهد که صفحه بندی را به درستی انجام دهد.
در زی فریم زمانی که یک فرم به صورت Grid نمایش داده شده باشد، در کنار هر رکورد از Grid یک دکمه قرار خواهد گرفت که با انتخاب آن می توان آن رکورد را انتخاب نمود. با استفاده از خصوصیت Grid Select Text می توان عدد یا واژه ای داخل آن دکمه قرار داد تا هنگام نمایش، این عدد یا واژه داخل دکمه به کاربر نشان داده شود. همچنین با قرار دادن مقدار null درون این خصوصیت می توان این دکمه را حذف کرد.
در برخی موارد نیاز است تا مقدار انتخابی توسط کاربر، داخل Session Value ذخیره شود تا بر اساس آنچه کاربر انتخاب کرده است، عملیاتی صورت گیرد. به عبارت دیگر اگر بخواهیم زمانی که کاربر بر روی یک رکورد (موجود در یک گرید) کلیک و آن را انتخاب کرد، از انتخاب او آگاه شده و بر اساس این انتخاب عملیاتی صورت دهیم، می توان id رکورد انتخاب شده را در یک Session ذخیره نماییم و برای این Session یک نام دلخواه درون خصوصیت Grid Session Access قرار دهیم.
برای مثال فرض کنید بخواهیم کلید دوره مالی انتخابی توسط کاربر را داخل یک Session با نام ActiveYear ذخیره کنیم. زمانی که مقدار این خصوصیت را برابر با ActiveYear قرار دهیم، اگر کاربر بر روی Grid نمایان شده در این فرم کلیک کند، مقدار موجود در کلید فرم به داخل Session ActiveYear انتقال پیدا می کند، که در ادامه می توان سازوکار برنامه را با استفاده از این مقدار پیش برد.
کش کردن اطلاعات در داخل حافطه Application Server، یکی از مهمترین کارهایی است که زی فریم قادر به انجام آن است تا هر بار که کاربر به آن داده ها نیاز دارد، لزومی به واکشی داده ها از سمت بانک اطلاعاتی نباشد. درنتیجه سامانه چابکتر شده و سریع تر پاسخگوی کاربر خواهد بود. زمانی که این خصوصیت مقدار گیرد (این مقدار از نوع رشته ای بوده و یک نام یکتا بر اساس اقلام داده است)، اگر داده ای داخل Cache تعریف شده درون سیستم وجود داشته باشد، دیگر سیستم به دنبال واکشی اطلاعات از بانک اطلاعاتی نخواهد رفت و از همین اطلاعات بارگذاری شده استفاده می کند.
البته می توان داخل سیستم روال هایی نیز برای از بین بردن اطلاعات و ایجاد نیاز به بارگذاری مجدد داده تعریف نمود.
این خصوصیت تنها در زمان توسعه نرم افزار کارایی داشته و برای دسته بندی فرم ها استفاده می شود. زمانی که تعداد فرم ها در لایه توسعه (Development) زیاد باشد، نیاز به پوشه بندی فرم ها نیز محسوس خواهد بود. به همین دلیل داخل ZIDE گزینه ای برای انجام این پوشه بندی قرار داده شده است. جهت مدیریتPackage ها، کاربر می تواند از منوی زیر اقدام کرده و یا از کلید میانبر Ctrl+ALT+Shift+P استفاده کند.
Design >> Package Management
در این قسمت کاربر می تواند Package های مورد نیاز را ساخته و فرم ها را به دسته بندی های مورد نظر اختصاص دهد.
با تغییر این خصوصیت می توان مدل ارائه یا الگوی فرم را تغییر داد. مفهوم هر یک از گزینه های موجود در این خصوصیت در آموزش معرفی انواع فرم در زی فریم توضیح داده شده است.
امکان سفارشی سازی فرم ها یکی از مهمترین توانمندی های زی فریم است. کاربر با مقداردهی این خصوصیت (مقدار ورودی فقط باید از جنس عدد باشد برای مثال 1001) می تواند داخل موتور اجرای زی فریم رفتارها و رخدادهای این فرم را با کد های جاوا مدیریت نماید. در قسمت آموزش های پیشرفته زی فریم به این بخش بیشتر پرداخته شده است.
این خصوصیت قابلیت تغییر ندارد و تنها جهت اطلاع رسانی به کاربر است. مقدار عدد موجود در این خصوصیت یک کد منحصر به فرد و یکتا است که ساختار زی فریم به صورت خودکار به این فرم اختصاص می دهد.
مقدار این خصوصت منحصر به فرد و یکتا بوده و توسط زی فریم به صورت خودکار به هر فرم اختصاص داده می شود. این مقدار در امر پشتیبان گیری و مدیریت دانش، Import / Export و استفاده از یک فرم در چند پروژه کاربرد دارد.
در برخی مواقع کاربر برای بعضی از فرم ها گزارشهایی مانند لیست دانش آموزان ترم جاری، گزارش تراز مالی و غیره (برای آشنایی با نحوه ساخت گزارش به آموزش ساخت گزارش در زی فریم مراجعه نمایید) را طراحی می کند. این خصوصیت به کاربر اجازه می دهد تا کد فرم گزارش را با فرم جاری مرتبط سازد.
یکی از مهمترین بخش های توسعه یک سامانه ایجاد ساختاری برای محدود کردن دسترسی کاربران به فرم ها، کنترل ها، اقلام اطلاعاتی و فرآیندها است تا هر شخصی بر اساس دسترسی و گروه کاری که در آن عضویت دارد بتواند تنها اطلاعات مربوط به خود را مشاهده کند. زمانی که این خصوصیت true باشد، فرم جاری و انتخاب شده در دسته فرم هایی قرار خواهد گرفت که پردازش های امنیتی باید بر روی آن اعمال گردد. در غیر این صورت، موتور اجرای زی فریم پردازش های امنیتی را بر روی فرم جاری اجرا نخواهد کرد.
این خصوصیت در قسمت مدیریت نسخه برنامه کاربرد دارد و توسعه دهندگان می توانند فرم ها را براساس نسخه های برنامه خود دسته بندی نمایند.
نوع داده ای که در این خصوصیت قرار می گیرد، عدد است.
این خصوصیت نمایانگر آن است که فرم جاری در کدام منو و زیرمنو قرار داده شده است.
گروه توسعه زیر ساخت نرم افزاری زی با نام تجاری Zframe، با بهره گیری از نیروهای متخصص و مجرب با رویکردی نوآورانه از سال 1387 فعالیت خود را آغاز و اقدام به تولید نرم افزار قدرتمند زی فریم نمود.
زی فریم به عنوان یک محصول نرم افزاری (DSL) در واقع همچون یک خط تولید نرم افزار است که با استفاده از آن می توان به سرعت، بدون نیاز به تسلط به دامنه وسیعی از تکنولوژی ها، یک نرم افزار مبتنی بر وب کارا، امن و یکپارچه تولید نمود.