[Workflow] Nhập ngày sinh, xuất tuổi
Fri May 25, 2018 9:17 am
Mở Visual Studio lên, chọn File > New > Project
Trong cửa sổ New Project, chọn Installed > Visual C# > Workflow > Activity Library
Ở thời điểm tôi viết bài hướng dẫn này, framework nên sử dụng là 4.5.2.
Chuột phải vào Project > Manage NuGet Packages… > Cài các packages sau:
Ở thời điểm tôi viết bài hướng dẫn này, Microsoft.Xrm.Sdk phiên bản 2016
Phiên bản Microsoft.CrmSdk.Workflow nên gần với Microsoft.Xrm.Sdk, ví dụ, cùng là 8.x
Chuột phải vào Project > Add > Class…
Ở đây, tôi đặt tên class là Workflow
Thay đổi toàn bộ code thành:
Trong đó:
Microsoft.Xrm.Sdk và Microsoft.Xrm.Sdk.Workflow là 2 packages tôi vừa add vào ở phía trên,
new_dob và new_age là tên field tôi sẽ demo
Chuột phải vào Project > Properties
Chọn Signing > Tick chọn Sign the assembly > Trong phần Choose a strong name key file chọn <New…>
Đặt tên Key file name
Save all
Chuột phải Project > Build
Build thành công
Mở Plugin Registration Tool lên > Create New Connection
Nếu không có tool, các bạn có thể cài đặt tại https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/download-tools-nuget
Điền đầy đủ thông tin:
User Name: email bạn đăng nhập
Password: pass bạn đăng nhập
Tool sẽ tự động dựa vào username của bạn để chuyển đến trang dynamics tương ứng
Chọn Register > Register New Assembly
Chọn … > chọn đường dẫn đến file <tenproject>.dll
Workflow là tên solution, ở dự án này sẽ là Demo_Workflow
Chọn Register Selected Plugins
Thành công
Workflow là tên solution, Caculated_Age là tên project, của mình sẽ là Demo_Workflow.Workflow
Trong solution, chọn Components > Processes > New
Đặt tên Process name > Chọn kiểu Category là Workflow > Chọn Entity
Trong cửa sổ: Process – Demo_WF chọn Convert to a real-time workflow
Bạn chọn như trong hình, với Record fieds change chọn Date of Birth.
Chọn Add Step > Demo_Workflow (1.0.0.0) > Demo_Workflow.Workflow
Đặt tên Step là getDOB, sau đó chọn Set Properties.
Chọn Look for là Account (tên entity), Day of Birth (tên field) > Add > OK
Thành phẩm:
Chọn Add Step > Update Record
Đặt tên setAge > Set Properties
Gán DOB và Age vào Form (trong cửa sổ Solution, chọn Entity Acount, chọn Form)
Chọn Look for là tên step bước trên (getDOB), sau đó Add và OK
Sau đó bạn chọn Activate là hoàn tất
Trong cửa sổ New Project, chọn Installed > Visual C# > Workflow > Activity Library
Ở thời điểm tôi viết bài hướng dẫn này, framework nên sử dụng là 4.5.2.
Chuột phải vào Project > Manage NuGet Packages… > Cài các packages sau:
- Code:
Microsoft.Xrm.Sdk.2016
Microsoft.CrmSdk.Workflow
Ở thời điểm tôi viết bài hướng dẫn này, Microsoft.Xrm.Sdk phiên bản 2016
Phiên bản Microsoft.CrmSdk.Workflow nên gần với Microsoft.Xrm.Sdk, ví dụ, cùng là 8.x
Chuột phải vào Project > Add > Class…
Ở đây, tôi đặt tên class là Workflow
Thay đổi toàn bộ code thành:
- Code:
using System;
using Microsoft.Xrm.Sdk;
using System.Activities;
using Microsoft.Xrm.Sdk.Workflow;
namespace Demo_Workflow
{
public class Workflow : CodeActivity
{
[Input("Date of Birth")]
public InArgument<DateTime> new_dob { get; set; }
protected override void Execute(CodeActivityContext context)
{
ITracingService tracingService = (ITracingService)context.GetExtension<ITracingService>();
IWorkflowContext workflowContext = (IWorkflowContext)context.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)context.GetExtension<IOrganizationServiceFactory>();
IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
DateTime dtDOB = new_dob.Get(context);
int CalculateAge = Convert.ToInt32(DateTime.Now.Subtract(dtDOB).TotalDays) / 365;
new_age.Set(context, CalculateAge);
}
[Output("Age")]
public OutArgument<Int32> new_age { get; set; }
}
}
Trong đó:
Microsoft.Xrm.Sdk và Microsoft.Xrm.Sdk.Workflow là 2 packages tôi vừa add vào ở phía trên,
new_dob và new_age là tên field tôi sẽ demo
Chuột phải vào Project > Properties
Chọn Signing > Tick chọn Sign the assembly > Trong phần Choose a strong name key file chọn <New…>
Đặt tên Key file name
Save all
Chuột phải Project > Build
Build thành công
Mở Plugin Registration Tool lên > Create New Connection
Nếu không có tool, các bạn có thể cài đặt tại https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/download-tools-nuget
Điền đầy đủ thông tin:
User Name: email bạn đăng nhập
Password: pass bạn đăng nhập
Tool sẽ tự động dựa vào username của bạn để chuyển đến trang dynamics tương ứng
Chọn Register > Register New Assembly
Chọn … > chọn đường dẫn đến file <tenproject>.dll
Workflow là tên solution, ở dự án này sẽ là Demo_Workflow
Chọn Register Selected Plugins
Thành công
Workflow là tên solution, Caculated_Age là tên project, của mình sẽ là Demo_Workflow.Workflow
Trong solution, chọn Components > Processes > New
Đặt tên Process name > Chọn kiểu Category là Workflow > Chọn Entity
Trong cửa sổ: Process – Demo_WF chọn Convert to a real-time workflow
Bạn chọn như trong hình, với Record fieds change chọn Date of Birth.
Chọn Add Step > Demo_Workflow (1.0.0.0) > Demo_Workflow.Workflow
Đặt tên Step là getDOB, sau đó chọn Set Properties.
Chọn Look for là Account (tên entity), Day of Birth (tên field) > Add > OK
Thành phẩm:
Chọn Add Step > Update Record
Đặt tên setAge > Set Properties
Gán DOB và Age vào Form (trong cửa sổ Solution, chọn Entity Acount, chọn Form)
Chọn Look for là tên step bước trên (getDOB), sau đó Add và OK
Sau đó bạn chọn Activate là hoàn tất
Re: [Workflow] Nhập ngày sinh, xuất tuổi
Fri May 25, 2018 9:20 am
Ở phần chọn Convert to a real-time workflow, nếu bạn không chọn, dữ liệu chỉ được thêm vào ở phía server mà không hiện lên phía client, đồng nghĩa khi bạn mở view lên 1 lần nữa nó mới hiện (không đồng bộ giữa server và client).
- [Javascript] Nhập ngày tháng năm sinh xuất tuổi
- Ngày mai tươi đẹp
- [Javascript] Nhập field phuongxa, xuất field quận huyện, tỉnh thành, quốc gia đã lookup từ trước
- Bạo lực học đường trong giới học sinh sinh viên hiện nay
- Chỉ vì nỗi sợ hãi này mà bạn mãi mãi phải "nếm mùi thất bại", ngay cả khi thành công đã ở ngay trước mắt
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|