Hướng dẫn javascript workflow engine - công cụ quy trình làm việc javascript

Tất cả các biểu mẫu có thể kích hoạt công cụ quy trình công việc JavaScript phía máy chủ của Ragic để thực hiện logic kinh doanh phức tạp, chẳng hạn như tính toán chi phí và đăng cân bằng hàng tồn kho. Về cơ bản, bất kỳ logic kinh doanh phức tạp nào mà bạn muốn thực hiện nhưng không thể được bao phủ bởi các chức năng hiện có của Ragic đều có thể được bao phủ bởi kịch bản phía máy chủ.server-side Javascript workflow engine to execute complex business logic, such as calculating costs and posting inventory balance. Basically, any complex business logic that you would like to execute but cannot be covered by Ragic's existing functions can be covered by server-side scripting.

Công cụ kịch bản dựa trên công cụ kịch bản Java tiêu chuẩn Nashorn được bao gồm trong nền tảng Java. Nashorn hỗ trợ Ecmascript 5.1, vì vậy sẽ là khôn ngoan khi tránh cú pháp Ecmascript 6.

Quy trình làm việc của JavaScript làm gì?

Giao diện thiết kế bảng tính của Ragic có thể xử lý hầu hết các công việc quản lý dữ liệu của bạn, chẳng hạn như tạo, chỉnh sửa và truy vấn hồ sơ mà không gặp nhiều vấn đề. Mặt khác, bảo trì dữ liệu thủ công có thể tốn thời gian và thói quen một chút sau một thời gian. Đây là thời điểm mà người dùng gagic sẽ bắt đầu nghĩ cách tự động hóa các quy trình này.

Bên trong Ragic, có một công cụ kịch bản khá mạnh mẽ, nơi bạn có thể viết JavaScript chạy ở phía máy chủ, để truy xuất dữ liệu bạn có trên bảng tính của mình, thực hiện sửa đổi hoặc thậm chí tạo nhiều bản ghi chỉ bằng một lần nhấp. Việc sử dụng điển hình bao gồm cập nhật hàng tồn kho, tạo một bản ghi mới dựa trên một bản khác [tạo đơn đặt hàng từ báo giá, tạo liên hệ từ khách hàng tiềm năng bán hàng] hoặc thực hiện xác thực bản ghi dựa trên dữ liệu cơ sở dữ liệu.

Có 5 cách chính để chạy quy trình công việc JavaScript của bạn:

  1. Nút hành động
  2. Post-workflow
  3. Pre-workflow
  4. Quy trình làm việc hàng ngày
  5. Quy trình công việc phê duyệt

Và có một quy trình công việc toàn cầu nơi bạn có thể đặt các định nghĩa chức năng JavaScript chung được chia sẻ bởi nhiều hơn một trong các tập lệnh quy trình làm việc của bạn.

Nút hành động

Quy trình làm việc hàng ngàyinstalled sheet scope of your sheet, and configure an action button to execute the script when the user clicks on the button that will be displayed in the "Actions" panel in the lower right side.

Quy trình công việc phê duyệtJavascript Workflow:

Và có một quy trình công việc toàn cầu nơi bạn có thể đặt các định nghĩa chức năng JavaScript chung được chia sẻ bởi nhiều hơn một trong các tập lệnh quy trình làm việc của bạn.installed sheet scope from the top dropdown:

Đây là cách phổ biến và sạch nhất nhất để chạy quy trình công việc JavaScript và nói chung là đề xuất đầu tiên của chúng tôi. Bạn có thể viết tập lệnh của mình trong phạm vi trang tính đã cài đặt của trang tính của mình và định cấu hình nút hành động để thực thi tập lệnh khi người dùng nhấp vào nút sẽ được hiển thị trong bảng "Hành động" ở phía dưới bên phải.Action Button of the type JS Workflow, and refer to the Javascript function that you have written.

Để thêm tập lệnh phạm vi trang tính đã cài đặt, chỉ cần nhấp chuột phải vào một tờ và chọn JavaScript Workflow:

setStatus[{id}]

Và chọn phạm vi trang tính đã cài đặt từ thả xuống trên cùng:

Post-workflow

