2009/03/29

‫پروتکل ECE و نرم افزارهای دبیرخانه

  ‫پروتکل ECE

پروتکل ECE یا پروتکل تبادل الکترونیکی مکاتبات (Electronic Correspondence Exchange) پروتکلی ایرانی است برای استاندارد کردن ارتباط مکانیزه نرم افزارهای دبیرخانه و اتوماسیون. ایده اولیه این پروتکل توسط کمیته نرم افزار انجمن شرکت‌های انفورماتیکی (زیر گروه همگن اتوماسیون اداری) در تابستان ۸۲ مطرح و در پاییز و زمستان ۸۳ عملیاتی گردید. در حال حاضر به دلیل انحلال انجمن شرکت‌های انفورماتیکی، سازمان نظام صنفی رایانه‌ای متولی امورات آن است.

تا قبل از ابداع این پروتکل خیلی از شرکت‌های نرم افزاری تولید کننده نرم افزار دبیرخانه و اتوماسیون برای برقراری ارتباط بین نسخه‌های مختلف نرم افزار خود که در مکان‌های جغرافیایی مختلفی نصب شده بودند روش‌های ارتباطی خاصی ابداع کرده بودند. این روش‌ها عمدتا مبتنی بر ارسال/دریافت نامه به کمک فایل‌های مختلفی مثل xml و روش‌های ارتباطی مثل ایمیل بودند. در ادارات و سازمان‌های بزرگ که هر کدام از شعب آن از یک نرم افزار دبیرخانه متفاوت استفاده می‌کردند برقراری ارتباط بین دبیرخانه‌های مختلف میسر نبود چون هر کدام از شرکت‌های تولید کننده نرم افزار از روش خاص خودش استفاده کرده بود. در اینجا بود که ایده پروتکل ECE مطرح شد. این پروتکل همه را ملزم می‌کرد تا از یک روش ارتباطی و قالب فایل یکسان استفاده کنند.

پروتکل ECE از یک فایل xml خاص با قالب کاملا مشخص به عنوان قالب ارسال/دریافت اطلاعات دبیرخانه‌ای و ایمیل به عنوان بستر ارتباطی استفاده می‌کند. کلیه مستندات پروتکل در سایت رسمی آن یعنی http://ecep.ir/ موجود است. در حال حاضر (بهار ۸۸) خیلی از شرکت‌های نرم افزاری در حال پشتیبانی از این پروتکل بوده یا درصدد افزودن آن به دبیرخانه‌هایشان هستند. ما هم امیدواریم این حرکت به ایجاد یک استاندارد واقعی و فراگیر تبدیل شود.

در ادامه لیستی از نوشته‌های خودم در وبلاگ قبلی‌ام که راجع به پروتکل ECE و نرم افزارهای دبیرخانه بود و بعضی لینک‌های دیگر را در جدول زیر می‌آورم. لطفا برای کامنت و لینک فقط از همین وبلاگ استفاده کنید چون وبلاگ قبلی دیگر به روز رسانی نمی‌شود.

کلیه مطالب وبلاگ جاری که راجع به پروتکل ECE هستند
نوشته ناصر حاجلو راجع به پروتکل ECE
سایت رسمی پروتکل ECE
سازمان نظام صنفی رایانه‌ای کشور - متولی رسمی پروتکل ECE
وبلاگ قبلی: معرفی وبلاگ
وبلاگ قبلی: جستجو در گوگل به دنبال ECE
وبلاگ قبلی: سیستم دبیرخانه بدون کاغذ، نیاز یا اجبار
وبلاگ قبلی: معیارهای انتخاب نرم افزار دبیرخانه (اتوماسیون)
وبلاگ قبلی: فرق بین دبیرخانه و اتوماسیون
وبلاگ قبلی: شرکت‌هایی که تفکیک دبیرخانه و اتوماسیون را به خوبی رعایت کرده‌اند
وبلاگ قبلی: یک سایت خوب برای آشنایی با سیستم‌های دبیرخانه
وبلاگ قبلی: مشکل در ارسال ایمیل
وبلاگ قبلی: Certify
وبلاگ قبلی: ویرایش جدید پروتکل تبادل الکترونیکی اطلاعات اداری ECE
وبلاگ قبلی: فعال شدن مجدد پروژه ECE

