تا قبل از این نسخه، کتابخانه های موجود در سیستم مدیریت فرایندها از هم کاملا مستقل بود و هر کتابخانه (Library) فقط امکان استفاده از توابع موجود در همان کتابخانه را داشت. به یک مثال در این زمینه توجه کنید:
مثال 1: استخراج تاریخ تولد و تاریخ استخدام پرسنل به فرم تاریخ
فرض کنید از طریق یک تابع در کتابخانه PersonelTools می خواهیم اطلاعات پرسنل را از سیستم مالی استخراج کنیم. این کتابخانه را در شکل زیر ملاحظه می کنید:
تابعی که اطلاعات پرسنل را فراخوانی می کند، ReadPersonelData نام دارد. در این اطلاعات دو فیلد به نامهای تاریخ تولد (birthDate) و تاریخ استخدام (hireDate) وجود دارد که از نوع تاریخ هستند. در حالت عادی، این تاریخها به شکل یک عدد بزرگ که نشاندهنده تعداد میکروثانیه های طی شده از یک مبدا تاریخ است نمایش داده می شود حال فرض کنید می خواهیم این تاریخها را به شکل فرمت معمول تاریخ (yy/mm/dd) نمایش دهیم. برای این کار، یک تابع بنام NaturalDate وجود دارد که در شکل بالا مشخص شده است.
تا اینجای کار شاید ظاهرا مشکلی وجود نداشته باشد اما توجه کنید که ممکن است کتابخانه های متعدد دیگری هم وجود داشته باشد که در آنها نیاز به نمایش تاریخها به فرمت معمول وجود داشته باشد. برای مثال :
- در کتابخانه توابع انبار : تاریخ ورود کالا، تاریخ صدور قبض انبار، تاریخ خروج کالا از انبار
- در کتابخانه توابع فروش: تاریخ صدور پیش فاکتور، تاریخ صدور فاکتور
- در کتابخانه توابع حسابداری: تاریخ سند
به همین دلیل و برای پرهیز از تکرار تابع در کتابخانه ها، یک کتابخانه جدا با نام DateToolsبرای توابع تاریخها ایجاد می کنیم که یکی از توابع موجود در این کتابخانه، نمایش فرمت معمول تاریخ است. این کتابخانه را در شکل زیر مشاهده می کنید:
حال کافی است برای امکان استفاده از توابع این کتابخانه در کتابخانه های دیگر، آن را در ناحیه uses آن کتابخانه ها معرفی کنیم. در این صورت، برای مثال کتابخانه PersonelTools به شکل زیر درمی آید:
ملاحظه می کنید که در این حالت دیگر نیازی به تعریف تابع NaturalDate در کتابخانه ها نیست و در هر کتابخانه ای که نیاز به تبدیل فرمت تاریخ دارید، می توانید این تابع را از کتابخانه DateTools صدا بزنید.
مثالی که در بالا زده شد، یک مثال ساده برای آشنایی با مفهوم صدا زدن توابع یک کتابخانه از کتابخانه های دیگر بود. حال برای درک بهتر این امکان به یک مثال واقعی و کاربردی توجه کنید:
مثال 2: ثبت سند در کتابخانه توابع فروش
اگر در کتابخانه توابع فروش (SaleTools)، و در هنگام صدور فاکتور فروش، نیاز پیدا کردید که سند حسابداری فروش را ثبت کنید، آنگاه می توانید تابع ثبت سند را از کتابخانه AccTools صدا بزنید.
فراخوان مثال های کاربردی: آیا شما می توانید موارد کاربردی دیگری را برای این مفهوم مثال بزنید؟ دوستانی که در این مورد تجربه دارند می توانند دیگران را در تجربه خود شریک کنند.