در Dynamics 365 Workflows، اگر برخی از قابلیتها در ویژگیهای خارج از جعبه موجود نباشد، این گزینه را داریم که Custom Workflow Activity را بنویسیم و آن را در فرآیندهای گردش کار مصرف کنیم. بیایید ببینیم که چگونه برای Dynamics 365، Custom Workflow Activities ایجاد کنیم. برای مثال، در اینجا یک اکتیویتی می نویسیم که متن را به عنوان ورودی می گیرد و تعداد کار را به عنوان خروجی برمی گرداند.
مرحله 1 - ایجاد پروژه جدید
در ویژوال استودیو یک پروژه جدید از نوع Class Library ایجاد کنید و فریمورک نسخه 4.5.2 را انتخاب کنید. این ممکن است برای نسخه های آینده تغییر کند. من نام را WordCountWorkflow گذاشتهام که هدف گردش کار را نشان میدهد.
![Dynamics 365](http://pezhvak24.ir/dl/10kcor/cscd/article/creating-word-counter-custom-workflow-activity-in-dynamics-365/Images/image001.png)
مرحله 2 - بسته های مورد نیاز را اضافه کنید
به "Manage NuGet Packages" بروید و Microsoft.CrmSdk.CoreAssemblies (برای فضای نام Microsoft.Xrm.Sdk) و Microsoft.CrmSdk.Workflow (برای فضای نام Microsoft.Xrm.Sdk.Workflow) را نصب کنید.
![Dynamics 365](http://pezhvak24.ir/dl/10kcor/cscd/article/creating-word-counter-custom-workflow-activity-in-dynamics-365/Images/image002.png)
مرحله 3 - کلاس WordCount ایجاد کنید
ایجاد کلاس WordCount و به ارث رسیده از CodeActivity، از شما می خواهد که فضای نام System.Activities را اضافه کنید.
مرحله 4 - پارامترهای ورودی/خروجی را اضافه کنید
فعالیت گردش کار ما به یک پارامتر ورودی از نوع متن و یک پارامتر خروجی از نوع شماره برای برگرداندن تعداد کلمات نیاز دارد. بیایید آنها را به کلاس اضافه کنیم. باید Microsoft.Xrm.Sdk.Workflow اضافه شود.
- using System.Activities;
- namespace WordCountWorkflow
- {
- public class WordCount : CodeActivity
- {
- protected override void Execute(CodeActivityContext context)
- {
- }
- }
- }
مرحله 4 - اضافه کردن پارامترهای ورودی/خروجی 2
فعالیت گردش کار ما به یک پارامتر ورودی از نوع متن و یک پارامتر خروجی از نوع شماره برای برگرداندن تعداد کلمات نیاز دارد. بیایید آنها را به کلاس اضافه کنیم، لازم است Microsoft.Xrm.Sdk.Workflow اضافه شود.
- using Microsoft.Xrm.Sdk.Workflow;
- using System.Activities;
- namespace WordCountWorkflow
- {
- public class WordCount : CodeActivity
- {
- [RequiredArgument]
- [Input("Input Text")]
- public InArgument<string> InputText { get; set; }
- [Output("Word Count")]
- public OutArgument<int> CountOfWords { get; set; }
- protected override void Execute(CodeActivityContext context)
- {
- }
- }
- }
مرحله 5 - منطق تعداد کلمات را اضافه کنید و پارامترها را دریافت/تنظیم کنید
در داخل متد Execute، مقدار پارامتر InputText را دریافت می کنیم و از Split() برای تقسیم به کلمات و سپس .Lengthproperty برای بدست آوردن تعداد کلمات استفاده می کنیم. در نهایت، ما این مقدار را روی پارامتر CountOfWords قرار می دهیم.
- using Microsoft.Xrm.Sdk.Workflow;
- using System;
- using System.Activities;
- namespace WordCountWorkflow
- {
- public class WordCount : CodeActivity
- {
- [RequiredArgument]
- [Input("Input Text")]
- public InArgument<string> InputText { get; set; }
- [Output("Word Count")]
- public OutArgument<int> CountOfWords { get; set; }
- protected override void Execute(CodeActivityContext context)
- {
- this.CountOfWords.Set(
- context,
- this.InputText.Get<string>(context).Split(
- new char[] { ' ', '\r', '\n' },
- StringSplitOptions.RemoveEmptyEntries).Length);
- }
- }
- }