‫پروتکل ECE




2009/03/28

Installing OTRS & Active Perl on Windows Vista

otrs

‭OTRS is a famous Open Source software for implementing Help Desk and Service Desk systems. Service Desk is an important section of ITIL. ITIL is a best practices approach introduced by UK govenrment. OTRS is written in Perl by Martin Edenhofer and originally is designed to run in Linux, Apache and MySQL. In following, OTRS installation on Microsoft Windows Vista, IIS 7.0 and Microsoft SQL Server 2008 is described in 3 sections. Installing OTRS in Windows 2003 and Windows XP is not very different.

1. Installing ActiverPerl and IIS configuration

1.1. Active all IIS sections in Vista

1.2. Install ActivePerl from ActiveState

1.3. Run IIS

1.4. In Handler Mappings using "Add Script Map" add following script:

‎*.pl Request path
c:\Perl\bin\perl.exe "%s" %s Executable
Perl Script Map Name
double click on the "Handler", click "Request Restriction" button, select Execute from "Access" tab and click "OK".
Click handler again, select "Edit feature Permissions..." and grant all rights.
1.5. Restart IIS.
1.6. Test IIS using following script. You should create a plain text file having .pl extension and putting it in wwwroot folder. After that you should create a new Virtual Directory in IIS. Test it by browsing in a browser. If you see the proper page you can go on otherwise don't progress until solve the problem:
 
#!/usr/bin/perl

print "Content-type: text/html\n\n";
print <<HTML;
<html>
<head>
<title>A Simple Perl CGI</title>
</head>
<body>
<h1>A Simple Perl CGI</h1>
<p>Hello World</p>
</body>
HTML
exit;

1.7. I have a sample web.config that may help in case of some problems with IIS:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers accessPolicy="Read, Execute, Script">
      <remove name="CGI Script Map" />
      <remove name="Perl Script Map" />
      <add name="Perl Script Map" path="*.pl" verb="*" modules="CgiModule" scriptProcessor="c:\Perl\bin\perl.exe &quot;%s&quot; %s" resourceType="Unspecified" requireAccess="Execute" />
      <add name="CGI Script Map" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="c:\Perl\bin\perl.exe &quot;%s&quot; %s" resourceType="Unspecified" requireAccess="Execute" />
    </handlers>
    <staticContent>
      <mimeMap fileExtension=".pl" mimeType="text/html" />
      <mimeMap fileExtension=".cgi" mimeType="text/html" />
    </staticContent>
  </system.webServer>
</configuration>

1.8. Using following links may help you:

http://perl.about.com/od/perltutorials/a/hellocgi.htm

http://community.activestate.com/forum-topic/configuring-perl-on-iis-7

 

2. Database creation and ODBC configuration

2.1. Create a new database in MS SQL Server 2008 named otrs. Then run following scripts on it in the exact order. This scripts can be found in \scripts\database folder:

otrs-schema.mssql
otrs-initial_insert.mssql
otrs-schema-post.mssql

2.2. Create a new DSN in ODBC named otrs. This DSN must be created in System DSN section not User DSN.

2.3. If you have used "Windows Authentication" instead of "SQL Server Authentication" in your DSN, you must follow some extra steps to grant necessary access rights:

2.3.1. Create a new user in MS SQL Server Security named "NT AUTHORITY\IUSR":

http://lh5.ggpht.com/_NHQs4ySP7wI/Sag1WpxCJaI/AAAAAAAAAKw/KZggUlv3OYY/image%5B5%5D.png

2.3.2. Add this newly created user to OTRS database:

فهرست کاربران مجاز دیتابیس

2.3.3. Grant "db_owner" role to user IUSR in OTRS database.

3. Installing OTRS source code and necessary configurations

3.1. Put OTRS source code (downloadable from otrs.org) in some folder on your hard disk preferably in wwwroot.

3.2. Create a new Virtual Directory in IIS 7.0 called otrs. It must be pointing to folder "bin\cgi-bin\".

3.3. Create another Virtual Directory named otrs-web pointing to folder "var\httpd\htdocs\".

3.4. For "var\log\" folder grant full access to IUSR user group. Log files are maintained in this folder. If this access is not granted sometimes HTML source code is displayed in user browser instead of rendered HTML.

