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:

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

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:

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

Đâ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.

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

Để 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:

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

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:

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

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:

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

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:

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

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:

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

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

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

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

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

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

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

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.

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

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

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:

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

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:

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

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:

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

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.

<

yyyy/MM/dd

Chứa

HH:mm:ss

giốnggetFieldValues(fieldId) to retrieve all the values in an array. You can also call setFieldValue(fieldId,value,true) with an extra true argument at the end to specify that you're "adding" an option to the current list of values, not overwriting the existing ones. Note that these operations is only suitable for multiple selection fields.

Nếu bạn muốn sao chép giá trị trường nhiều lựa chọn và ghi đè giá trị trong trường nhiều lựa chọn Anthother, bạn không thể chỉ sử dụng getFieldValues ​​(fieldID) và setFieldValue (fieldID, value, true). Đây là mã mà bạn có thể tham khảo:getFieldValues(fieldId) and setFieldValue(fieldId,value,true). Here's the code that you can refer to:

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

2

Xin lưu ý rằng bạn cần truy xuất mọi tùy chọn và định dạng các tùy chọn đó bằng ký tự thanh dọc (|) giống như những gì bạn sẽ làm trong khi nhập dữ liệu hiện có từ các tệp Excel hoặc CSV.

Nếu bạn đặt giá trị thành trường Tải lên tệp, bạn có thể sử dụng SetFieldFile (Int FieldID, String FileName, String FileContent) để tạo tệp với tên tệp và với fileContent bạn đã cung cấp. Ragic sau đó sẽ lưu tệp này vào trường này để tệp có sẵn để tải xuống trên giao diện người dùng.

Sau khi bạn hoàn thành, chỉ cần gọi Save () trên đối tượng Ghi để lưu nó trở lại cơ sở dữ liệu.save() on the record object to save it back to the database.

Tạo hồ sơ

Tạo hồ sơ rất giống với các bản ghi cập nhật. Thay vì gọi query.getApientry (), hãy gọi query.insertapientry () thay thế. Giống như getapientry (), nó cũng sẽ trả về một bản ghi nơi bạn có thể setfieldvalue để thêm các giá trị trường. Bản ghi sẽ được tạo sau khi gọi record.save ().query.insertAPIEntry() instead. Like getAPIEntry(), it will also return a record where you can setFieldValue to add field values. The record will be created after calling record.save().

Một sửa đổi đơn giản của bản demo cập nhật bản ghi như thế này sẽ tạo ra bản ghi mới thay thế: thay vào đó:

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

3

Subtables

Liên kết đến ví dụ

Nếu bạn có các vật phụ trong một tờ, bạn cũng có thể sử dụng API của chúng tôi để truy xuất dữ liệu từ nó hoặc thực hiện các chỉnh sửa như ví dụ sau. Biểu mẫu trông như thế này:

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

Quy trình làm việc sẽ đi qua từng hàng trong Subtable và tìm tổng số tiền cho năm nay (theo trường ngày trong Subtable), tổng số năm với số tiền nhiều nhất và xác định năm nào có tổng số cao nhất. Điều này được thiết kế như một dòng sau làm việc, vì vậy ba trường chỉ đọc sẽ được lấp đầy bởi quy trình làm việc sau khi hồ sơ được lưu.

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

4

Ý tưởng cơ bản là sử dụng getSubTablesize (subtableID) để có được số lượng hàng cho một bản ghi và sử dụng getSubTableFieldValue (subtableID, subtableDerowIndex, subtableFieldID) để truy xuất các giá trị của chúng. Bạn sẽ có thể tìm thấy ID phụ, thông tin ID trường trong các nhận xét được tạo tự động khi bạn bắt đầu chỉnh sửa tập lệnh quy trình công việc.getSubtableSize(subtableId) to get the number of rows for a record, and use getSubtableFieldValue(subtableId,subtableRowIndex,subtableFieldId) to retrieve their values. You should be able to find subtable id, field id information in the auto generated comments when you start editing workflow scripts.