Sau đó, bạn có thể vào trang biểu mẫu của thiết kế trang tính của mình và thêm một nút hành động của quy trình làm việc loại JS và tham khảo chức năng JavaScript mà bạn đã viết.

Lưu ý rằng bạn có thể vượt qua ID bản ghi của bản ghi hiện tại bằng cách sử dụng {id} trong đối số cho cuộc gọi chức năng như:Javascript Workflow:

Tất nhiên, chúng tôi sẽ nói thêm về cách viết các chức năng này trong các phần sau.Post-workflow from the top dropdown.

Dòng sau làm việc được thực hiện ngay sau khi một bản ghi được lưu. Với dòng chảy sau làm việc, rất thuận tiện để tự động hóa các thay đổi mà bạn muốn thực hiện trong hồ sơ mà bạn vừa lưu mà không thể thực hiện với các công thức. Hoặc bạn có thể thực hiện sửa đổi cho hồ sơ trên các bảng liên quan khác, như cập nhật số dư hàng tồn kho.

var recordId = param.getNewNodeId[key_field_id_of_form];

var query = db.getAPIQuery[path_to_form];

var record = query.getAPIEntry[id];

// do what you would like to do with the record retrieved

Để thêm một dòng sau khi làm việc, chỉ cần nhấp chuột phải vào một tờ và chọn JavaScript Workflow:

Và chọn dòng sau làm việc từ thả xuống hàng đầu.

Pre-workflow

Một dòng sau khi làm việc điển hình sẽ trông giống như thế này:

Xem tài liệu tham khảo API của chúng tôi và các phần khác của tài liệu này để biết danh sách những điều bạn có thể làm.Javascript Workflow:

Cũng lưu ý rằng dòng sau làm việc sẽ không được thực thi nếu bạn sửa đổi các mục trên trang danh sách.Pre-workflow from the top dropdown.

Các công trình trước được thực hiện trước khi một bản ghi được lưu, do đó nó có thể được sử dụng như một cách xác thực để kiểm tra dữ liệu được nhập so với dữ liệu trong cơ sở dữ liệu. Nói chung, hầu hết các xác thực có thể được thực hiện với kiểm tra biểu thức chính quy phía trước của chúng tôi hoặc hộp kiểm duy nhất cho các trường văn bản miễn phí. Nhưng để kiểm tra phụ trợ phức tạp hơn, đôi khi sẽ cần phải làm việc trước.

Để thêm một luồng trước, chỉ cần nhấp chuột phải vào một tờ và chọn JavaScript Workflow:

Và chọn trước khi làm việc từ thả xuống hàng đầu.

/**

* Key Field: 1000004

* Field Name Field Id

* - - - - - - - - - - - --------

* ID : 1000001

* Price : 1000002

* Name : 1000003

* Available ? : 1000005

*/

function log[str] {

// set status 'INVALID' or 'ERROR' to cancel the saving.

response.setStatus['INVALID'];

response.setMessage[str];

}

function ifThePriceIsNegative[] {

// get the price we trying to save.

var newPrice = param.getNewValue[1000002];

// change the newPrice string to integer.

if[parseInt[newPrice] < 0] {

return true;

}

}

// if the price is negative, don't save it.

if[ifThePriceIsNegative[]] {

log['Price is negative !!'];

}

Có một ví dụ đơn giản:

Giả sử chúng tôi có một danh sách,param to get old value and new value instead.

Và chúng tôi muốn đảm bảo giá chúng tôi muốn tiết kiệm không phải là tiêu cực.

Và bây giờ chúng tôi cố gắng tiết kiệm một mức giá âm, chúng tôi sẽ nhận được

Đáng chú ý là chúng tôi không thể sử dụng Entry.getFieldValue trong khi viết dòng tiền làm việc trước bằng gagic [vì Ragic chưa lưu nó]. Thay vào đó, hãy cố gắng sử dụng tham số để có được giá trị cũ và giá trị mới.Global Javascript Workflow:

Quy trình làm việc hàng ngàyDaily Workflow at the first top dropdown.

Quy trình làm việc hàng ngày chạy hàng ngày. Nó hữu ích cho việc thực hiện các sửa đổi cần được làm mới mỗi ngày. Giống như cập nhật kết quả của các công thức dựa trên ngày hiện tại.Company Setting:

1. Chuyển đến thiết lập tài khoảnAccount Setup