3.5. For "bin\cgi-bin\" folder grant full access to IUSR user group again. If not, file attachment will not be impossible.

3.6. Create a copy of config.pm.dist and rename it to config.pm. This file could be found in "\Kernel" folder. If this file does not exists, users encounter "Misbehaved CGI" error.

3.7. Comment all "database settings" section using # sign and insert followings instead:

$Self->{DatabaseDSN} = "DBI:ODBC:DSN=otrs";
$Self->{"Database::Type"} = 'mssql';
$Self->{DatabaseUserTable} = 'users';

3.8. Edit "fs root directory" entry based on your source folder. Consider using slash character not back slash.

3.9. Insert following lines in the "data inserted by installer" section. Line 3 and 4 are necessary for Persian (Farsi) and some other languages. Don't forget to edit LogFile address based on your own installation.

$Self->{LogModule} = 'Kernel::System::Log::File';
$Self->{LogModule::LogFile} = 'd:/otrs/var/log/otrs_vista.log';
$Self->{'LogModule::SysLog::Charset'} = 'utf-8';
$Self->{DefaultCharset} = 'utf-8';

3.10. Run otrs by typing http://localhost/otrs/index.pl in your browser. Default user name is root@localhost and default password is root. After logging in change default password immediately.

 

NOTE: This instruction is an English translation of original document written in Persian(Farsi).




2009/03/15

‫WPF بهتر است یا WinForms؟

 ‫معماری wpf

wpf به عنوان رقیبی جدی برای winforms از framework 3.0 به مجموعه دات‌نت اضافه شد. winforms از ابتدای تولد دات‌نت وجود داشته و تا حالا رشد خیلی زیادی کرده است. منابع بسیار زیادی درباره آن وجود دارد، برنامه نویسان زیادی به آن تسلط پیدا کرده اند و تعداد بسیار زیادی برنامه نوشته شده با آن موجود است. در آن سوی این رقابت wpf قرار دارد. wpf به زعم خیلی ها جایگزین winforms است و مایکروسافت با وجود آن دیگر winforms را توسعه نخواهد داد و صرفا به پشتیبانی آن اکتفا می‌کند. wpf به مذاق طراحان UI و عشاق گرافیک های آن چنانی بسیار خوش آمده است. ما هم به علت در پیش رو داشتن پروژه‌های جدید ویندوزی و به خاطر اینکه از قافله جهانی عقب نمانیم نظرات بعضی از مدافعان و مخالفان را بررسی کرده و به جهت فهم خودمان و استفاده دیگران خلاصه وار در اینجا می آوریم:


۱- wpf فقط روی ویندوز ویستا، ویندوز 2008، win xp sp2 و آخرین RDP ویندوز 2003 کار می‌کند.
۲- بسیار گفته شده که wpf در حوزه کنترل‌های کار با دیتا مثل DataGrid کمبودهای زیادی دارد. البته با وجود این ضعف گفته می‌شود که wpf در DataBindingهای آبجکتی مرسوم در دنیای Domain Drivern Design خیلی خوب عمل می‌کند. این مدل DataBinding از همان نوعی است که همراه با ORMهایی مثل NHibernate و LINQ رایج شده است.
۳- استدلال تعدادی از افراد برای عدم استفاده از wpf عدم علاقه آنها به دست کشیدن از دانسته‌ها و مهارت‌های قبلی‌شان در winforms و یادگیری تکنولوژی جدید wpf است. اگر شما هم مثل ما تجربه چندان با ارزشی روی winforms ندارید می‌توانید با انگیزه بیشتری به wpf فکر کنید.
۴- wpf یک عمو زاده دارد به نام SilverLight که هر دو در استفاده از XAML مشترک هستند. هر چند که SilverLight زیرمجموعه‌ای از wpf محسوب می‌شود ولی می‌توانید امیدوار باشید که با یادگیری wpf خود به خود کمی هم SilverLight یاد گرفته‌اید.
۵- wpf برای تولید و نمایش UI از خیلی از امکانات DirectX ،GPU و حافظه کارت گرافیک استفاده می‌کند و رابطه خیلی خوبی با پخش انواع فایل تصویری، ویدیویی، صوتی و انیمیشن دارد.
۶- ادعا می شود که کد منطق برنامه و کد Prsesentation در wpf کاملا از هم جداست. یعنی می توان کد XAML را به فردی که هیچ اطلاعاتی راجع به C#‎ ندارد سپرد تا آن را با Expression Blend حسابی عمل بیاورد. کد سی‌شارپ هم می‌تواند توسط یک برنامه‌نویس متعارف در Visual Studio توسعه پیدا کند.
۷- علی القاعده در برنامه های فارسی و آنهایی که از تقویم شمسی استفاده می‌کنند مشکلات زیادی وجود خواهد داشت. چون هنوز هیچ‌کس یک DatePicker فارسی با wpf ننوشته است و رفتار بقیه کنترل‌ها هم در محیط‌های پیچیده راست به چپ نویسی معلوم نیست. البته در مستندات خود wpf ذکر شده که پشتیبانی خیلی خوبی از یونیکد و مسایل localization وجود دارد.
۸- اگر خیلی از ژیگول‌بازی‌های wpf و wpfدوستان خوشتان نمی آید اصلا نامید نشوید چون winforms حالا حالاها زنده خواهد بود. همان طور که هنوز VB6 و حتی FoxPro زنده هستند.
۹- اگر برای اتمام پروژه ای عجله دارید از wpf استفاده نکنید چون ممکن است بدجوری شما را غافل‌گیر کند.
۱۰- برای یادگیری از کتاب زیر شروع کنید (بنا به توصیه دوستان wpf):
Windows Presentaion Foundation Unleashed by Adam Nathan
۱۱- بعضی امکانات جدید به wpf اضافه شده‌اند که من هنوز از بیشتر آنها سر در نمی‌آورم:

  • UI Automation
  • UI Virtualization
  • Routed Events
  • Attached Properties
  • Property change notification
  • XBAP




2009/03/10

‫مشکل Xml Name Space در پروتکل ECE‬

ابهامی در پروتکل ECE وجود دارد (یا شاید هم من آن را درست نفهمیده‌ام) که به واسطه آن نمی‌شود فهمید که آیا در XMLهای آن باید از xml name space استفاده شود یا نه؟ و اگر بله، از چه name spaceی؟ در هر صورت به خاطر این ابهام، نبودن ابزارهای تست و اعتبار سنجی و عدم پایبندی کامل خیلی از پیاده سازان پروتکل ECE بهتر است در پیاده سازی خودمان امکان خواندن هر دو نوع حالت را در نظر بگیریم و به صورت یک option در خارج از کدهای برنامه و در اختیار مسئول سیستم بگذاریم. آنچه که در پی می‌آید روش کار با Xml Name Spaceها با کمک XmlDocument و XPath در دات نت است.

همانطور که می‌دانید xml name space امکانیست در XML که با کمک آن می‌توان تگ‌های هم نام داشت بدون آنکه تداخل پیش بیاید. XPathی که برای یک تگ بدون name space نوشته می‌شود با آنی که برای یک تگ با name space نوشته می‌شود هم فرق دارد. مثلا XML زیر که بخشی از یک نمونه «ایکس‌ام‌ال ارسال» پروتکل ECE است را در نظر بگیرید:

<?xml version="1.0" encoding="utf-8"?>
<Letter>
<Protocol Name="ECE" Version="1.01" />
</Letter>

XPath استخراج اطلاعات نود Letter به شکل زیر است:

XmlNode xSend = xDoc.SelectSingleNode("//Letter");

حال اگر در فایل XML ما Xml NameSpace هم تعریف شده بود:

<?xml version="1.0" encoding="utf-8"?>
<Letter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.irica.com/ECE/1383-12/SendSchema">
<Protocol Name="ECE" Version="1.01" />
</Letter>

بایستی از XPath و کدهای کمکی زیر برای استخراج اطلاعات استفاده کرد:

XmlDocument xDoc = new XmlDocument();xdoc.Load(filename);
XmlNamespaceManager manager = new XmlNamespaceManager(xdoc.NameTable);manager.AddNamespace("xsi", "http://www.irica.com/ECE/1383-12/SendSchema");
XmlNode xSend = xdoc.SelectSingleNode("//xsi:Letter", manager);