PDA

View Full Version : کار با workflow



pershian2020
یک شنبه 01 دی 1387, 17:26 عصر
من تو پروژه های قبلیم از معماری سه لایه استفاده می کردم. جدیدا با workflow اشنا شدم. باهاش کم و بیش کار کردم.یعنی دیتا را می تونم به wf بفرستم و یه result ی ازش بگیرم. ولی نمی دونم مزیتش نسبت به معماری سه لایه چیه؟ چه جاهایی بهتره از workflow استفاده کنیم.
آیا برای انجام دادن عملیات ذخیره ، حذف ، ویرایش ،workflow پیشنهاد میشه یا همون معماری سه لایه بهتره.
فرق state mashin , Sequential چیست؟
چه جاهایی بهتره از Sequentialاستفاده کنیم چه جاهایی بهتره از state mashin استفاده کنیم.

آرام جان گل
دوشنبه 02 دی 1387, 16:00 عصر
سلام كاربر peshian2020
شما كه در اين مورد كار كرده ايد لطفا در مورد workflow در حالت دايناميك راهنمايي كنيد .

آيا مي توان برنامه را به گونه اي تنظيم كرد كه :
1-كاربر در حين كار با برنامه بداند(ببيند)در كدام قسمت از برنامه و چرخه كاري ما قرار گرفته و از امكانات و مسير هاي خود براي حركت آگاه شود.

2-Admin بتواند مسير هاي حركتي و فعاليت ها را دستكاري كند.

اگه نمونه اي(Templae , sample) در اين باشه بهتره . فقط با مقاله و توضيح كار سخت تر ميشه.

لطفا راهنمايي كنيد
مرسي

pershian2020
دوشنبه 02 دی 1387, 17:14 عصر
تا اونجایی که من میدونم شما باید ازState machine استفاده کنین. تو خود سایت msdn مثال های خوبی داره . من می خواستم یک پروژه را به عنوان مثال بذارم که خطا داد.

آرام جان گل
سه شنبه 03 دی 1387, 10:42 صبح
سلام
ممنون
ميشه برام Mail كنيد

مرسي

آرام جان گل
چهارشنبه 04 دی 1387, 09:45 صبح
سلام

من كاربري هستم كه به تازگي با كلمه workflow آشنا شده ام و فقط برنامه هاي آماده و نمونه هاي MSDN را ديده ام ولي چگونگي ساخت وكار با انها را نمي دانم

لطفا اگر كسي اطلاعي در اين مورد داره به من كمك كنه
من مي خوام كه:

1-كاربر در حين كار با برنامه بداند(ببيند)در كدام قسمت از برنامه و چرخه كاري ما قرار گرفته و از امكانات و مسير هاي خود براي حركت آگاه شود.(workflow monitor)

مثل عكس زير توي اين سايت:(من فقط عكسشو گير آوردم ولي بلد نيستم چطوري طراحي را آغاز كنم و به اين مرحله برسم)

http://blogs.southworks.net/aschapiro/2005/11/08/using-workflow-monitor-tutorial-example-and-analysis/

2-Admin بتواند مسير هاي حركتي و فعاليت ها را دستكاري كند.


مرسي لطفا راهنمايي كنيد

afshinb2
چهارشنبه 04 دی 1387, 11:01 صبح
لطفاً بحث رو از سوال اصلی منحرف نکنید. اگه سوالی جدیدی دارین، یک تاپیک براش باز کنین.

1: WF هیچ رابطی به معماریت نداره. ممکنه معماریت هیچ لایه(!) یا n لایه باشه. ولی در تمامی حالت ها باز می تونی ازش استفاده کنی. WF جایگزین معماریت نمی شه.

2: تمامی شروطی که آدم داخل برنامش می نویسه می تونه تبدیل به Work Flow بشه. درسته؟ تمامی IF هایی که می نویسیم رو می شه با WF پیاده کرد. پس باید هرچی IF داریم رو با WF بنویسیم؟ نه. اینجوری نیست. بستگی به جاش و نوع برنامت داره وبر اساس موارد زیادی باید در موردش تصمیم گرفت که تو این تاپیک نمی گنجه و توضیح دادنش طولانی می شه و از حوصله من خارجه.