2. Nhấp vào cài đặt công tyCompany Setting

3. Chọn Công ty Múi giờ địa phương và Thời gian thực hiện quy trình làm việc hàng ngày và tiết kiệm.Company Local Time Zone and Daily Workflow Execution Time and save.

Nếu cài đặt công ty của bạn không có múi giờ địa phương của công ty và thời gian thực hiện quy trình làm việc hàng ngày, vui lòng liên hệ với chúng tôi để cập nhật nó cho bạn.Company Setting does not have Company Local Time Zone and Daily Workflow Execution Time, please contact us to update it for you.

Quy trình công việc phê duyệt

Quy trình công việc phê duyệt được thực hiện ngay sau khi phê duyệt được tạo/từ chối/hủy bỏ/hoàn thành.

Để thêm một dòng sau khi làm việc, chỉ cần nhấp chuột phải vào một tờ và chọn JavaScript Workflow:Javascript Workflow:

Và chọn quy trình làm việc phê duyệt từ thả xuống hàng đầu.Approval Workflow from the top dropdown.

Bạn có thể nhận được ID bản ghi bởi:

var recordId = approvalParam.getEntryRootNodeId[];

Phê duyệt là một biến được xác định trước trong phạm vi quy trình công việc phê duyệt.

Và bạn có thể lấy hành động phê duyệt bằng cách:

var action = approvalParam.getApprovalAction[];

Sau khi nhận được dữ liệu trên, bạn có thể tùy chỉnh yêu cầu của mình như thế này:

var query = db.getAPIQuery[path_to_form];

var entry = query.getAPIEntry[id];

if [action === 'CANCEL'] {

entry.setFieldValue[STATUS_FIELD, "approval is canceled!"];

}

if [action === 'FINISH'] {

entry.setFieldValue[STATUS_FIELD, "approval is completed!"];

}

Quy trình làm việc toàn cầu

Quy trình làm việc toàn cầu là một nơi mà bạn có thể viết các mô -đun quy trình công việc JavaScript mà các chức năng quy trình công việc khác có thể tham chiếu. Nó sẽ không được tự mình xuất hiện, nhưng có thể được tham chiếu trong bất kỳ loại công việc nào được liệt kê ở trên. Đó là một nơi tuyệt vời để đặt các tập lệnh mà bạn có thể cần phải nhân đôi nhiều tờ nếu không.

Để thêm quy trình làm việc toàn cầu, chỉ cần nhấp chuột phải vào một tab và chọn quy trình công việc JavaScript toàn cầu:Global Javascript Workflow:

Nhận hồ sơ

Có hai cách khác nhau để có được bản ghi hiện tại mà người dùng đang xem [đối với các nút hành động] hoặc bản ghi mà người dùng vừa lưu [đối với Flowflow và Post-Workflow].

Nút hành động

Nút hành động biểu mẫu hoạt động bằng cách định cấu hình nút hành động để gọi một hàm bạn đã xác định trong phạm vi trang trí. Khi bạn xác định chức năng mà nút hành động gọi, bạn có thể truyền tham số {id}, đó là ID của bản ghi nơi bạn nhấp vào nút hành động đến các chức năng trong quy trình làm việc.{id} which is the id of record where you click action button to functions in workflow.

Bạn có thể thấy ví dụ tại Nút hành động Quy trình làm việc.

Pre-workflow

Bạn có thể nhận được ID bản ghi bởi:

var recordId = param.getNewNodeId[key_field_id_of_form];

Phê duyệt là một biến được xác định trước trong phạm vi quy trình công việc phê duyệt.

Và bạn có thể lấy hành động phê duyệt bằng cách:

var query = db.getAPIQuery[path_to_form];

var entry = query.getAPIEntry[id];

Post-workflow

Sau khi nhận được dữ liệu trên, bạn có thể tùy chỉnh yêu cầu của mình như thế này:

var entry=param.getUpdatedEntry[];

Quy trình làm việc toàn cầu

var query = db.getAPIQuery[path_to_form];

query.setUpdateMode[];

query.setIgnoreAllMasks[true]; // Unmask all masked fields.

var entry = query.getAPIEntry[id];