Bạn cũng có thể sử dụng SetSubTableFieldValue (subtableFieldId, subtableRootNodeID, giá trị) để đặt các giá trị thành một phép trừ. SubtablerootNodeID được sử dụng để chỉ định hàng phụ nào mà bạn đang đề cập đến. Để tìm một SubtableMootNodeID cho một hàng có thể phụ hiện có, bạn có thể sử dụng Call getSubTablerootNodeID sau đây (subtableId, subtableBlerowIndex) sẽ trả về một số nguyên chứa subtableBlerootNodeID.setSubtableFieldValue(subtableFieldId,subtableRootNodeId,value) to set values to a subtable. The subtableRootNodeId is used to specify which subtable row that you're referring to. To find a subtableRootNodeId for an existing subtable row, you can use the following call getSubtableRootNodeId(subtableId,subtableRowIndex) which will return an integer containing the subtableRootNodeId.

Nếu bạn cần thêm một hàng vào Subtable, bạn có thể sử dụng SubtablerootNodeID tiêu cực như -100, cách này tất cả các giá trị được đặt thành cùng một SubtablerootNodeID tiêu cực sẽ được áp dụng cho cùng một hàng có thể phụ mới và các giá trị được đặt thành một SubtablerOotOid khác nhau như -101 sẽ tạo hàng khác nhau trong phần phụ với tập hợp các giá trị khác nhau này.-100, this way all values set to the same negative subtableRootNodeId will be applied to the same new subtable row, and values set to a different negative subtableRootNodeId like -101 will create different row in the subtable with this different set of values.

Pre-workflow và hậu làm việc

Nếu bạn muốn nhận các giá trị trong dòng chảy trước khi làm việc và sau làm việc, hãy thử theo ví dụ này:

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

5

Sao chép hồ sơ

Liên kết đến ví dụ: Sao chép từ và sao chép vào

Sao chép hồ sơ là một trong những chương trình quy trình công việc phổ biến nhất mà chúng tôi gặp phải. Chúng tôi đã viết một chức năng khá đơn giản để đơn giản hóa loại hoạt động này. Giả sử chúng tôi muốn xem một bản ghi trên tờ này:

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

Với nút bấm, hãy tạo bản ghi trên bảng này:

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

Đây là mã cho nút hành động này:

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

6

Ở đây bạn có thể thấy chúng ta có thể thực hiện bản sao với một cuộc gọi chức năng đơn giản đến EntryCopier. EntryCopier lấy một chuỗi JSON làm tham số của nó. Chỉ cần đặt bảng nguồn, bảng mục tiêu, bản ghi mà chúng tôi đang sao chép và quan trọng nhất là trường nào nên được ánh xạ tới trường nào. Khi ánh xạ hoàn tất, bạn có thể tạo các nút hành động để sao chép bản ghi từ một tờ này sang trang khác rất dễ dàng.entryCopier. entryCopier takes a JSON string as its parameter. Just put down the source sheet, target sheet, the record that we're copying, and most importantly, which field should be mapped to which field. When the mapping is complete, you can create action buttons to copy records from one sheet to another very easily.

Hãy xem một ví dụ khác.

Tại đây, chúng tôi muốn sao chép Lin từ "copyfrom" sang "copyto" và đặt trạng thái thành mới. Ngoài ra, chúng tôi cũng muốn ghi lại ngày được tạo (vui lòng bỏ qua việc sử dụng trường ngày $ cho ví dụ này).

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

7

Tiếp theo, thiết lập nút hành động và lưu nó.

Sau đó, chỉ cần nhấp vào nút Hành động để hiển thị kết quả.

Kiểm tra quyền truy cập của người dùng

Bạn có thể thực hiện một số xử lý có điều kiện dựa trên nhóm người dùng sẽ thực thi tập lệnh. không có trong nhóm người dùng này. Một cách sử dụng điển hình sẽ như sau, mã sau được thiết kế để trở thành một luồng trước, nhưng một đối tượng người dùng và cuộc gọi isingroup có thể được sử dụng trong tất cả các loại quy trình làm việc ngoại trừ quy trình làm việc hàng ngày được hệ thống kích hoạt.

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

8

Gửi thông báo e-mail

Đôi khi bạn muốn gửi thông báo e-mail dựa trên một bộ điều kiện hoặc bạn muốn thực sự tùy chỉnh nội dung thông báo thông báo của mình. Bạn có thể viết quy trình công việc JavaScript phía máy chủ cho mục đích này. Đây là tập lệnh mà bạn sẽ sử dụng để gửi e-mail, nó thực sự đơn giả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

9