pershian2020
چهارشنبه 04 دی 1387, 11:23 صبح
منظور من جایگزینی نبود. منظورم این بود که می شه از wf به عنوان لایه busines logic استفاده کرد.این کار منطقی هست؟
اینکه می گی بستگی به جاش داره منم تو همینش موندم که در چه شرایطی پیشنهاد میشه.
منظور شما sequential f بود دیگه

afshinb2
چهارشنبه 04 دی 1387, 18:28 عصر
منظور من جایگزینی نبود. منظورم این بود که می شه از wf به عنوان لایه busines logic استفاده کرد.این کار منطقی هست؟
اینکه می گی بستگی به جاش داره منم تو همینش موندم که در چه شرایطی پیشنهاد میشه.
منظور شما sequential f بود دیگه

من زیاد باهات موافق نیستم.
به نظرم نمی شه BL رو کامل حذف کرد و جاش WF گذاشت.
BL فقط کار ارتباط با DAL رو به نظر من انجام نمی ده و کارش فقط تصمیم گیری در مورد روند چرخش اطلاعات نیست.
بعضی وقتها تو BL باید تصمیم بگری که یک OBEJCT رو از CACHE بخونی یا از DB بیاری. قبول دارم که این تصمیم گیری هم می تونه با WF انجام بشه ولی اصلان صحیح نیست.(قبلاً هم گفته بودم همه IF ها رو می شه با WF نوشت ولی صحیح نیست)

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

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

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

در ضمن تمام حرف های بالا، نظر شخصی من هست و جایی DOCUMENT در این مورد ندیدم، متاسفانه من ندیدم HELP ها در این مورد که کجا ازش استفاده کنی راهنمایی کنن.

pershian2020
پنج شنبه 05 دی 1387, 08:49 صبح
با سلام afshinb2
مرسی از راهنماییهات .فقط اگه راهنمایی کنی که تو این مثالی که زدی ازsequential بهتره استفاده بشه با state machine ممنون می شم. چون تا اونجایی که من می دونم از هر دوش برای انجام کارها می شه استفاده کرد.
ممنون می شم

pershian2020
پنج شنبه 05 دی 1387, 09:19 صبح
با سلام کاربر آرام جان گل
کار با wf دقیقا مثله کار با یک کلاسه. وقتی یک wf می سازی و اجرا می کنی یک dll بهت میده که تو برنامت می تونی ازش استفاده کنی.در حقیقت wf یک کلاسه.
شما یه sequential wf باز کن و یک code activity داخلش بنداز و هر کدی که می خوای را توش بنویس . مثلا یک پیغام . بعد وقتی تو برنامت ازش استفاده کردی و wf را start کردی مثل یک فلوچارت از بالا به پایین اجرا می شه.
می تونی اطلا هیچ objecti تو wf نندازی و توش متد بنویسی و دقیقا مثل یک dll ساده ازش استفاده کنی. در این مورد دیگه نیازی به start کردن wf نیست.

arashmidos2020
شنبه 22 فروردین 1388, 15:05 عصر
با تشکر از شما.می شود بیشتر در مورد Work flow توضیح بدهید.مثلا در مورد تماس با برنامه دیگر برای خرید اجناس این کار را چطور انجام می دهد؟ در کل کدی که تولید می کند به چه صورت است؟
اگر می شود لطف کنید یک منبع آموزشی را معرفی کنید.
ممنون

محمدامین شریفی
یک شنبه 23 فروردین 1388, 22:24 عصر
کتاب بسیار کامل از انتشارات دوست داشتنی من یعنی Appress به نام Windows_Workflow in_.NET_3.5 فکر کنم بهترین منبع برای یادگیری باشد.


---------------------

