در تصویر زیر معماری نرم افزار در محیط شبکه داخلی را نمایش میدهد. مشابه این معماری برای نرم افزار نصبی در شبکه خارجی (اینترنت) نیز وجود دارد. تنها تفاوت آن در این است که برخی از زیر ساختها نظیر مدیریت جریان کار، درصورت عدم کاربری می توانند وجود نداشته باشند.
شرح معماری
لایه واسط کاربری (User interface Layer)
در بخش Back Office از یک فریم ورک متن باز جاوا اسکریپت به نامISOMORPHIC SMART-CLIENT، استفاده شده است. ارتباط لایه واسط کاربری با برنامه از طریق ارسال و دریافت درخواستها به صورت REST FUL می باشد. این قابلیت باعث میشود تا هر زمان که بخواهیم تکنولوژی لایه واسط کاربری را جایگزین نماییم. همچنین بسیاری از سرویس ها نیز در غالب REST میتواند به سایر اپلیکیشنها مانند پرتال وب پروژه نیز ارائه شود. لازم به ذکر است که تمامی این سرویسها در لایه امنیت که در ادامه توضیح داده خواهد شد کنترل میگردد. همچنین لایه واسط کاربری به صورت SPA (SINGLE PAGE APPLICATION) طراحی شده است. درخواستهای مربوط به ایجاد گرافیک واسط کاربری و اطلاعات مربوط به فرمها نیز طی درخواستهای جداگانه مدیریت میشوند.
لایه امنیت (Security)
در این لایه از فریم ورک Spring Security به عنوان هویت شناسی و مجاز شناسی (Authentication & Authorization) کاربران استفاده شده است. یکی از نکات مهم در این لایه سفارشی سازی Spring Security میباشد که به صورت اتوماتیک بخشهای مختلف کد را که توسط Developer توسعه یافته است، ایمن میسازد. در این لایه کلیه URLهایی که از سمت کلاینت میآید کنترل شده در صورت مجاز بودن کاربر برای دسترسی به آن URL سرویس مورد نظر صدا میشود.
لایه کنترلرها (Controller)
هدف اصلی این لایه ایجاد سرویسهای Restful میباشد. هسته اصلی این لایه بر روی فریم ورک Spring MVC بنا نهاده شده است. یکی از نکات مهم در این لایه این که است که توسعه دهنده سیستم درگیر چگونگی پیادهسازی سرویسهای Restful نمیباشد و این کار به صورت اتوماتیک و با توجه به نوع درخواست ارسالی از سمت کلاینت به صورت اتوماتیک انجام میشود. همچنین همان طور که در پاراگراف قبلی نیز توضیح داده شد، تمامی این سرویسها به صورت اتوماتیک توسط لایه امنیت کنترل میشوند. در این لایه متدهای اصلی سرویسهای هسته برنامه صدا شده و خروجی آنها به کلاینت ارسال میشود. این لایه دارای یک مکانیزم عمومی جهت کنترل Exception ها و ارسال پیامها به سمت کلاینت نیز میباشد.
لایه سرویس (Service Layer)
منطق اصلی برنامه و توابع عملکردی سیستم در این لایه پیادهسازی میشوند. متدهای این لایه که کار دستکاری و تغییر اطلاعات را انجام میدهند به صورت اتوماتیک در بخش مدیریت تراکنشها کنترل میشوند. اساس این لایه Spring Core میباشد که توسط Spring AOP کار مدیریت تراکنشها انجام میپذیرد. مدیریت وابستگیها نیز از طریق Spring IOC انجام میشود.
لایه دیتا (Data Layer)
هدف اصلی از این لایه مدیریت اطلاعات و ارتباط با پایگاه داده میباشد. در این لایه از JPA با پیادهسازی Hibernate، استفاده شده است. این لایه شامل موجودیتهای سیستم و متدهای مورد نیاز برای لایه سرویس میباشد.
مدیریت فایل ها و مستندات (DMS)
با توجه به اینکه فرآيند ممکن است نیاز به نگهداری اسناد و مدارک فنی یا مالی داشته باشد، با توجه به بالا بودن حجم این مستندات، در این معماری پیشنهاد میشود که فایلها بر روی File System نگهداری شوند. این لایه مدیریت ذخیره و بازیابی مستندات به صورت امن را بر عهده دارد.
مدیریت گردش کار(Workflow Engine)
زیر ساخت و لایه مدیریت گردش کار، وظیفه مدیریت طراحی، بارگزاری و مدیریت فرایند و گزارشات و نظارت بر فرایند را بر عهده دارد. این ابزار علاوه به منعطف سازی ساختار نرم افزار، امکان ایجاد فرآيندهای پچیده و بزرگ را در سامانه نرم افزار محقق می سازد. همچنین کاربران از طریق کارتابل الکترونیکی قادر به انجام وظایف خود خواهند بود.
امنيت اطلاعات و سامانه
1) رمز نگاری اطلاعات (Data Encryption) : به منظور حفظ محرمانگی اطلاعات در پايگاه داده و جلوگيری از انتشار آن به صورت مجزا از برنامه کاربردی، کليه اطلاعات کاربران و رمزهای عبور در فايل پايگاه داده رمز نگاری میشوند.
2) رمزنگاری رشته اتصال (Connection String): چنانچه امنيت سرور در اختيار داده شده تضمين نگردد، به منظور ايجاد امنيت بيشتر Connection String های نرم افزار همگی رمز نگاری میگردند.
3) جلوگيری از SQL Injection: معماری و روش توسعه نرم افزار مورد نظر به گونه ای است که از تزريق دستورات مخرب و نفوذی SQL به سامانه جلوگيری مینمايد.