Lưu ý rằng nếu bạn muốn gửi e-mail cho nhiều người nhận, chỉ cần tách từng địa chỉ e-mail bằng dấu phẩy.

Đối với các tệp đính kèm, bạn có thể sử dụng mailer.attach (myurl); Để đính kèm một bản ghi trên ragic bằng cách sử dụng URL của bản ghi. Ví dụ: đây là một url kỷ lục trên ragic (luôn bỏ qua URL sau băm):mailer.attach(myURL); to attach a record on Ragic by using the record's URL. For example, here is a record URL on Ragic (always ignore URL after the hash) :

/**

* 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 !!');

}

0

Đây là URL thân thiện với máy in HTML của nó:

/**

* 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 !!');

}

1

Đây là URL phiên bản Excel của nó:

/**

* 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 !!');

}

2

Bạn cũng có thể sử dụng URL hợp nhất thư như thế này, CID là ID của hợp nhất thư, bạn có thể nhận CID trong URL khi cố gắng tải xuống tài liệu Mail Merge:

/**

* 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 !!');

}

3

Chúng tôi thực thi một số hạn chế về số lượng e-mail bạn có thể gửi. Vì vậy, gửi hợp lý! Nếu bạn có một số câu hỏi trên e-mail gửi hạn ngạch, hãy gửi cho chúng tôi một e-mail tại.

Tạo và hủy bỏ phê duyệt

Bạn có thể bắt đầu hoặc hủy bỏ sự chấp thuận của bản ghi bằng cách thêm tập lệnh sau làm việc vào trang của bạn.

Đầu tiên chúng tôi đặt bước phê duyệt trong chế độ thiết kế.

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

Và bây giờ đặt chi tiết phê duyệt trong quy trình làm việc sau

/**

* 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 !!');

}

4

kết quả

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

/**

* 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 !!');

}

5

là định dạng tham số bạn nên cung cấp.

Stepindex: :

Được sử dụng để biết bước phê duyệt nào để đặt, bắt đầu từ số không.

Người phê duyệt: :

Được sử dụng để biết ai có thể ký bước phê duyệt này.

Tên kế: :

Được sử dụng để đặt tên bước phê duyệt.

Sự chấp thuận của bạn sẽ không được tạo nếu có điều gì đó sai trong định dạng tham số hoặc những người phê duyệt bạn cung cấp không tuân theo quy tắc bạn đặt trong chế độ thiết kế.

Trong ví dụ này, nếu bạn đưa ra tham số bước thứ hai như

/**

* 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 !!');

}

6

Nó sẽ thất bại vì không thuộc nhóm nhân sự.

Chúng tôi cũng cung cấp 3 định dạng đặc biệt để quyết định người phê duyệt của bạn một cách linh hoạt theo cây công ty của bạn.

Bạn có thể thấy điều này để biết thêm thông tin.

$ DS: :

Người phê duyệt sẽ được đặt cho người giám sát trực tiếp của người dùng.

$ Ss: :

Người phê duyệt sẽ được đặt cho người giám sát của người dùng.

$ Dsl: :

Người phê duyệt sẽ được đặt thành người giám sát của người phê duyệt trước đó.

Định dạng tham số giống như

/**

* 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 !!');

}

7

Bạn không phải cung cấp một tên bước không trống trong khi sử dụng các định dạng đặc biệt này.

Lưu ý: Nếu người dùng ở định dạng đặc biệt không tuân theo quy tắc bạn đặt ở chế độ thiết kế, người phê duyệt này sẽ không được tạo.

Gửi thông báo ứng dụng di động

Khác với thông báo e-mail, bạn cũng có thể gửi thông báo ứng dụng di động. Nó sẽ được gửi cho người dùng nếu ứng dụng iOS hoặc ứng dụng Android đã được cài đặt trên thiết bị di động của anh ấy. E-mail đề cập đến địa chỉ e-mail của người dùng đã đăng ký trong tài khoản ragic của bạn. Ví dụ:

/**

* 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 !!');

}

8

Nếu bạn muốn người dùng được chuyển hướng đến bản ghi được chỉ định khi nhấp vào thông báo này. Bạn nên cung cấp một đường dẫn đến biểu mẫu mà bạn muốn chuyển hướng đến (ví dụ: /forms /1) và ID bản ghi. Cuộc gọi sẽ trông như thế này:

/**

* 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 !!');

}

9

Người phê duyệt và thông tin khác trong hồ sơ

Trước tiên bạn có thể phát hành lệnh sau cho đối tượng truy vấn bạn nhận được từ db.getapiquery để bao gồm thông tin bản ghi đầy đủ:

var recordId = approvalParam.getEntryRootNodeId();
0

Và sau đó bạn có thể nhận được thông tin phê duyệt cho một hồ sơ như thế này:

var recordId = approvalParam.getEntryRootNodeId();
1

Tình trạng phê duyệt sẽ được F được phê duyệt, RENA cho bị từ chối, P để xử lý.

Hiển thị thông báo

Bạn có thể hiển thị một tin nhắn trong một cửa sổ bật lên như thế này. Xin lưu ý rằng tin nhắn sẽ chỉ hiển thị khi trạng thái phản hồi là "cảnh báo". Theo mặc định, thông báo bên trong đối tượng phản hồi sẽ không được hiển thị vì nó thường không hữu ích cho người dùng cuối.

var recordId = approvalParam.getEntryRootNodeId();
2

Phân trang

Trong phần này, chúng tôi sẽ có một ví dụ để chỉ ra cách sử dụng setLimitSize và setLimitFrom. Trong ví dụ này, chúng tôi có 20 mục hoàn toàn và muốn lấy 6 cho mỗi lần đếm và hiển thị tin nhắn.

var recordId = approvalParam.getEntryRootNodeId();
3

Mục

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

Kết quả

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

Gửi yêu cầu HTTP

Bạn có thể gửi yêu cầu HTTP GET/POST/DELETE/PUT vào URL và nhận kết quả trả về:

var recordId = approvalParam.getEntryRootNodeId();
4

Việc sử dụng biến được xác định trước.util is predefined.

Ngoài ra, bạn có thể gọi Util.Setheader (tên chuỗi, giá trị chuỗi) để đặt các tiêu đề HTTP. Util.RemoveHeader (tên chuỗi) để xóa các tiêu đề.

Tài liệu tham khảo API

Các biến toàn cầu của hệ thống được xác định trước được liệt kê ở đây có thể được truy cập trực tiếp mà không cần xác định chúng.

db.getAPIQuery

Phương phápSự mô tả
getapiresult ()Nhận mục đầu tiên khi lặp lại truy vấn
getapiresultlist ()Nhận một loạt các mục của truy vấn
getapientry (int rootNodeId)Nhận mục nhập bằng ID nút
getKeyFieldId ()Truy xuất ID trường chính của bảng truy vấn này được bật.
GetFieldIdByName (String FieldName)Nhận ID trường của một tên được chỉ định. Nếu có nhiều hơn một trường cùng tên, ID trường độc lập đầu tiên sẽ được trả về.
chèn intapientry ()Chèn một mục mới vào truy vấn, phương thức trả về mục nhập mới
addFilter (int fieldID, chuỗi chuỗi, giá trị chuỗi)Lọc các mục theo điều kiện được chỉ định
setifignorefixedfilter (boolean ifignorefixedfilter)Đặt nếu bỏ qua bộ lọc cố định từ bảng đích
setOrder (int orderfield, int orderDir)Sắp xếp các mục của truy vấn theo ID trường trường được chỉ định và hướng đặt hàng, tham số orderDir được đặt thành 1 nếu sắp xếp tăng dần và đặt thành 2 nếu sắp xếp giảm dần.orderDir is set to 1 if sort ascending, and set to 2 if sort descending.
DeleteEntry (int nodeID)Xóa mục nhập bằng ID nút
setLimitSize (int limitsize)Theo mặc định scriptapiquery trả về 1000 bản ghi cho mỗi truy vấn, bạn có thể sử dụng SetLimitSize để thay đổi số lượng bản ghi được trả về cho mỗi truy vấn. Tuy nhiên, chúng tôi không khuyên bạn nên trả lại quá nhiều hồ sơ cho mỗi truy vấn vì nó có thể mất quá nhiều bộ nhớ và có ý nghĩa hiệu suất xấu. Chúng tôi khuyên bạn nên sử dụng phương thức tiếp theo SetLimitFrom để làm phân trang thay thế.
setLimitFrom (int giới hạn)Phương pháp này là để phân trang tất cả các bản ghi trên một scriptapiquery. Đặt giới hạn sẽ cho Scriptapiquery bắt đầu trả về các bản ghi từ phần bù để bạn có thể trang qua tất cả các bản ghi của Scriptapiquery vì Scriptapiquery trả về 1000 bản ghi cho mỗi truy vấn theo mặc định. Bạn nên kiểm tra trang tiếp theo nếu số lượng bản ghi được trả về bằng kích thước danh sách được trả về.
SetGetUsernameAsselectUservalue (Boolean B)Khi được đặt thành sai, truy vấn sẽ truy xuất email của người dùng cho các trường người dùng chọn thay vì tên người dùng của người dùng.

Đâ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ườngREGEXLớn hơn hoặc bằng> =Ít hơn hoặc bằng nhau<= Lớn hơn>Ít hơn<Chứagiống

Xin lưu ý rằng khi bạn lọc theo ngày hoặc ngày, họ sẽ cần ở định dạng sau: yyyy/mm/dd hoặc yyyy/mm/dd hh: mm: ssyyyy/MM/dd or yyyy/MM/dd HH:mm:ss

Bạn cũng có thể sử dụng tìm kiếm văn bản đầy đủ làm bộ lọc truy vấn bằng cách gọi setfullTextSearch (chuỗi queryterm) thay vì addfilter ().full text search as a query filter by calling setFullTextSearch(String queryTerm) instead of addFilter().

Hồ sơ db.getapiquery

Phương phápSự mô tả
GetFieldValue (Int FieldID)Nhận giá trị của trường theo ID trường. Các trường phụ không bao gồm.
GetFieldIdByName (String FieldName)Nhận ID trường của một tên được chỉ định. Nếu có nhiều hơn một trường cùng tên, ID trường độc lập đầu tiên sẽ được trả về.
getKeyFieldId ()Truy xuất ID trường chính của bảng này.
GetFieldValuByName (String FieldName)Nhận giá trị của trường theo tên trường. Các trường phụ không bao gồm. Nếu có nhiều hơn một trường cùng tên, giá trị trường đầu tiên sẽ được trả về.
GetFieldValues ​​(Int FieldID)Nhận tất cả các giá trị trường từ một trường chọn nhiều làm mảng. Các trường phụ không bao gồm.
getrootnodeId ()Nhận id nút gốc của mục nhập
GetRootFieldId ()Nhận ID trường gốc của mục nhập
GetSubTablesize (int subtablerootfieldID)Nhận kích thước của Subtable, được chỉ định bởi ID trường gốc của Subtable.
GetSubTablerootNodeID (int subtablerootFieldID, int Rownumber)Nhận ID nút gốc của Subtable, được chỉ định bởi ID trường gốc và số hàng trong Subtable.
getjson ()Nhận một đại diện JSON của toàn bộ hồ sơ.
setFieldValue (int fieldID, giá trị chuỗi)Đặt giá trị thành trường được chỉ định. Đối với các trường phụ, bạn cần sử dụng SetSubTableFieldValue ();
setFieldValue (int fieldID, giá trị chuỗi, boolean appendValue)Đặt giá trị thành một trường là một trường chọn nhiều, tham số appendValue cần phải đúng. Đối với các trường phụ, bạn cần sử dụng SetSubTableFieldValue ();appendValue need to be true. For subtable fields, you need to use setSubtableFieldValue();
setfieldfile (int fieldID, filen tên, chuỗi fileContent)Chỉ để tải lên tệp hoặc trường đồ họa. Một tệp của tên tệp bạn đã cung cấp và fileContent bạn cung cấp sẽ được tạo dưới dạng tải lên tệp và lưu vào trường được chỉ định. Đối với các trường phụ, bạn cần sử dụng SetSubTableFieldFile ();
setSubTableFieldValue (int fieldID, int subtablerootNodeID, giá trị chuỗi)Đặt giá trị thành trường Subable, bạn có thể nhận tham số SubTableOtnodeID bằng phương thức GetSubTableTableOtnodeId.subtableRootNodeId by method getSubtableRootNodeId.
SetSubTableFieldValue (int fieldID, int subtablerootnodeId, giá trị chuỗi, boolean appendValue)Đặt giá trị thành trường Subtable là nhiều trường Chọn, tham số appendValue cần phải đúngappendValue need to be true
XóaXóa hàng phụ bằng ID trường gốc và số hàng của nó trong Subtable.
XóaXóa từng hàng trong Subtable được chỉ định
XóaXóa hàng phụ bằng ID trường gốc và ID nút gốc của Subtable
loadallLinkandload ()Giá trị tải của tất cả các trường được tải trong một liên kết và cấu hình tải trong mục nhập.
RecalCulateallFormulas ()Tính toán lại mọi trường có chứa công thức trong mục nhập.
RecalculationFormula (int fieldID)Tái tính công thức của trường được chỉ định.
LoadallDefaultValues ​​(Người dùng Scriptuser)Giá trị tải của mỗi trường được đặt với giá trị mặc định, người dùng tham số được xác định trước.user is predefined.
LoadDefaultValue (int fieldID, người dùng scriptuser)Tải giá trị mặc định của trường được chỉ định, người dùng tham số được xác định trước.user is predefined.
Khóa()Khóa mục nhập
Mở khóa ()Mở khóa mục nhập
tiết kiệm()Lưu một mục nhập
setCreateHistory (Boolean creatistory)Đặt nếu mục nhập cần tạo lịch sử
iscreatehistory ()Liệu mục nhập được đặt để tạo lịch sử
setifexecuteworkflow (Boolean ExecuteWorkflow)Đặt nếu thực hiện quy trình làm việc (trước khi làm việc và sau khi làm việc) của mục nhập là cần thiết
setignoreemptyCheck (boolean onvoreemptyCheck)Đặt nếu kiểm tra không phải trường trống sẽ bị bỏ qua
SetRecalParentFormula (Boolean RecalarentFormula)Nếu bảng này được tạo bằng cách phụ thuộc của trang tính khác hoặc được tham chiếu bởi tờ khác, có nghĩa là, tờ này có bảng cha, thì bạn có thể gọi phương thức này để đặt nếu bạn muốn tính toán lại bảng gốc hay không.
setifdolnls (Boolean)Đồng bộ hóa các giá trị được tải sẽ được kích hoạt trên bảng khác nếu bảng đó liên kết đến bảng này, bảng nguồn. Bạn phải luôn luôn thêm phương thức này vào bảng nguồn để kích hoạt đồng bộ hóa trên trang khác.

phản ứng

Phương phápSự mô tả
getstatus ()Nhận được trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setStatus (trạng thái chuỗi)Đặt trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setMessage (chuỗi plainmessage)Đặt một thông báo để hiển thị khi tập lệnh được thực thi. Hàm này có thể được gọi là nhiều lần và tất cả các tin nhắn đã được đặt sẽ hiển thị cùng một lúc.
numofmessages ()Trả về số lượng tin nhắn đã được đặt.
setopenurl (url chuỗi)Chỉ có phạm vi trang tính. Chuyển hướng người dùng đến URL được chỉ định sau khi lưu chỉnh sửa.
setopenurlinnewtab (Boolean B)Định cấu hình xem trình duyệt có mở một tab mới khi mở URL hay không. Mặc định là đúng.

người sử dụng

Phương phápSự mô tả
getstatus ()Nhận được trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setStatus (trạng thái chuỗi)Đặt trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setMessage (chuỗi plainmessage)Đặt một thông báo để hiển thị khi tập lệnh được thực thi. Hàm này có thể được gọi là nhiều lần và tất cả các tin nhắn đã được đặt sẽ hiển thị cùng một lúc.

numofmessages ()

Phương phápSự mô tả
getstatus ()Nhận được trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setStatus (trạng thái chuỗi)Đặt trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setMessage (chuỗi plainmessage)Đặt một thông báo để hiển thị khi tập lệnh được thực thi. Hàm này có thể được gọi là nhiều lần và tất cả các tin nhắn đã được đặt sẽ hiển thị cùng một lúc.
numofmessages ()Trả về số lượng tin nhắn đã được đặt.
setopenurl (url chuỗi)Chỉ có phạm vi trang tính. Chuyển hướng người dùng đến URL được chỉ định sau khi lưu chỉnh sửa.
setopenurlinnewtab (Boolean B)Định cấu hình xem trình duyệt có mở một tab mới khi mở URL hay không. Mặc định là đúng.
người sử dụnggetemail ()

Nhận địa chỉ email của người dùng

Phương phápSự mô tả
getstatus ()Nhận được trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setStatus (trạng thái chuỗi)Đặt trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setMessage (chuỗi plainmessage)Đặt một thông báo để hiển thị khi tập lệnh được thực thi. Hàm này có thể được gọi là nhiều lần và tất cả các tin nhắn đã được đặt sẽ hiển thị cùng một lúc.
numofmessages ()Trả về số lượng tin nhắn đã được đặt.
setopenurl (url chuỗi)Chỉ có phạm vi trang tính. Chuyển hướng người dùng đến URL được chỉ định sau khi lưu chỉnh sửa.
setopenurlinnewtab (Boolean B)Định cấu hình xem trình duyệt có mở một tab mới khi mở URL hay không. Mặc định là đúng.
người sử dụnggetemail ()

Nhận địa chỉ email của người dùng

Phương phápSự mô tả
getstatus ()Nhận được trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setStatus (trạng thái chuỗi)Đặt trạng thái của phản hồi. Thành công, cảnh báo, xác nhận, không hợp lệ, lỗi
setMessage (chuỗi plainmessage)Đặt một thông báo để hiển thị khi tập lệnh được thực thi. Hàm này có thể được gọi là nhiều lần và tất cả các tin nhắn đã được đặt sẽ hiển thị cùng một lúc.
numofmessages ()Trả về số lượng tin nhắn đã được đặt.
setopenurl (url chuỗi)Nhận phần bù múi giờ của tài khoản này trong giờ.

param

Đây là đối tượng yêu cầu người dùng được gửi bởi người dùng trước khi yêu cầu được lưu vào cơ sở dữ liệu. Đặc biệt hữu ích khi viết các tập lệnh trước khi làm việc

Phương phápSự mô tả
getUpdatedEntry ()Chỉ sau khi làm việc. Trả về hồ sơ vừa được tạo hoặc cập nhật.
getNewNodeId (int fieldID)Trả về ID nút (int) của trường đã cho sau khi giá trị mới được viết.
getoldNodeId (int fieldID)Trả về ID nút (int) của trường đã cho trước khi giá trị mới được viết.
getNewValue (int fieldID)Trả về giá trị của trường đã cho sau khi giá trị mới được viết.
getoldValue (int fieldID)Trả về giá trị của trường đã cho trước khi giá trị mới được viết.
getNewValues ​​(int fieldID)Tương tự như getNewValue, nhưng có thể truy cập nhiều giá trị cùng một lúc, điều này rất hữu ích khi xử lý các trường lựa chọn đa hướng.
getoldValues ​​(int fieldID)Tương tự như GetoldValue, nhưng có thể truy cập nhiều giá trị cùng một lúc, điều này rất hữu ích khi xử lý các trường lựa chọn đa hướng.
getBtableEntry (int fieldID)Trả về một danh sách các params có thể thao tác từng bản ghi trong tiểu mục.

phê duyệt

Chỉ sau khi làm việc.

WFSigner là một mảng với các đối tượng định dạng JSON cụ thể trong đó.

{

'Stepindex': Bước nào trong phê duyệt - Bắt đầu từ 0,

'Người phê duyệt': Email của người phê duyệt

'Tên StepName': Tên hoặc Tiêu đề của người phê duyệt

}

Ví dụ cho "người phê duyệt đơn trong một bước":

WFSigner Push ({

'Stepindex': '1',

'người phê duyệt': '',

'Tên kế': 'Jo'

})

Lưu ý rằng WFSigner nên đáp ứng sự chấp thuận bạn đặt ở chế độ thiết kế.

Giả sử, nếu chỉ có một ứng cử viên "" ở Bước 2 trong chế độ thiết kế, bạn nên cho JSON với người phê duyệt: và Stepindex: 1.

Phương phápSự mô tả
getUpdatedEntry ()
Chỉ sau khi làm việc. Trả về hồ sơ vừa được tạo hoặc cập nhật.getNewNodeId (int fieldID)

Trả về ID nút (int) của trường đã cho sau khi giá trị mới được viết.

Phương phápSự mô tả
getoldNodeId (int fieldID)Trả về ID nút (int) của trường đã cho trước khi giá trị mới được viết.
getNewValue (int fieldID)Trả về giá trị của trường đã cho sau khi giá trị mới được viết.