Quy trình làm việc toàn cầu là một nơi mà bạn có thể viết các mô -đun quy trình công việc JavaScript mà các chức năng quy trình công việc khác có thể tham chiếu. Nó sẽ không được tự mình xuất hiện, nhưng có thể được tham chiếu trong bất kỳ loại công việc nào được liệt kê ở trên. Đó là một nơi tuyệt vời để đặt các tập lệnh mà bạn có thể cần phải nhân đôi nhiều tờ nếu không.query.addIgnoreMaskDomain[fieldId_of_the_masked_field] instead of query.setIgnoreAllMasks[true] to unmask only specific fields.

Để thêm quy trình làm việc toàn cầu, chỉ cần nhấp chuột phải vào một tab và chọn quy trình công việc JavaScript toàn cầu:

Nhận hồ sơ

Có hai cách khác nhau để có được bản ghi hiện tại mà người dùng đang xem [đối với các nút hành động] hoặc bản ghi mà người dùng vừa lưu [đối với Flowflow và Post-Workflow].

Nút hành động

var recordId = param.getNewNodeId[key_field_id_of_form];

var query = db.getAPIQuery[path_to_form];

var record = query.getAPIEntry[id];

// do what you would like to do with the record retrieved

0

Nút hành động biểu mẫu hoạt động bằng cách định cấu hình nút hành động để gọi một hàm bạn đã xác định trong phạm vi trang trí. Khi bạn xác định chức năng mà nút hành động gọi, bạn có thể truyền tham số {id}, đó là ID của bản ghi nơi bạn nhấp vào nút hành động đến các chức năng trong quy trình làm việc.addFilter[fieldId, operator, value], and call getAPIResultList[] to get the list of records.

Bạn có thể thấy ví dụ tại Nút hành động Quy trình làm việc.

PARAM là một biến được xác định trước, bạn có thể sử dụng nó trong dòng chảy trước làm việc và hậu làm việc.Sau khi bạn nhận được ID bản ghi, đây là cách bạn nhận được bản ghi [mục nhập]:
Đối với dòng sau làm việc, bạn có thể sử dụng phương thức trên giống như với dòng trước. Nhưng cũng có một phương pháp tiện lợi để truy xuất hồ sơ vừa được lưu:Nếu có các trường đeo mặt nạ trên trang biểu mẫu, bạn sẽ nhận được các giá trị đeo mặt nạ theo mặc định. Bạn có thể nhận được các giá trị không được giải quyết bằng cách:Bạn có thể sử dụng Query.AddignorEmaskDomain [FieldID_OF_THE_MASKED_FIELD] thay vì Query.SetignoreallMasks [true] chỉ để vạch mặt các trường cụ thể.Có nhiều giới thiệu về cách cập nhật hồ sơ trong phần sau.Nếu bạn muốn lọc ra nhiều bản ghi, vui lòng tham khảo phần lọc.Truy vấn cho một bộ hồ sơNếu bạn muốn nhận được nhiều hơn một bản ghi bằng cách lọc:Bạn có thể thêm các bộ lọc vào truy vấn của addfilter [fieldID, toán tử, giá trị] và gọi getApiresultList [] để lấy danh sách các bản ghi.Đây là danh sách các toán hạng mà bạn có thể sử dụng:Tên toán hạngGiá trị toán hạngBằng nhau=Biểu hiện thông thường

REGEXyyyy/MM/dd or yyyy/MM/dd HH:mm:ss

Lớn hơn hoặc bằngfull text search as a query filter by calling setFullTextSearch[String queryTerm] instead of addFilter[].

> =

Ít hơn hoặc bằng nhau

Let's start with a simple example which retrieves the current record as an object, update its value with a button, and then saves it back to the database. Here is what the demo form looks like:

Lớn hơn

var recordId = param.getNewNodeId[key_field_id_of_form];

var query = db.getAPIQuery[path_to_form];

var record = query.getAPIEntry[id];

// do what you would like to do with the record retrieved

1

>db is predefined. You can reference to it anywhere. Generally we call the method getAPIQuery[pathName] to retrieve the query object for a sheet.

Ít hơngetAPIEntry[recordId], and call setFieldValue[fieldId,value] to set value to a field, or getFieldValue[fieldId] to retrieve value from a record.

Bài Viết Liên Quan

Chủ Đề