چرا work flow(جریان کاری)؟
به عنوان یک برنامه نویس،حرفه ما حل کردن مسائلی است که در جهان واقعیت رخ میدهد.نوع و دشواری مسائلی که ما باید حل کنیم بسیار گسترده است و وابسته به نوع کاری است که ما برای آن برنامه مینویسیم.ولی فارغ از پیچیدگی هر نوع مسئله،ما همه آنها را به یک شکل حل میکنیم:ما آنها را به قسمت های کوچکتر منطقی که بتوانیم آنها را کنترل کنیم میشکنیم(کوچک میکنیم)، و همچنین آن قسمت ها ی کوچک شده را باز کوچکتر میکنیم و به همین ترتیب کوچک و کوچکتر.
هنگامی که ما در میابیم که این وظیفه کوچک شده به اندازه normal و طبیعیش تبدیل شده است و میتوان آنرا درک و مدیرت کرد، آن وظیفه را انجام میدهیم.
این وظایف اغلب به هم وابسته هستند و یک سلسله مراتبی (sequence) ای از دستورالعمل هایی را به ما نشان میدهند که فقط باید در زمان خودشان انجام بشوند.
در برنامه نویسی سنتی شما بوسیله زبان برنامه نویسیتان شروع به کدنویسی آن وظیفه میکنید.
کد شما مشخص میکند که چه کاری(دستورالعمل های اجرایی) رادر میان سلسله ای از دستورالعمل هایش(جریان کنترل ها-the flow of control-) انجام میدهد.شما همچنین کدهای برای تصمیم گیری بر حسب مقدار متغیر ها (پ.ن:نوشتن دستورات شرطی) یا فراخوانی event ها(پ.ن:مثلا onClick) و وظعیت کنونی برنامه یتان مینویسید.
جریان کاری (work flow)، یک سری منظم شفافی از مراحلی است که باید برخی از اهداف از پیش تعین شده را مطابق با الگو های خواص، انجام دهد.با این تعریف،چیزی که ما پیشین تشریح کردیم یک جریان کاری(work flow) بود.
این جریان کاری میتواند درون کد تعریف شود،ولی تنها روش اسفاده از جریان کاری نیست.
ما هر روز از جریان کاری در نوشتن کدهایمان بهره مند میشویم(پ.ن:منظور اینست که جریان کاری یک امریست که ما همیشه در حل مشکلاتمان از آن استفاده میکنیم).
شاید ما متوجه نشویم که واقعا داریم از روش work flow در کارمان استفاده میکنیم ولی ما این مفهوم و concept را حتی زمانی که خودمان هم متوجه انجام آن نیستیم،بکار میگیریم.
خوب پس!،این همه حرف درباره جریان کاری چرا زدیم؟!چرا نویسنده، این کتاب را نوشته است؟! و چرا شما دارید این کتاب را میخوانید؟!!!!!!
Workflows Are Different
of course(قطعا!) ، جریان کاری که من پیشین برایتان شرح دادم، همه داستان نبود!.جریان کاری باید بیشتر از این چیز ها باشد و هست!.
برای یک برنامه نویس workFlow تداعی کننده یک محیط گرافیکی بسیار قدرتمند ، که میتواند دستورات پیچیده برنامه نویسی و جریان کاری کنترل ها را به صورت گرافیکی تعریف کند،میباشد.
work flow برای شما محیطی را به ارمغان می آورد که بتوانید به آسانی کارها(activites) را مدل سازی و ویژوالی کنید(پ.ن:مراحل و دستور العمل هایی را که پیشین به صورت مرحله به مرحله، به قسمت های منطقی و قابل فهم شکسته بودید).تغییرات و شخصی سازی در Work flow ای که شما آنرا طراحی کرده اید بسیار راحت و قدرتمند است.
ولی WorkFlows چیزی فراتر از یک محیط طراحی میباشد.Workflows یک مدل برنامه نویسی جدیدی را عرضه کرده است.در این مدل روش بهتری برای جدا کردن، عملی که میخواهد انجام شود (what to do)و زمانی که میخواهد انجام شود(when to do it) ارائه شده است.این جداسازی به شما این امکان را میدهد که بتوانید زمان اجرای عملیات را بدون تغییر در نحوه اجرای عملیات،تغییر دهید.Workflows اغلب از مدل برنامه نویسی declarative به نسبت مدل برنامه نویسی procedural استفاده میکند.
با این مدل، قسمت منطقی برنامه یا business logic در قطعه های(components) جدا از هم نوشته میشوند(encapsulate).ولی قوانین جریان کنترل ها که بین component ها میباشد بصورت declarative حکم فرماست.
بدیهی است که زبان های چند منظوره ای مانند #C یا Visual Basic، میتوانند مسائل برنامه نویسی را حل کنند.ولی مدل برنامه نویسی Workflows،واقعا به شما این امکان را میدهد که بتوانید مدل زبان برنامه نویسی خودتان را طراحی کنید.

محمدامین شریفی
سه شنبه 25 فروردین 1388, 09:50 صبح
بچه ها،برای ادامه بحث و مرتب شدن کارها به این قسمت بیایید:

http://www.barnamenevis.org/forum/showthread.php?p=704849