vdcasino
betexper
imajbet
perabet
casinomaxi
ilbet

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

به منظور ثبت سوال جدید و یا پاسخ به موضوعات موجود، ابتدا می بایست از طریق صفحه مربوطه به سامانه وارد شوید. چنانچه نام کاربری دریافت نکرده اید، به صورت رایگان و از طریق صفحه مربوطه، ابتدا در سامانه ثبت نام نمایید.

انجمن های پشتیبانی سیمرغ نوسا

قبليقبلي Go to previous topic
بعديبعدي Go to next topic
آخرين ارسال 25 مهر 1403 10:07 ق.ظ توسط  Tariverdi
آموزشی: منابع دیجیتال و مدیریت فرایندها: 4- ابزارهای برنامه نویسی برای ایجاد و تغییر در منابع دیجیتال
 3 پاسخ
مرتب:
شما مجاز به پاسخ به اين پست نمي باشيد.
مولف پيغام ها


کاربر باتجربه


کاربر باتجربه


--
18 دی 1401 02:05 ب.ظ

     

     

    در بخشهای قبلی مستندات منابع دیجیتال و فرایندها توضیح داده شد که گردش کارها از طریق فیلدهای از نوع منبع دیجیتال می توانند با درخت منابع دیجیتال در ارتباط باشند. حال این نیاز مطرح می شود که اگر بخواهیم درخت منابع دیجیتال را تغییر دهیم آیا سیستم مدیریت فرایندها این قابلیت را دارد که کاربر بتواند از طریق رابط کاربری این سیستم، درخت دیجیتال را تغییر دهد؟ منظور از تغییر هرگونه دستکاری (manipulation) در درخت است، یعنی افزودن، ,ویرایش، کپی، حذف و جابجایی منابع دیجیتال در درخت منابع دیجیتال.

    سوال: اصولا چه نیازی وجود دارد که کاربر بتواند از طریق رابط کاربری سیستم مدیریت فرایندها، آرشیو منابع دیجیتال خود را تغییر دهد؟ به عبارت دیگر، این روش چه مزیتی بر روش دسترسی مستقیم به درخت منابع دیجیتال دارد؟

    جواب این است که :

    1. بطور کلی دسترسی مستقیم به آرشیو و درخت منابع دیجیتال به دلیل احتمال دستکاری های عمدی و سهوی از نظر امنیت داده ها همراه با ریسک می باشد لذا دسترسی غیر مستقیم و خودکار به آرشیو به دلیل محدود بودن و  کنترل بیشتر، مطمئن تر خواهد بود.
    2. همزمانی انجام وظایف گردش کار با  تغییر منابع دیجیتال مزیت دیگری است که از طریق ابزارهای برنامه نویسی در گردش کار به دست می آید. در غیر این صورت کاربر باید در یک مرحله وظایف را انجام دهد و سپس در یک زمان دیگر، به ایجاد یا دسته بندی منابع دیجیتال بپردازد که این ناهمزمانی با ضریبی از خطای انسانی همراه خواهد بود.

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

     

    انواع تعامل با منابع دیجیتال

    همانطور که قبلا هم اشاره شد، انواع تعامل و دستکاری در آرشیو منابع دیجیتال به شرح زیر است:

    • خواندن اطلاعات منابع دیجیتال
    • مقداردهی گروه فیلدهای منبع دیجیتال
    • ویرایش اطلاعات منابع دیجیتال
    • جستجوی منابع دیجیتال
    • افزودن یک منبع دیجیتال
    • کپی یک منبع دیجیتال
    • حذف یک منبع دیجیتال
    • جابجایی یک منبع دیجیتال

    قبل از این که به جزئیات این تعاملها بپردازیم ابتدا بهتر است با مفهوم تفکیک پیوستهای کار از سایر منابع دیجیتال آشنا شوید.

    تفکیک پیوستها از سایر انواع منابع دیجیتال

    از نظر تئوری با تمام گره ها و سرشاخه های درخت منابع دیجیتال می توانیم تعامل داشته باشیم اما به دلیل اهمیت پیوستهای کار، و برای راحتی کار با این دسته از منابع دیجیتال، پیوستها به نوعی پررنگ تر و برجسته تر شده و ابزارهایی خاص برای تعامل با این نوع از منابع دیجیتال پیاده سازی شده است. توجه کنید که پیوستها در واقع فرزندان (زیرشاخه های) کارها هستند و به همین دلیل زیرمجموعه وضعیت جاری کارها (WorkState) هستند و لذا توابع تعامل با پیوستها در زیرمجموعه WorkState پیاده سازی شده است. و اما برای تعامل با منابع دیجیتال بصورت عام از توابع مشابه موجود در GetDOState.WorkUtils استفاده می کنیم.

    نوع تعامل

    پیوستها WorkState

    سایر انواع منابع دیجیتال

    ds=WorkUtils.GetDOState

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

    WorkState1.GetChildDOList

    ds.GetChildDOList

    جستجوی فرزندان منبع دیجیتال

    WorkState1.SearchDOChildren

    ds.SearchDOChidren

    ویرایش فرزندان منبع دیجیتال WorkState1.EditChildDO ds.EditChildDO

    ایجاد یک منبع دیجیتال بدون فایل

    WorkState1.CreateNoFileChildDO

    ds.CreateNoFileChildDO

    ایجاد یک منبع دیجیتال با فایل متنی

    WorkState1.CreateTextChildDO

    ds.CreateTextChildDO

    خواندن محتوای فایل متنی منبع دیجیتال

    WorkState1.GetChildDOText

    ds.GetChildDOText

    حذف یک فرزند از منبع دیجیتال

    WorkState1.RemoveChildDO

    ds.RemoveChildDO

    کپی یک منبع دیجیتال به زیرشاخه منبع دیجیتال

    WorkState1.CopyDOFrom

    ds.CopyDOFrom

     

    توضیح:  مفهوم منبع دیجیتال فرزند (child) زمانی معنی پیدا می کند که یک منبع دیجیتال پدر (parent) داشته باشیم. به این ترتیب در حوزه پیوستها، منبع دیجیتال پدر را منبع دیجیتال وابسته به کار می نامیم و در مورد فرزند به شکل عام ، منبع دیجیتال پدر را منبع دیجیتال اصلی می نامیم در ادامه و در مثالها با این موضوع بیشتر آشنا خواهید شد.

    در ادامه مطلب، انواع تعامل با منابع دیجیتال با جزئیات کامل شرح داده می شود:

    1) خواندن اطلاعات منابع دیجیتال

    اطلاعات منبع دیجیتال به سه دسته تقسیم می شود:  1) اطلاعات گروه فیلدهای منبع دیجیتال  2 ) اطلاعات سیستمی منبع دیجیتال و 3) فهرست فرزندان/ پیوستهای منبع دیجیتال

    1.1) خواندن اطلاعات گروه فیلدهای منبع دیجیتال (DOState)

    اگر می خواهید اطلاعات گروه فیلدهای منبع دیجیتال را داشته باشید باید از تابع GetDOState از WorkUtils استفاده کنید. الگوی این تابع به شکل زیر است:

    function GetDOState (dbName, digitalObjectId or digitalObjectCode, fieldClassCode or fieldClassScriptName) : DOState

    پارامترهای این تابع به شرح زیر است:

    • dbName (نام پایگاه): بودن این پارامتر به این معناست که از هر پایگاهی می توانیم وضعیت جاری منابع دیجیتال را بخوانیم. اما اگر این پارامتر، بدون مقدار و خالی پاس شود منظور پایگاه جاری است.

     

    • digitalObjectId or digitalObjectCode  (کلید منبع دیجیتال یا کد منبع دیجیتال): اگر منبع دیجیتال مورد نظر، محتوای یک فیلد از نوع منبع دیجیتال باشد، آنگاه محتوای فیلد، کلید منبع دیجیتال (digitalObjectId) خواهد بود. در غیر این صورت می توانیم از کد منبع دیجیتال استفاده کنیم. 

     

    • or fieldClassScriptName  fieldClassCode(کد گروه فیلد یا نام در برنامه گروه فیلد)

    همانطور که در الگوی کلی این تابع هم ذکر شده، خروجی این تابع از جنس وضعیت جاری منبع دیجیتال (DOState) است که شامل ااطلاعات زیر است:

    کلید منبع دیجیتال DOKey

               F1 فیلد گروه فیلد

    .

    .

    فیلد گروه فیلد Fn

    برای درک بهتر این تابع به مثالهای زیر توجه کنید:

    مثال 1: پیدا کردن کلید یک منبع دیجیتال از طریق کد منبع

    var dos=WorkUtils.GetDOState(“”, “01/003/012”, 2) ;

    var dok=dos.DOKey

    ملاحظه می کنید که در اینجا ابتدا وضعیت جاری (DOState) منبع دیجیتال خوانده شده و در متغیر dos قرار گرفته است و سپس کلید این منبع دیجیتال استخراج و در متغیر dok ذخیره شده است.

    مثال 2: خواندن اطلاعات یک فیلد از گروه فیلد مرتبط با یک منبع دیجیتال

    فرض کنید در گردش کار تامین تجهیزات، فیلدی وجود دارد بنام دستگاه (device) که از نوع منبع دیجیتال است. این منبع دیجیتال به گروه فیلدی بنام لوازم (appiance) بسته شده که شامل یک فیلد بنام تولید کننده (producer) است. برای خواندن این فیلد می توانیم به شکل زیر عمل کنیم:

    var dos=WorkUtils.GetDOState(“”, WorkState1.device, “appliance" )  ;

    var pr=dos.producer;

    در این مثال، مقدار فیلد producer استخراج و در متغیر pr ذخیره شده است.

     
    1.2) خواندن اطلاعات سیستمی منابع دیجیتال

    اطلاعات سیستمی توسط تابع GetDOInf از WorkUtilsخوانده می شود. الگوی این تابع به شکل زیر است:

    function GetDOInf(digitalObjectId): DOInf

    در این تابع، پارامتر digitalObjectId کلید منبع دیجیتال مورد نظر ماست. خروجی این تابع از جنس DOInf و شامل اطلاعات سیستمی منبع دیجیتال به شرح زیر است:

    • کلید منبع دیجیتال(Key)
    • کد منبع دیجیتال(Code)
    • شرح منبع دیجیتال(Desc)
    • بخش منبع دیجیتال(Dept)
    • کلید نوع محتوای منبع دیجیتال (ContentKind)
    • کلید قالب خاص منبع دیجیتال (ContentType)
    • سطح منبع دیجیتال در درخت اصلی (Level)

    سوال: پارامتر این تابع  (digitalObjectId)، کلید منبع دیجیتال است. چگونه می توانیم این کلید را بدست بیاوریم؟

    جواب: اگر منبع دیجیتال مورد نظر، محتوای یک فیلد از نوع منبع دیجیتال باشد آنگاه محتوای این فیلد، در واقع کلید منبع دیجیتال خواهد بود. برای نمونه  به مثال زیر توجه کنید:

    مثال 1) اطلاعات سیستمی فیلد محصول از گردش کار تولید 

    مثال فرض کنید در یک کارخانه تولید پارچه، و در گردش کار تولید،  فیلد محصول (product)   از نوع منبع دیجیتال است. در این صورت محتوای این فیلد یعنی (WorkState1.product)، کلید منبع دیجیتال خواهد بود و به این ترتیب با نوشتن سطر زیر در برنامه، اطلاعات سیستمی در یک متغیر بنام dof قرار می گیرد:

    var dof=WorkUtils.GetDOInf(WorkState1.product)

    حال با داشتن این متغیر، اطلاعات سیستمی این منبع دیجیتال به شرح زیر خواهد بود:

    dof.Code        کد منبع دیجیتال

    dof.Desc     شرح منبع دیجیتال  

    و اما اگر منبع دیجیتال مورد نظر محتوای یک فیلد نباشد، آنگاه مانند مثال زیر، ابتدا باید  به نحوی، کلید آن را پیدا کنیم.

    مثال 2) پیدا کردن شرح یک منبع دیجیتال از روی کد منبع

    در اینجا همانند مثال 1 از بخش قبلی کلید منبع دیجیتال را از روی کد منبع دیجیتال استخراج می کنیم. فرض کنید کد منبع دیجیتال برابرست با 03/06/024:

    var  dos = WorkUtils.GetDOState(“”, “03/06/024”, 2);

    var dok=dos.DOKey;

    حال که کلید منبع دیجیتال را بدست آوردیم می توانیم اطلاعات سیستمی آن را به شکل زیر استخراج کنیم.

    var dof=WorkUtils.GetDOInf(dok);

    var ds=dof.Desc   شرح این منبع دیجیتال

    تمرین 1 : همانطور که می دانید هر کار به شکل یک سرشاخه (node) در درخت منابع دیجیتال ایجاد می شود.  چگونه می توانیم اطلاعات سیستمی این گره (node) را پیدا کنیم؟

     
    1.3) فهرست فرزندان (پیوستهای) منبع دیجیتال

    الگوی کلی تابع فهرست فرزندان یک منبع دیجیتال به شکل زیر است:

    function GetChildDOList(doKey): array of DOInf

    پارامتر این تابع،  یعنی کلید منبع دیجیتال  (doKey)اختیاری است . اگر کلید پاس نشود  فهرست فرزندان (پیوستهای) سطح اول منبع دیجیتال را برمی گرداند در غیر این صورت اگر کلید پاس شود باید فرزند مستقیم یا غیرمستقیم منبع دیجیتال اصلی باشد. توضیح اینکه فرزندان (یا پیوستها) می تواند به شکل چند سطحی و درختی باشد و مثلا ممکن است بخواهیم فهرست فرزندان (پیوستهای) سطح دوم را داشته باشیم. برای درک بهتر این مطلب به پیوستهای یک کار (خرید میز اداری) در شکل زیر توجه کنید:

     

    در این شکل سطح اول پیوستها را مشاهده می کنید. یکی از پیوستها پیش فاکتورها است که خود مجموعه ای از پیش فاکتورهای ارسالی از شرکتهای مختلف است. حال اگر کلید منبع دیجیتال (doKey) را پاس نکنید،  فهرست پیوستها شامل این سه مورد خواهد بود و لذا زیرشاخه های پیش فاکتورها را شامل نخواهد شد. حال فرض کنید دقیقا می خواهید فهرست فرزندان پیش فاکتورها را تهیه کنید، این فهرست را در شکل زیر می توانید ملاحظه کنید:

     

    در این صورت باید کلید منبع دیجیتال پدر یعنی پیش فاکتورها را بدست بیاورید و به عنوان پارامتر doKey پاس کنید. روش بدست آوردن کلید منبع دیجیتال در مثال های زیر شرح داده شده است:

    خروجی این تابع، فهرستی از DOInf هاست که اطلاعات سیستمی فرزند را شامل می باشد.

    • مثال برای فهرست پیوستهای کار جاری:

    var indList=WorkState1.GetChildDOList ()

    • مثال برای فهرست فرزندان یکی از پیوستهای کار جاری (مثلا پیش فاکتورها):

    var dk=indList[0].Key;

    var performas=WorkState1.GetChildDOList(dk) ;

    در این مثال، ابتدا از فهرست پیوستها، DOInf پیوست اول را که همان پیش فاکتورها است در یک متغیر بنام dk قرار می دهیم. سپس کلید این منبع را با استفاده از مشخصه key پیدا می کنیم و در نهایت این کلید (dk) را به عنوان پارامتر، به متد GetChildDOList پاس می کنیم.

    • مثال برای فهرست فرزندان:

    اگر منبع دیجیتال مورد نظر یک فیلد از نوع منبع دیجیتال (مثلا ٌWorkState1.device) باشد:

    var ds=WorkUtils.GetDOState(“”, WorkSate1.device, 2 ) ;

    var chList=ds.GetChildDOList();

    و در غیر این صورت، اگر منبع دیجیتال یک node خاص مثلا  با کد 01/04/12 باشد:

    var ds=WorkUtils.GetDOState (“”, “01/04/12”, 2 ) ;

    car chList=ds.GetChildDOList()

    2) ورود اطلاعات (مقداردهی) اطلاعات گروه فیلدهای منبع دیجیتال (DOState)

    مثال 3: مقدار دهی یک فیلد از گروه فیلد مرتبط با یک منبع دیجیتال

    در مثال قبلی ما توانستیم محتوای یک فیلد را بخوانیم، در اینجا باید بگوییم که تحت شرایط خاصی علاوه بر خواندن، امکان نوشتن یا مقداردهی فیلدهای گروه فیلد هم وجود دارد. برای نمونه فیلد تولیدکننده در مثال قبل را به شکل زیر مقداردهی می کنیم:

    var dos=WorkUtils.GetDOState(“”, WorkState1.device, “appliance" )  ;

    شرکت تولیدی الف"=dos.producer”;

    گفتیم که برای مقداردهی شرایطی وجود دارد که در ادامه به این شرایط می پردازیم.

    نکته بسیار مهم: شرایط خواندن و نوشتن (مقداردهی) گروه فیلدهای منبع دیجیتال

    بطور کلی برای خواندن و  نوشتن (مقداردهی) گروه فیلدها با استفاده از GetDOState ،حتما باید پارامتر سوم یعنی کد یا نام در برنامه گروه فیلد را وارد کنید و ضمنا باید دسترسی کافی به گروه فیلد مورد نظر را داشته باشید. به این صورت که برای خواندن وضعیت منبع دیجیتال اختیار خواندن و برای مقداردهی گروه فیلد، اختیار خواندن و نوشتن را باید داشته باشید. در غیر این صورت با پیغام خطای ScriptUserAccessIsDenied به معنی عدم دسترسی روبرو خواهید شد.

     
    3) ویرایش اطلاعات سیستمی منبع دیجیتال

    یکی از امکانات سیستم مدیریت فرایندها امکان اصلاح شماره، شرح و نوع محتوای منبع دیجیتال است. الگوی کلی تابع ویرایش اطلاعات سیستمی فرزندان یک منبع دیجیتال به شکل زیر است:

    function EditChildDO (doKey, infCode, value)

    پارامترهای این تابع به شرح زیر است:

    doKey: کد منبع دیجیتال

    infCode: کد فیلد اطلاعاتی سیستمی منبع دیجیتال  (0: شماره آخرین سطح منبع دیجیتال، 1: شرح منبع دیجیتال، 2: کلید نوع محتوا)

    value: مقدار مورد نظر 

    توسط این تابع می توانیم یکی از فیلدهای شماره، شرح و یا کلید نوع محتوای منبع دیجیتال با کلید doKey را ویرایش و مقدار value را برای آن فیلد ذخیره کنیم.

    همانند توابع دیگر، این تابع نیز برای پیوستهای کار از طریق WorkState ، و برای منابع دیجیتال بصورت عام از طریق DOState قابل دسترسی است. در این زمینه به مثالهای زیر توجه کنید:

    مثال 1: تغییر شماره یک پیوست کار

    فرض کنید فهرست پیوستهای یک کار نموته به شکل زیر است:

     

    پیوست دوم این کار، در آخرین سطح درخت منابع دیجیتال، دارای شماره 04 است. حال فرض کنید می خواهیم این شماره را به 02 تغییر دهیم. برای این کار کافی است یک تابع اجرایی به شکل زیر بنویسیم:

     

     

     

     

    در این تابع ابتدا لیست فرزندان کار جاری تولید می شود و سپس کلید اندیس 1 (دومین پیوست) در متغیر dk قرار می گیرد و در انتها، شماره این پیوست به 2 تغییر می کند. در شکل زیر این تغییر را می توانید مشاهده کنید:

     

    مثال 2: ویرایش شرح یک منبع دیجیتال 

    فرض کنید در یک درخت منابع دیجیتال، خودروهای یک سازمان به شکل زیر ثبت شده است:

    حال فرض کنید می خواهیم شرح سومین فرزند شاخه خودروها را ویرایش کنیم و بجای «سمند نقره ای» عبارت «سمند سورن نقره ای» را ثبت کنیم. برای این کار کافی است تابع زیر را اجرا کنید:

     

     

     

     

     

    در این تابع اجرایی، ابتدا توسط GetDOState وضعیت منبع دیجیتال سرشاخه (Parent) در متغیر ds قرار می گیرد و سپس با استفاده از GetChildDOList فهرست فرزندان این سرشاخه در متغیر chList قرار می گیرد. از آنجایی که منبع دیجیتال مورد نظر ما سومین فرزند (اندیس 2) است لذا کلید این منبع (Key) را در متغیر dk قرار می دهیم و در نهایت با استفاده از تابع EditChildDO شرح این منبع را تغییر می دهیم. در شکل زیر تغییر مورد نظر اعمال شده است:

     

     

     

     

     

    4) جستجوی منابع دیجیتال

    دو نوع جستجو برای منابع دیجیتال وجود دارد: 1) جستجو در گروه فیلدهای منبع دیجیتال و 2) جستجو در فرزندان (پیوستهای) یک منبع دیجیتال

    4.1) جستجو در گروه فیلدهای منبع دیجیتال

    سطح دوم در متن xml، مربوط به تعیین شرط جستجو در مقادیر گروه فیلدهای منبع دیجیتال است. این سطح به شکل زیر است:

    در این سطح، بر مقادیر گروه فیلدهای منبع دیجیتال شرط گذاشته می شود. در این ناحیه، عنصر نشاندهنده گروه فیلد (Field Class) است و یک مشخصه به نام ScriptName است که نام در برنامه گروه فیلد را مشخص می کند. در سطح بعدی عنصر     قرار دارد که مقدار یک فیلد خاص از گروه فیلد مورد نظر را تعیین می کند.

    مثال :

    در این مثال، فرزندان (پیوستهای)ی بازیابی می شود که مقدار فیلد محل نگهداری (location) مربوط به لوازم (Appliance) آنها "تبریز" می باشد.

    توضیح: دقت کنید که در این جستجو، فیلدهای از نوع آرایه قابل جستجو نیستند.

    4.2) جستجوی فرزندان (پیوستهای) یک منبع دیجیتال

    جستجو در فرزندان (پیوستهای) یک منبع دیجیتال توسط تابع SearchDOChildren انجام می شود. الگوی کلی این تابع به شکل زیر است:

    function SearchDOChildren(data): Array

    این تابع، فهرست فرزندان (پیوستهای) یک منبع دیجیتال خاص را جستجو می کند و نتیجه را بصورت آرایه ای از کلیدهای فرزندان (پیوستها) باز می گرداند.

    نکته مهم: جستجو منحصر به سطح اول فرزندان نیست و اگر فرزندان نیز خود شامل فرزندان دیگر باشند جستجو در تمام سطوح فرزندان انجام می شود.

    حال براساس این که منبع دیجیتال مورد نظر چیست دو نوع جستجو خواهیم داشت:

    همانطور که در جدول توابع در بخش قبل هم ذکر شد، اگر بخواهیم پیوستهای یک کار را جستجو کنیم از این تابع به شکل زیر استفاده می کنیم:

    var apps=WorkState.SearchDOChildren(data)

    حال اگر بخواهیم فرزندان منبع دیجیتال به شکل عام را جستجو کنیم، تابع جستجو به شکل زیر خواهد بود:

    var ds=WorkUtils.GetDOState (digitalObjectId or digitalObjectCode)  ;

    var childs=ds.SearchDOChildren(data)

    شرایط این جستجو در یک متن (رشته حرفی) بنام data و با فرمت xml به شکل زیر مشخص می شود:

       

    مشخصه ها و عناصر این فرمت به شرح زیر است:

     

    • Code  یک الگو از بخش انتهایی کدهای فرزند است. برای مثال اگر فرزندان یک منبع دیجیتال دارای کدهای زیر باشند:

    01/04/01

    01/04/01/01

    01/04/01/02

    01/04/02

    اگر بخواهیم سه پیوست اول جستجو شود می توانیم از الگوی "%01" استفاده کنیم. توضیح این که این مشخصه در مواردی که تعداد پیوستها زیاد و چندسطحی هستند کاربرد خواهد داشت و لذا در موارد عادی با این مشخصه سروکاری نخواهیم داشت.

    • Desc بخشی از شرح پیوستهاست که می تواند به شکل الگو استفاده شود. برای مثال فرض کنید یک منبع دیجیتال دارای چند فرزند به شکل زیر است:
      • تصویر قرارداد شرکت الف
      • تصویر بیمه نامه شرکت الف
      • تصویر درخواست کالای شرکت الف
      • تصویر فاکتور شرکت الف
      • تصویر قرارداد شرکت ب
      • تصویر بیمه نامه شرکت ب
      • تصویر درخواست کالای شرکت ب
      • تصوری فاکتور شرکت ب

    حال فرض کنید می خواهید فقط فاکتورها را بازیابی کنید. در این صورت می توانید مشخصه شرح را بصورت "فاکتور"=Desc تعیین کنید. لازم به توضیح است که در این مورد نیازی به استفاده از % نیست و این کاراکتر به شکل خودکار به عبارت جستجو اعمال می شود یعنی در این مثال عبارت جستجو به شکل %فاکتور% جستجو می شود.

    • ContentKind کلید نوع محتوای فرزندان است. اگر بخواهید چند نوع محتوا را جستجو کنید می توانید کلیدها را به شکل یک فهرست با جداکننده کاما (Comma Separated) درج کنید.
    • ContentType قالب خاص فرزندان است که همانند مورد قبلی (نوع محتوا) می تواند به شکل فهرستی از قالبهای خاص با جداکننده کاما باشد.
    • SizeFrom تا SizeTo محدوده حجم فایلهای فرزندان را تعیین می کند. برای مثال فرض کنید می خواهید فرزندهای با حجم 100kb تا 2000kb را جستجو کنید. در این صورت مقادیر این مشخصه ها به شکل زیر خواهد بود:

    SizeFrom=100000

    SizeTo=2000000

    • FileName نام فایل بدون Extension است که می تواند به شکل الگو نیز تعیین شود.

    مثال: فرض کنید یک منبع دیجیتال دارای فرزندان (پیوستهای) با فایلهای زیر است:

    CompAcont.pdf

    CompAfactor.pdf

    CompAinvoice.pdf

    CompBcont.pdf

    CompBfactor.pdf

    CompBinvoice

    حال اگر می خواهید فرزندان (پیوستهای) مربوط به شرکت  (CompB) B را بازیابی کنید کافی است از الگوی زیر استفاده کنید:

    FileName="CompB%"

    • Extension فایل می تواند با یا بدون "." ابتدایی باشد. ضمنا می تواند به شکل الگو تعیین شود.

    مثال: فرض کنید می خواهیم جستجو تنها در فرزندان (پیوستهای) با فرم pdf انجام شود. در این صورت این مشخصه را به شکل زیر تعیین می کنیم:

     Extension="pdf"  یا    Extension=”.pdf”
     

    5) ایجاد یک منبع دیجیتال بدون فایل

    منبع دیجیتال بدون فایل معمولا برای ایجاد سرشاخه ها در درخت منابع دیجیتال بکار می روند و  هدف از ایجاد این سرشاخه ها، دسته بندی منابع دیجیتال می باشد. الگوی کلی این تابع به شکل زیر است:

    function CreateNoFileChildDO(desc, contentKindCode, parentDOKey, treeStructureAsParent,

    childrenDigitCount, delimeterInChildrenCode)

    پارامترهای این تابع به شرح زیر است:

    desc : شرح منبع دیجیتال

    contentKindCode: کد نوع محتوای منبع دیجیتال

    parentDOKey: کلید منبع دیجیتال پدر. یعنی اینکه منبع دیجیتال مورد نظر در زیرشاخه این منبع دیجیتال ایجاد می شود. این کلید اختیاری است یعنی اگر پاس نشود یا صفر پاس شود آنگاه منبع دیجیتال در زیرشاخه منبع دیجیتال اصلی ایجاد می شود ولی اگر غیرصفر پاس شود آنگاه باید فرزند مستقیم یا غیرمستقیم منبع دیجیتال اصلی باشد.

    treeStructureAsParent: یک پارامتر Boolean است که تعیین می کند ساختار زیرگروه ایجاد شده، مشابه منبع دیجیتال پدر (سرشاخه) باشد یا نه. به این ترتیب اگر پاس نشود معادل true فرض می شود ولی اگر false پاس شود، آنگاه لازم است دو پارامتر بعدی به شکل زیر مشخص شود:

    childrenDigitPart:  تعداد ارقام زیرگروه منبع دیجیتال

    delimeterInChildrenCode: یک پارامتر Boolean است که لزوم درج کاراکتر جداکننده "/" بین کدهای سرگروه و زیرگروه را تعیین می کند.

    • مثال برای پیوستها

    WorkState1.CreateNoFileChildDO (“نامه های وارده”, 29)

    در این مثال، در زیرشاخه منبع دیجیتال وابسته به کار جاری، یک شاخه بنام "نامه های وارده" ایجاد می شود که بدون فایل است و ضمنا ساختار درختی این شاخه همانند منبع دیجیتال پدر می باشد.

    • مثال برای فرزندان بطور عام
      • برای یک فیلد از نوع منبع دیجیتال

    var ds=WorkUtils.GetDOState(“”, WorkState1.device, 1)  ;

    ds.CreateNoFileChildDO (“قراردادها”, 30, 0, false, 2)

        در این مثال، در زیرشاخه منبع دیجیتال محتوای فیلد WorkState1.device یک شاخه بنام "قراردادها" ایجاد می شود. تعداد ارقام زیرگروه آن 2 رقم می باشد.

    • برای یک منبع دیجیتال با کد معین (مثلا  01/04/12(

    var ds=WorkUtils.GetDOState (“”, “01/04/12”, 1)  ;

    ds.CreateNoFileChildDO (“بیمه نامه ها”, 15)

    در این مثال، در زیرگروه منبع دیجیتال یک شاخه بنام "بیمه نامه ها" ایجاد می شود که ساختار درختی آن مشابه با منبع دیجیتال پدر می باشد.

    6) ایجاد یک منبع دیجیتال با فایل متنی

    با استفاده از این تابع می توانیم یک منبع دیجیتال فرزند با یک فایل از نوع متنی ایجاد کنیم. الگوی کلی این تابع به شکل زیر است:

    function CreateTextChildDO(desc, contentKindCode, text, fileName, parentDOKey)

    پارامترهای این تابع به شرح زیر است:

    desc : شرح منبع دیجیتال

    contentKindCode: کد نوع محتوای منبع دیجیتال

    text: محتوای فایل متنی مورد نظر  به شکل یک رشته حرفی در این پارامتر پاس می شود. در اینجا لازم به توضیح است که منظور از متن، تنها متنهای از نوع txt یا doc و docx نیست بلکه بطور عام شامل متنهای با فرمت html و xhtml نیز می شود.

    fileName: نام فایل متنی است که ایجاد می شود و به منبع دیجیتال assign می شود.

    parentDOKey: کلید منبع دیجیتال پدر. یعنی سرشاخه ای که منبع دیجیتال مورد نظر در زیرمجموعه آن ایجاد می شود. این کلید اختیاری است یعنی اگر پاس نشود یا صفر پاس شود آنگاه منبع دیجیتال در زیرشاخه منبع دیجیتال اصلی ایجاد می شود ولی اگر غیرصفر پاس شود آنگاه باید فرزند مستقیم یا غیرمستقیم منبع دیجیتال اصلی باشد.

    • مثال برای پیوستها

    WorkState1.CreateTextChildDO (“گزارش استعلام قیمت”, 31, str , PriceInq.html)

    در این مثال، گزارش استعلام قیمت، که ابتدا به شکل یک رشته حرفی با فرمت xhtml تولید و در متغیر str قرار گرفته است، در قالب یک فایل متنی html و با نام PriceInq.html به عنوان پیوست کار جاری در گردش کار کالاها (WorkState1) ذخیره می شود.

    • مثال برای فرزند بطور عام
      • برای یک فیلد از نوع منبع دیجیتال

    var ds=WorkUtils.GetDOState (“”, WorkSate1.device, 1)  ;

    ds.CreateTextChildDO ("لیست درخواستها”, 24, str, products.txt)

    در این مثال، در زیرشاخه منبع دیجیتال محتوای فیلد device ، یک منبع دیجیتال فرزند با شرح "لیست درخواستها" و با یک فایل متنی بنام products.txt با محتوای رشته حرفی str ذخیره می شود.

    • برای یک منبع دیجیتال با کد 01/04/12

     var ds=WorkUtils.GetDOState (“”, “01/04/12”, 1);

    ds.CreateTextChildDO ("لیست درخواستها”, 24, str, products.txt)

    در این مثال، در زیرشاخه منبع دیجیتال با کد  01/04/12، یک منبع دیجیتال فرزند با شرح "لیست درخواستها" و با یک فایل متنی بنام products.txt و با محتوای رشته حرفی str ذخیره می شود.

    خواندن محتوای فایل متنی فرزند (پیوست ) منبع دیجیتال

    هر منبع دیجیتال می تواند شامل یک فایل باشد که محدود به نوع خاصی نیست اما با این تابع فقط می توانیم محتوای فایل از نوع متنی را استخراج کنیم. الگوی این تابع به شکل زیر است:

    function GetChildDOText(doKey): String

    منبع دیجیتال با کلید (doKey) باید فرزند مستقیم یا غیر مستقیم منبع دیجیتال اصلی باشد.

    • مثال برای پیوستها:  فرض کنید پیوست اول یک کار از گردش کار کالاها (WorkState1) دارای یک فایل متنی است. برای خواندن این فایل به شکل زیر عمل می کنیم:

    var  indList=WorkState1.GetChildDOList();

    var dKey=indList[0].Key;

    var fileText=WorkState1.GetChildDOText(dKey);

    • مثال برای فرزندان منبع دیجیتال بطور عام:
      • برای فیلدهای از نوع منبع دیجیتال

    var ds=WorkUtils.GetDOState(“”, WorkSate1.device, 1);

    var chList=ds.GetChildDOList();

    var dKey=chList[0]. Key;

    var fileText=ds.GetChildDOText(dKey)

    • برای یک منبع دیجیتال  با یک کد خاص (مثلا  12/04/01)

    var ds=WorkUtils.GetDOState (“”, “01/04/12”, 1);

    car chList=ds.GetChildDOList()

    var dKey=chList[0]. Key;

    var fileText=ds.GetChildDOText(dKey)

    7) حذف یک فرزند از منبع دیجیتال

    با استفاده از این تابع می توانیم یک منبع دیجیتال فرزند را از منبع دیجیتال اصلی حذف کنیم. الگوی کلی این تابع به شکل زیر است:

    function RemoveChildDO(doKey)

    پارامتر این تابع، doKey یا کلید منبع دیجیتال است.

    • مثال برای پیوست ها:

    مثال 1: فرض کنید می خواهیم دومین پیوست یک کار از گردش کار کالاها را حذف کنیم:

    var  indList=WorkState1.GetChildDOList();

    var dKey=indList[1]. Key;

    WorkState1.RemoveChildDO(dKey)

    مثال 2: در این مثال می خواهیم تمام فاکتورهای پیوست شده را حذف کنیم:

    var data=’<_RQST  Desc=”فاکتور” />’

    var factorList=WorkState1.SearchDOChildren(data);

    if (factorList.length>0){

         var len=factorList.length;

         for (var i=0; i

               WorkState1.RemoveChildDO(factorList.Key)

          }

    }

    در اینجا ابتدا فرض شده که شرح فاکتورهای پیوست شامل واژه "فاکتور" می باشد و براین اساس، فهرست پیوستهای واجد این شرط استخراج شده است سپس در یک حلقه for ، این پیوستها یک به یک حذف می شود.

    • مثال برای فرزندان بطور عام
      • برای یک فیلد از نوع منبع دیجیتال

    var ds=WorkUtils.GetDOState (“”, WorkSate1.device, 1);

    var chList=ds.GetChildDOList ();

    var dKey=chList[0].Key;

    ds.RemoveChild(dKey);

    در این مثال، اولین فرزند منبع دیجیتال فیلد device حذف می شود.

    • برای یک منبع دیجیتال با یک کد خاص (مثلا  01/04/12)

    var ds=WorkUtils.GetDOState (“”, “01/04/12”, 1);

    var chList=ds.GetChildDOList ();

    var dKey=chList[0].Key;

    ds.RemoveChild(dKey);

    تمرین: یکی از پارامترهای جستجوی فرزندان (پیوستها)، نوع محتوا می باشد. از طرف دیگر، مشخصه نوع محتوا در تابع جستجوی فرزندان، کلید (و نه کد) نوع محتوا را قبول می کند. به نظر شما چگونه می توانیم کلید نوع محتوا را بدست بیاوریم؟ برای نمونه فرض کنید یک نوع محتوا بنام فاکتورها داریم که کد آن 31 است . حال پیوستهای با این نوع محتوا را حذف کنید.

    کپی یک منبع دیجیتال به زیرشاخه منبع دیجیتال

    با استفاده از این تابع می توانیم یک منبع دیجیتال خاص را به زیرشاخه یک منبع دیجیتال دیگر کپی کنیم. الگوی این تابع به شکل زیر است:

    function CopyDOFrom(srcObj, srcDOKey, copyChildren, preserveCode

    پارامترهای این تابع به شرح زیر است:

    srcObj: این پارامتر می تواند WorkState یا DOState باشد. یعنی اگر بخواهید یک پیوست را کپی کنید باید در این پارامتر WorkState را پاس کنید در غیر این صورت و برای منابع دیجیتال غیر از پیوست، باید DOState را پاس کنید.

    srcDOKey: این پارامتر، کلید منبع دیجیتال فرزند srcObj است. اگر srcObj یک WorkState باشد آنگاه srcDOKey نمی تواند صفر باشد باید حتما تعیین شود اما اگر srcObj یک DOState باشد، srcDOKey اختیاری است یعنی اگر صفر باشد، کلید منبع دیجیتال متناظر با DOState پاس می شود.

    copyChildren: یک پارامتر boolean است که اگر true باشد، تعیین می کند فرزندان منبع دیجیتال نیز کپی شوند.

    preserveCode: این پارامتر نیز یک boolean است که اگر true باشد کد منبع دیجیتال مبدا در مقصد حفظ می شود و اما اگر false باشد، منبع دیجیتال کپی شده در مقصد با یک کد جدید (یکی بیشتر از آخرین کد موجود در زیرشاخه) ایجاد می شود.

    مثالها

    • کپی یک پیوست از یک کار دیگر به پیوستهای یک کار جاری

    var res=WorkUtils.SearchWork(“”, data);

    var wk=res[0];

    var ws=WorkUtils.GetWorkState(“”, wk);

    var  indList=ws.GetChildDOList ();

    var dKey=indList[0]. Key;

    WorkState1.CopyDOFrom (ws, dKey, false, false)

    در این مثال، اولین پیوست یک کار دیگر (با کلید wk) به پیوستهای کار جاری افزوده می شود. توضیح اینکه در این مثال، کار مبدا با یک جستجوی مشخص در کارها تعیین شده است که برای پرهیز از پیچیدگی، به جزئیات این جستجو و محتوای پارامتر data اشاره نشده است.

    • کپی یک منبع دیجیتال به پیوستهای کار جاری

    var ds=WorkUtils.GetDOState (“”, “03/08/18”, 1);

    WorkState1.CopyDOFrom (ds, 0, true, false);

    در این مثال، منبع دیجیتال با کد 03/08/18 با فرزندان و با یک کد جدید به پیوستهای کار جاری اضافه می شود.

     

    • کپی یک پیوست از یک کار خاص به زیرشاخه یک منبع دیجیتال

     

    var res=WorkUtils.SearchWork(“”, data);

    var wk=res[0];

    var ws=WorkUtils.GetWorkState("", wk);

    var  indList=ws.GetChildDOList ();

    var dKey=indList[1].Key;

    var ds=WorkUtils.GetDOState (“”, “03/09”, 1);

    ds.CopyDOFrom (ws, dKey, false, false)

    در این مثال، دومین پیوست یک کار خاص (با کلید wk) بدون فرزندها و با همان کد قبلی به زیرشاخه یک منبع دیجیتال با کد 03/09 افزوده می شود.

     

    • کپی یک منبع دیجیتال به زیرشاخه یک منبع دیجیتال (بطور عام)

    var ds1=WorkUtils.GetDOState (“”, “03/08/18”, 1);

    var ds2=WorkUtils.GetDOState (“”, WorkState1.device, 1);

    ds2. CopyDOFrom (ds1, 0, true, false);

    در این مثال، منبع دیجیتال با کد 03/08/18 همراه با فرزندان و با یک کد جدید به زیرشاخه منبع دیجیتال محتوای فیلد device افزوده می شود

    پيوست ها


    کاربر باتجربه


    کاربر باتجربه


    --
    19 دی 1401 08:32 ق.ظ
    خسته نباشید و تشکر فراوان


    کاربر پورتال


    کاربر پورتال


    --
    30 خرداد 1402 10:21 ق.ظ
    سپاس فراوان
    در دسترس بودن این آموزش ها، زمان انجام پروژه ها را به شدت کاهش می دهد.


    کاربر باتجربه


    کاربر باتجربه


    --
    25 مهر 1403 10:07 ق.ظ
    با سلام خدمت همکاران محترم

    امکان جدید نسخه 15.32 یعنی امکان اصلاح مشخصات منبع دیجیتال به این مطلب افزوده شد و ضمنا دسته بندی مطالب بروز شد و فهرست مطالب نیز اضافه شد.

    با سپاس
    شما مجاز به پاسخ به اين پست نمي باشيد.


    kurtkoy escort
    bostanci escort
    ankara escort
    comendo minha prima gordinha rajini murugan movie hd moglie con due negri calcaterra e lara scena hot mujeres con ropa interior transparente