12 Automation And Workflows.docx

  • Uploaded by: le linh
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 12 Automation And Workflows.docx as PDF for free.

More details

  • Words: 8,402
  • Pages: 56
Tự động hóa và quy trình công việc Trong chương này, chúng tôi sẽ giới thiệu các chủ đề sau:

1

MỤC LỤC Tự động hóa và quy trình công việc ..........................................................................1 Giới thiệu....................................................................................................................4 1. Sử dụng các giai đoạn và tính năng của Kanban .................................................5 Sẵn sàng .................................................................................................................5 Làm thế nào để làm nó... ........................................................................................5 Làm thế nào nó hoạt động... ...................................................................................7 Còn nữa... ...............................................................................................................9 2. Tạo hành động máy chủ.....................................................................................10 Sẵn sàng ...............................................................................................................11 Làm thế nào để làm nó... ......................................................................................12 Làm thế nào nó hoạt động... .................................................................................15 Còn nữa... .............................................................................................................17 3. Thêm tính năng nhắn tin và theo dõi .................................................................18 Sẵn sàng ...............................................................................................................20 Làm thế nào để làm nó... ......................................................................................21 Làm thế nào nó hoạt động... .................................................................................23 Còn nữa... .............................................................................................................26 4. Sử dụng các hành động máy chủ mã Python .....................................................28 Sẵn sàng ...............................................................................................................29 Làm thế nào để làm nó... ......................................................................................30 Làm thế nào nó hoạt động... .................................................................................32 Còn nữa... .............................................................................................................33 5. Sử dụng các hành động tự động về điều kiện thời gian ....................................34 Sẵn sàng ...............................................................................................................34 Làm thế nào để làm nó... ......................................................................................35 2

Làm thế nào nó hoạt động... .................................................................................40 Còn nữa... .............................................................................................................42 6. Sử dụng hành động tự động trên điều kiện sự kiện ...........................................43 Sẵn sàng ...............................................................................................................43 Làm thế nào để làm nó... ......................................................................................44 Làm thế nào nó hoạt động... .................................................................................48 Còn nữa... .............................................................................................................49 7. Kiểm tra luồng công việc tích hợp ....................................................................50 Sẵn sàng ...............................................................................................................51 Làm thế nào để làm nó... ......................................................................................52 Làm thế nào nó hoạt động... .................................................................................55 Xem thêm .............................................................................................................56

3

Giới thiệu Các ứng dụng kinh doanh được dự kiến sẽ không chỉ lưu trữ hồ sơ, mà còn để quản lý quy trình công việc kinh doanh. Odoo bao gồm một công cụ dòng công việc, nhưng nó ngày càng được sử dụng ít hơn trong các phiên bản sau của sản phẩm. Thay vào đó, các quy tắc tự động hóa và các bảng Kanban được sử dụng bất cứ khi nào có thể. Các quy tắc tự động hóa có liên quan nhất để tùy chỉnh hơn là phát triển các mô-đun addon mới, nhưng các nhà phát triển vẫn nên quen thuộc với chúng. Làm như vậy có thể tránh các quy tắc kinh doanh được thiết kế quá mức có thể được triển khai thông qua các tùy chỉnh chức năng. Một số kỹ thuật này cũng có thể được sử dụng bởi người sử dụng điện hoặc các chuyên gia tư vấn chức năng để thêm một số tự động hóa quy trình đơn giản hơn mà không cần phải tạo các addons tùy chỉnh.

4

1. Sử dụng các giai đoạn và tính năng của Kanban Bảng Kanban là một phương pháp đơn giản để quản lý luồng công việc. Nó được tổ chức theo các cột, mỗi cột tương ứng với các giai đoạn và tiến trình các mục công việc từ trái sang phải cho đến khi chúng được hoàn thành. Có một vài tính năng được sử dụng trên nhiều bảng Kanban, cung cấp một mẫu chung cũng có thể được sử dụng trong các mô-đun tùy chỉnh của riêng chúng ta. Hãy truy cập các tính năng đó.

Sẵn sàng Để làm theo công thức này, bạn sẽ cần phải có ứng dụng Quản lý dự án đã được cài đặt

Làm thế nào để làm nó... 5

Để bắt đầu với một nhiệm vụ dự án Ban Kanban: 1. Chọn tùy chọn trình đơn Dự án trên cùng và sau đó Tạo một Dự án mới. 2. Đặt tên cho Project mới và nhấn nút Save. Tiếp theo, nhấn vào nút Thông minh tác vụ ở trên cùng bên phải của biểu mẫu. Điều này sẽ mở ra khung nhìn Kanban cho các nhiệm vụ dự án. 3. Nhấp vào thanh dọc Thêm cột mới ở bên phải, nhập Now trong hộp thoại nhỏ và nhấp vào Thêm. Lặp lại để thêm các giai đoạn Sau và Xong. 4. Di con trỏ chuột qua giai đoạn Xong và biểu tượng bánh xe răng cưa sẽ được hiển thị. Click vào nó và chọn Edit từ menu tùy chọn. 5. Trong cửa sổ Edit Columns, đánh dấu vào hộp Folded in Tasks Pipeline và lưu lại, như thể hiện trong hình bên dưới:

6

Làm thế nào nó hoạt động... Kanban là một trong các loại chế độ xem có sẵn và có thể sắp xếp các mục được nhóm theo cột. Nếu chúng ta sử dụng các giai đoạn để nhóm các mục công việc, chúng ta sẽ có một bảng Kanban. Danh sách giai đoạn có thể được cấu hình để phù hợp với nhu cầu cụ thể của người dùng. Các giai đoạn nên có một thuộc tính gấp lại, có nghĩa là cột tương ứng trong khung nhìn Kanban sẽ được hiển thị gấp lại. Các mục công việc đang được tiến

7

hành dự kiến sẽ ở giai đoạn chưa mở, và các mục bị chấm dứt, thường là Xong và Hủy, phải ở trong các giai đoạn Gấp lại. Mỗi mục công việc có một tham chiếu cho giai đoạn nó đang ở. Nó cũng có thể có một Bang Kanban, được biểu diễn bằng một đèn tín hiệu giao thông giống như, và một Ưu tiên, được đại diện bởi một ngôi sao. Các thẻ Kanban cũng có thể có một thuộc tính màu, được sử dụng cho màu nền của chúng. Trong khi giai đoạn đại diện cho trạng thái hiện tại trong quá trình cho mục công việc, Kanban State cung cấp thông tin về sự sẵn sàng của nó để tiến tới giai đoạn tiếp theo. Nó là một trường lựa chọn, thường được đặt tên là kanban_state, trong biểu mẫu và khung nhìn Kanban được sử dụng với tiện ích kanban_ state_selection và dự kiến ba tùy chọn có thể có:  Giá trị trung lập màu xám, giá trị mặc định (giá trị cơ sở dữ liệu bình thường)  Giá trị "Bị chặn" màu đỏ (giá trị cơ sở dữ liệu bị chặn), có nghĩa là có một số lý do để giữ lại mục công việc trong giai đoạn hiện tại  Giá trị "Sẵn sàng cho giai đoạn tiếp theo" màu xanh lá cây (giá trị cơ sở dữ liệu đã hoàn thành), có nghĩa là mục công việc đã sẵn sàng để được kéo cho giai đoạn tiếp theo Ưu tiên cũng là trường Chọn và được hiển thị với tiện ích ưu tiên đặc biệt trong biểu mẫu và chế độ xem Kanban. Các tùy chọn lựa chọn được mong đợi là một chuỗi có số, bắt đầu từ 0, cho giá trị bình thường (không được gắn dấu sao) và các giá trị khác cho các tùy chọn được gắn dấu sao.

8

Còn nữa... Các giai đoạn được thêm vào các mô hình thông qua một trường Many2one tham chiếu đến một mô hình sân khấu xác định các giai đoạn có thể. Trên các khung nhìn biểu mẫu, chúng có thể được biểu diễn với sự trợ giúp của widget đường dẫn statusbar. Để biết thêm chi tiết về các khung nhìn, các widget và thiết kế các khung nhìn Kanban, bạn có thể tham khảo Chương 8, Các khung nhìn backend. Trạng thái Kanban bổ sung được hỗ trợ bởi trường Chọn và định nghĩa điển hình của nó là: kanban_state = fields.Selection ( 9

[('bình thường', 'Bình thường'), ('bị chặn', 'Bị chặn'), ('đã hoàn tất', 'Sẵn sàng cho giai đoạn tiếp theo ')], 'Kanban State', mặc định = 'bình thường') Trên các dạng xem kanban_state_selection cụ thể:

biểu

mẫu,



nên

sử

dụng

tiện

ích

Về trường Ưu tiên, trường này cũng là trường Lựa chọn và số lượng tùy chọn thường nằm trong khoảng từ 2 đến 4 mục lựa chọn: priority = fields.selection ( [('0', 'Bình thường'), ('1', 'Thấp'), ('2', 'Cao'), ('3', 'Rất Cao')], 'Mức độ ưu tiên', mặc định = '0') Trong dạng xem, nó có thể sử dụng tiện ích ưu tiên cụ thể:

2. Tạo hành động máy chủ Hành động của máy chủ nhấn mạnh các công cụ tự động hóa của Odoo. Chúng cho phép chúng tôi mô tả các hành động để thực hiện. Những hành động 10

này sau đó có sẵn để được gọi bởi trình kích hoạt sự kiện hoặc được kích hoạt tự động khi các điều kiện thời gian nhất định được đáp ứng. Trường hợp đơn giản nhất là để cho người dùng cuối thực hiện một số hành động trên một tài liệu bằng cách chọn nó từ menu nút Thêm. Chúng tôi sẽ tạo một hành động như vậy cho các tác vụ dự án, để Đặt làm Mức độ ưu tiên bằng cách gắn dấu sao cho tác vụ hiện được chọn và đặt thời hạn cho tác vụ đó đến ba ngày kể từ bây giờ.

Sẵn sàng Chúng ta sẽ cần một cá thể Odoo với ứng dụng Project được cài đặt. Chúng tôi cũng sẽ cần Chế độ nhà phát triển được kích hoạt. Nếu không, hãy kích hoạt nó trong hộp thoại Odoo About.

11

Làm thế nào để làm nó... Để tạo một hành động máy chủ và sử dụng nó từ menu Khác, hãy làm theo các bước sau: 1. Trên menu Cài đặt trên cùng, chọn Kỹ thuật | Hành động | Mục menu Hành động máy chủ và nhấp vào nút Tạo ở đầu danh sách bản ghi.

12

2. Điền vào mẫu hành động máy chủ với các giá trị sau:  Tên hành động: Đặt làm mức độ ưu tiên  Mô hình cơ sở: Tác vụ  Hành động cần làm: Viết trên bản ghi  Cập nhật chính sách: Cập nhật bản ghi hiện tại 3. Trong hành động máy chủ, trong trường Giá trị ánh xạ, thêm các dòng sau:  Là giá trị đầu tiên, chúng tôi sẽ nhập các thông số sau:  Trường: Hạn chót  Loại đánh giá: Biểu thức Python  Giá trị: datetime.date.today () + datetime.timedelta (ngày = 3)  Là giá trị thứ hai, chúng tôi sẽ nhập các thông số sau: 13

 Trường: Ưu tiên  Loại đánh giá: Giá trị  Giá trị: 1 Ảnh chụp màn hình sau đây cho thấy các giá trị đã nhập:

4. Lưu hành động máy chủ và nhấp vào nút Thêm trong nút 'Thêm' ở trên cùng bên phải, để làm cho nút đó khả dụng trong nút Thêm của tác vụ Dự án. 5. Để dùng thử, hãy vào menu Dự án trên cùng, chọn Tìm kiếm | Task menu item, và mở một nhiệm vụ ngẫu nhiên. Bằng cách nhấp vào nút Thêm, chúng ta sẽ

14

thấy tùy chọn Đặt làm mức độ ưu tiên. Chọn nó sẽ đánh dấu nhiệm vụ và thay đổi ngày hết hạn đến ba ngày kể từ bây giờ.

Làm thế nào nó hoạt động... Các hành động của máy chủ hoạt động trên một Mô hình, vì vậy một trong những việc đầu tiên cần làm là chọn Mô hình cơ sở mà chúng ta muốn làm việc. Trong ví dụ của chúng tôi, chúng tôi đã sử dụng Nhiệm vụ dự án. Tiếp theo, chúng ta nên chọn loại hành động để thực hiện. Có một số tùy chọn có sẵn: 15

 Gửi Email cho phép chọn một mẫu e-mail và sẽ sử dụng nó để gửi e-mail khi hành động được kích hoạt.  Kích hoạt một tín hiệu luồng công việc thực hiện điều đó. Trong quy trình làm việc của Odoo, tín hiệu có thể được kích hoạt và được sử dụng để kích hoạt quá trình chuyển đổi luồng công việc.  Khởi động một hành động khách hàng kích hoạt một hành động của khách hàng hoặc cửa sổ, giống như khi một mục trình đơn được nhấp vào.  Tạo hoặc Sao chép Bản ghi mới cho phép bạn tạo bản ghi mới, trên hiện tại hoặc trên một Mô hình khác.  Ghi trên Bản ghi cho phép bạn đặt các giá trị hiện tại hoặc trên một bản ghi khác.  Thực thi mã Python cho phép bạn viết mã tùy ý để thực thi, khi không có tùy chọn nào khác đủ linh hoạt cho những gì chúng ta cần. Trong ví dụ của chúng ta, chúng ta đã sử dụng Write on a Record để thiết lập một số giá trị trên bản ghi hiện tại. Chúng tôi đặt Mức độ ưu tiên thành 1, để gắn dấu sao tác vụ và đặt giá trị trên trường Thời hạn. Điều này thú vị hơn, vì giá trị sử dụng được đánh giá từ một biểu thức Python. Ví dụ của chúng tôi sử dụng mô-đun Python datetime (xem https://docs.python.org/2/library/ datetime.html) để tính toán ngày ba ngày kể từ hôm nay. Có thể sử dụng biểu thức Python tùy ý ở đó, cũng như trong một số loại hành động khác có sẵn. Vì lý do bảo mật, mã được kiểm tra bởi hàm safe_eval, được triển khai trong odoo / openerp / tools / safe_eval.py. Điều này có nghĩa rằng một số hoạt động Python có thể không được phép, nhưng điều này hiếm khi chứng minh là một vấn đề.

16

Còn nữa... Mã Python được đánh giá trong một ngữ cảnh bị hạn chế, nơi các đối tượng sau đây có sẵn để sử dụng:  env: Đây là một tham chiếu cho đối tượng Environment, giống như self.env trong một phương thức class.  model: Đây là tham chiếu đến lớp mô hình mà hành động của máy chủ hoạt động. Trong ví dụ của chúng ta, nó tương đương với self.env ['project.task].  quy trình làm việc: Đây là một tham chiếu đến đối tượng máy chủ công cụ động cơ Odoo.  Cảnh báo: Đây là tham chiếu đến openerp.exceptions.Warning, cho phép xác thực chặn các hành động không mong muốn. Nó có thể được sử dụng như: nâng cao Warning ('Message!').

17

 object hoặc obj: Nó cung cấp các tham chiếu đến bản ghi hiện tại, cho phép bạn truy cập các giá trị và phương thức của trường.  log: Đây là một chức năng để ghi lại các thông điệp trong mô hình ir.logging, cho phép ghi lại các thao tác trên cơ sở dữ liệu.  datetime, dateutil và thời gian: Các truy cập này cung cấp quyền truy cập vào các thư viện Python.

3. Thêm tính năng nhắn tin và theo dõi Các tính năng xã hội của Odoo được sử dụng trong nhiều ứng dụng tiêu chuẩn. Chúng cung cấp một cách dễ dàng để người dùng được cập nhật và cộng tác xung quanh các tài liệu kinh doanh. Do đó, điều quan trọng đối với các mô-đun addon tùy chỉnh cũng hỗ trợ chúng. Các tính năng này được cung cấp bởi ứng dụng Thảo luận (tên kỹ thuật thư) và khía cạnh dễ thấy nhất của chúng là tường thông báo ở cuối biểu mẫu cho tài liệu doanh nghiệp, cùng với hộp người theo dõi ở bên tay phải của nó.

18

19

Sẵn sàng Chúng ta sẽ sử dụng my_module được giới thiệu trong Chương 3, Tạo các Mô-đun Odoo, định nghĩa mô hình Thư viện Sách. Bạn có thể lấy mã đó hoặc nhanh chóng tạo ra một addon xung quanh mô hình này: # - * - mã hóa: utf-8 - * từ các mô hình nhập khẩu mở, các trường class LibraryBook (models.Model): _name = 'library.book' name = fields.Char ('Tiêu đề', bắt buộc = Đúng) date_release = fields.Date ('Ngày phát hành') author_ids = fields.Many2many ('res.partner', string = 'Tác giả') Chúng ta cũng sẽ cần một tệp XML với dạng xem biểu mẫu tương ứng:


20

Làm thế nào để làm nó... Để bật mạng xã hội và các tính năng theo dõi trên mô hình Thư viện sách, hãy làm theo các bước sau: 1. Thêm phụ thuộc thư vào tệp kê khai __openerp__.py của mô-đun addon: 'phụ thuộc': ['thư'], 21

2. Chỉnh sửa mô hình thư viện.book để thêm mã được đánh dấu tiếp theo: class LibraryBook (models.Model): _name = 'library.book' _description = 'Thư viện sách' _inherit = ['mail.thread'] name = fields.Char ('Tiêu đề', bắt buộc = Đúng, track_visibility = True) date_release = fields.Date ('Ngày phát hành', track_visibility = True) author_ids = fields.Many2many ('res.partner', string = 'Tác giả') 3. Thêm vào thư viện.book mô hình phương pháp sau đây: def _track_subtype (self, init_values): nếu 'date_release' trong init_values: trả lại 'mail.mt_comment' return false 4. Thêm tiện ích tường thư vào dạng xem biểu mẫu, ngay trước thẻ đóng :
Sau khi cài đặt những thay đổi này, chúng ta sẽ thấy tường thông báo ở dưới cùng của biểu mẫu Thư viện và những thay đổi đối với các trường Tiêu đề và Ngày phát hành sẽ được ghi lại trên đó.

22

Làm thế nào nó hoạt động... Addon thảo luận (tên kỹ thuật mail) cung cấp mô hình mail.thread để sử dụng trên các mô hình kinh doanh khác như một lớp mixin. Các bước đầu tiên của chúng tôi là thêm phụ thuộc vào mô đun và để có mô-đun library.book để kế thừa các tính năng từ mô-đun đó. Trong số những thứ khác, các trường message_follower_ids và message_ids được thêm vào để lưu trữ danh sách người theo dõi và các thư có liên quan. Chúng sẽ được thêm vào dạng xem biểu mẫu, sử dụng các tiện ích đặc biệt mail_followers và mail_thread.

23

Chúng tôi cũng đã thêm thuộc tính _description tùy chọn vào lớp của mô hình. Nó được sử dụng bởi một số thông điệp theo dõi, chẳng hạn như Library Book được tạo ra, và sẽ hiển thị các thông điệp không thích hợp như Email Thread nếu không được định nghĩa rõ ràng. Sau khi cài đặt addon, tên hiển thị sẽ được sử dụng cũng có thể được đặt tại Cài đặt | Kỹ thuật | Cơ sở dữ liệu | Mô hình, trong trường Mô hình mô hình. Mô hình mail.thread có thể theo dõi các thay đổi được thực hiện đối với tài liệu, đăng chúng dưới dạng tin nhắn trên tường tin nhắn. Đối với điều này, chúng ta chỉ cần thêm track_visibility = True (hoặc bất kỳ giá trị thực) nào trên các trường cần theo dõi. Theo mặc định, chúng được đăng dưới dạng ghi chú nội bộ, có nghĩa là không có thư điện tử nào được kích hoạt. Không giống như phiên bản 8.0, trong phiên bản 9.0, các giá trị thay đổi được lưu trữ trong cơ sở dữ liệu, trong mô hình mail.tracking.value. Điều này có thể truy cập được trong ứng dụng web tại Cài đặt | Kỹ thuật | Email | Giá trị theo dõi. Điều này có thể hữu ích cho việc báo cáo hoặc kiểm tra.

24

Các loại tin nhắn được gọi là Subtypes. Mô-đun thư đi kèm với hai loại phụ: tin nhắn thảo luận và ghi chú nội bộ. Việc đầu tiên có thể kích hoạt thông báo email và hiển thị cho tất cả những người theo dõi. Thứ hai không kích hoạt các thông báo và chỉ có thể được nhìn thấy bởi người dùng trong nhóm bảo mật của nhân viên. Chúng tôi có thể đặt loại phụ khi đăng thông báo bằng cách sử dụng ID XML của chúng. Đối với cả hai, các ID XML tương ứng là mail.mt_comment và mail.mt_note. Có thể thay đổi loại phụ cho các thông báo theo dõi bằng phương thức _track_subtype (). Nó nhận được một từ điển với các tên trường được theo dõi với các thay đổi và giá trị của chúng trước khi các thay đổi được thực hiện. Nó dự kiến sẽ trả về một chuỗi với ID XML của loại phụ để sử dụng. Các kiểu con được cung cấp bởi addon mail không cần hậu tố mô-đun, vì vậy chúng ta có thể sử dụng mt_comment cho các thông điệp thảo luận. Nếu không có subtype cụ thể nào được trả về, các tin nhắn sẽ sử dụng subtype mt_note mặc định. Người theo dõi có thể đăng ký các loại phụ khác nhau để họ có thể chọn thời điểm được thông báo. Ví dụ, Addon dự án bổ sung các kiểu con như Task change stage hoặc Task bị chặn. Với _track_subtype (), chúng tôi có thể phát hiện các sự kiện như vậy và báo cáo chúng qua các thư có loại phụ thích hợp. Bên trong phương thức đó, tự tạo sẵn các bản ghi có liên quan đến hoạt động ghi, để các kiểu con tin nhắn riêng biệt có thể được chọn dựa trên các giá trị bản ghi tùy ý.

25

Còn nữa... 26

Gửi tin nhắn có thể được thực hiện bằng cách sử dụng phương pháp sau: obj.message_post (body = "Nội dung văn bản", chủ đề = "Chủ đề", loại phụ = "mt_note") Chủ đề và loại phụ là tùy chọn. Người theo dõi có thể là đối tác hoặc kênh tin nhắn. Để thêm người theo dõi, hãy sử dụng các mục sau: obj.message_subscribe (partner_ids = ..., channel_ids = ..., subtype_ids = []) Đối số subtype_ids là tùy chọn và cho phép bạn đăng ký các loại phụ cụ thể. Nếu không được cung cấp, các giá trị mặc định được xác định trong các kiểu con sẽ được sử dụng. Đôi khi, chúng tôi muốn thêm người dùng làm người theo dõi. Một người dùng cũng là một đối tác, do đó user.partner_ id nên được sử dụng cho việc này. Tuy nhiên, phương pháp cụ thể sau cũng được cung cấp cho điều này: obj.message_subscribe_users (user_ids, subtype_ids = []) Nó là hợp lý để mong đợi để có thể gửi tin nhắn hoặc làm theo tài liệu ngay cả khi người dùng kết nối không có quyền ghi vào chúng. Logic bảo mật đặc biệt được thực hiện để cho phép điều này, và các hoạt động cụ thể này được thực hiện với người dùng Quản trị viên, thông qua phương thức sudo () ORM. Các kiểu con tin nhắn có thể được quản lý trong menu Top settings, bằng cách điều hướng đến Technical | Email | Mục menu phụ. Ở đó chúng ta có thể kiểm tra các kiểu con hiện có và tùy chỉnh chúng. Mô tả là văn bản được hiển thị trong tin nhắn và trường Mặc định cho biết liệu loại phụ được đăng ký theo mặc định cho người theo dõi mới hay không. Subtypes hỗ trợ một cơ chế thừa kế. Nó được, ví dụ, được sử dụng bởi các dự án để cho phép những người theo dõi tự động đăng ký các sự kiện về các nhiệm 27

vụ và các vấn đề, chẳng hạn như Task Opened. Việc này được thực hiện bằng cách sử dụng các trường trong khu vực Đăng ký tự động của loại phụ:  Cha mẹ là loại phụ có liên quan được đăng ký tự động. Cho dự án. project Task Mở ra, đây sẽ là nhiệm vụ project.task được mở.  Relation Field là trường trong mô hình liên quan để sử dụng. Đối với một subtype project.task, đây là project_id, cho Project để kế thừa đăng ký từ. Odoo cũng hỗ trợ chỉ báo Cần hành động, được hiển thị trên mục menu, để báo hiệu hành động đó là bắt buộc đối với một số mục. Ví dụ, nó được sử dụng bởi addon mail để hiển thị số lượng tin nhắn chưa đọc. Để sử dụng nó, mô hình của chúng ta cũng nên kế thừa ir.needaction_mixin và phương thức _needaction_ domain_get () sẽ được mở rộng. Nó là một phương thức tĩnh @ api.model, có nghĩa là nó không hoạt động trên một recordset. Nó dự kiến sẽ trả về một biểu thức miền được sử dụng để xác định các mục cần hành động. Ví dụ, để báo hiệu rằng các mục có trạng thái chặn Kanban cần hành động, chúng ta sẽ sử dụng như sau: def _needaction_domain_get (tự): return [('kanban_state', '=', 'bị chặn')]

4. Sử dụng các hành động máy chủ mã Python 28

Các hành động của máy chủ có nhiều kiểu có sẵn, nhưng việc thực thi mã Python tùy ý chắc chắn là một mã linh hoạt nhất. Được sử dụng một cách khôn ngoan, nó có thể cung cấp cho người dùng quyền lực khả năng triển khai các quy tắc nghiệp vụ nâng cao từ giao diện người dùng mà không cần tạo các mô-đun bổ trợ cụ thể để cài đặt mã đó. Chúng tôi sẽ chứng minh bằng cách sử dụng loại hành động máy chủ này bằng cách thực hiện một hành động gửi thông báo nhắc nhở đến những người theo dõi nhiệm vụ Dự án.

Sẵn sàng Chúng ta sẽ cần một cá thể Odoo với ứng dụng Project được cài đặt.

29

Làm thế nào để làm nó... Để tạo và thử một hành động máy chủ mã Python, hãy làm theo các bước sau:

30

1. Tạo một hành động máy chủ mới: Trên menu Cài đặt trên cùng, chọn Kỹ thuật | Hành động | Mục menu Hành động máy chủ và nhấp vào nút Tạo ở đầu danh sách bản ghi. 2. Điền vào biểu mẫu Hành động Máy chủ với các giá trị sau:  Tên hành động: Gửi lời nhắc  Mô hình cơ sở: Tác vụ  Hành động cần làm: Thực thi mã Python 3. Trong vùng văn bản mã Python, xóa văn bản mặc định và thay thế nó bằng các thông tin sau: nếu không obj.date_deadline: tăng Cảnh báo ('Tác vụ không có thời hạn!') deadline_dt = datetime.datetime.strptime ( obj.date_deadline, '% Y-% m-% d') delta = deadline_dt.date () - datetime.date.today () days = delta.days nếu ngày == 0: msg = 'Nhiệm vụ đến hạn hôm nay.' elif ngày <0: msg = 'Nhiệm vụ là% d ngày (s) muộn.' % abs (ngày) khác: msg = 'Nhiệm vụ sẽ đến hạn trong% d ngày (s).' % ngày obj.message_post (msg, subject = 'Reminder', subtype = 'mt_comment') 4. Lưu Hành động Máy chủ và nhấp vào Thêm trong nút 'Thêm', ở trên cùng bên phải, để làm cho nó có sẵn trong nút Thêm nhiệm vụ của dự án. 5. Bây giờ bấm vào menu trên cùng của Dự án và chọn Tìm kiếm | Mục menu tác vụ. Chọn một nhiệm vụ ngẫu nhiên, đặt ngày hạn chót vào nó, và sau đó thử tùy chọn Gửi lời nhắc trong nút Thêm. 31

Làm thế nào nó hoạt động... Công thức tạo hành động máy chủ cung cấp giải thích chi tiết về cách tạo hành động máy chủ nói chung. Với kiểu hành động cụ thể này, chúng ta cần chọn tùy chọn Execute Python Code và sau đó viết mã để chạy vùng văn bản. Mã có thể có nhiều dòng, như trường hợp trong công thức của chúng ta, và nó chạy trong một ngữ cảnh có các tham chiếu có sẵn cho các đối tượng như đối tượng bản ghi hiện tại hoặc người dùng phiên. Các tham chiếu có sẵn được mô tả trong công thức Tạo hành động máy chủ. Mã được sử dụng tính số ngày từ ngày hiện tại cho đến ngày hết hạn và sử dụng để chuẩn bị một thông báo thích hợp. Dòng cuối cùng thực sự gửi tin nhắn thực sự trong tường thông báo của tác vụ. Đối số subtype = 'mt_comment' là cần thiết cho thông báo e-mail được gửi tới người theo dõi, giống như khi chúng tôi sử dụng nút Tin nhắn mới. Nếu không có loại phụ, mt_note được sử dụng làm mặc định, đăng ghi chú nội bộ mà không cần thông báo, như thể chúng tôi đã sử dụng nút Ghi nhật ký bên trong.

32

Còn nữa... Các hành động của máy chủ mã Python là một tài nguyên mạnh mẽ và linh hoạt, nhưng có một số hạn chế so với các mô-đun addon tùy chỉnh. Kể từ khi mã Python được đánh giá tại thời gian chạy, trong trường hợp có lỗi, dấu vết ngăn xếp không quá thông tin và có thể khó gỡ lỗi hơn. Cũng không thể chèn một điểm ngắt trong mã của một hành động máy chủ bằng cách sử dụng các kỹ thuật được hiển thị trong Chương 7, Gỡ lỗi và Thử nghiệm Tự động, vì vậy việc gỡ lỗi cần được thực hiện bằng cách sử dụng các câu lệnh ghi nhật ký. Một mối quan tâm khác là, khi cố gắng theo dõi nguyên nhân từ một hành vi trong mã mô-đun, bạn có thể bỏ lỡ điều đó; nó có thể gây ra bởi một máy chủ sction. Khi thực hiện việc sử dụng các hành động máy chủ chuyên sâu hơn, chúng ta có thể nhận được các tương tác phức tạp, vì vậy chúng ta nên lập kế hoạch đúng và giữ chúng được tổ chức.

33

5. Sử dụng các hành động tự động về điều kiện thời gian Các hành động tự động có thể được sử dụng để tự động kích hoạt các hành động dựa trên điều kiện thời gian. Chúng tôi có thể sử dụng chúng để tự động thực hiện một số thao tác trên hồ sơ đáp ứng các tiêu chí nhất định và đạt được điều kiện thời gian. Ví dụ, chúng tôi có thể kích hoạt một thông báo nhắc nhở cho các nhiệm vụ dự án một ngày trước thời hạn của họ, nếu họ có bất kỳ thông báo nào. Hãy xem làm thế nào điều này có thể được thực hiện.

Sẵn sàng Để thực hiện theo công thức này, chúng ta sẽ cần có cả ứng dụng Quản lý dự án và phần bổ sung Quy tắc tác vụ tự động đã được cài đặt và đã kích hoạt Chế độ nhà phát triển. Chúng ta cũng sẽ cần hành động máy chủ được tạo trong công thức hành động sử dụng máy chủ mã Python.

34

Làm thế nào để làm nó... Để tạo hành động tự động với điều kiện theo thời gian trên các tác vụ, hãy làm theo các bước sau: 1. Trong menu Cài đặt trên cùng, chọn Kỹ thuật | Tự động hóa | Mục menu Tác vụ tự động và nhấn vào nút Tạo. 2. Điền thông tin cơ bản vào biểu mẫu Hành động tự động:  Tên quy tắc: Hạn chót gần thông báo  Mô hình tài liệu liên quan: Tác vụ  Trong tab Điều kiện, khi Thời gian chạy, chọn Dựa trên Điều kiện thời gian 3. Để đặt tiêu chí bản ghi, trên hộp văn bản Trường bộ lọc, ngay sau liên kết Chọn Bản ghi, hãy đặt biểu thức tên miền hợp lệ: [('date_deadline', '! =', False), ('stage_id.fold', ' = ', Sai)]. Khi thay đổi sang một trường khác, thông tin về số lượng bản ghi đáp ứng các tiêu chí được cập nhật và liên kết Chọn Bản ghi sẽ thay 35

đổi thành Lựa chọn Thay đổi. Bằng cách nhấp vào nó, chúng ta có thể kiểm tra danh sách hồ sơ của các hồ sơ đáp ứng biểu thức miền. 4. Để đặt điều kiện thời gian, vào Ngày Kích hoạt, hãy chọn trường để sử dụng, Thời hạn và đặt Ngày Trễ Sau khi Kích hoạt thành -1 Ngày.

5. Trên tab Hành động, trong Hành động máy chủ để chạy, hãy nhấp vào Thêm mục và chọn Gửi Lời nhắc từ danh sách cần được tạo trước đó. Nếu không, bây giờ chúng ta có thể tạo hành động máy chủ để chạy bằng nút Tạo.

36

37

6. Nhấp vào Lưu để lưu hành động tự động. Thực hiện các bước sau để dùng thử:  1. Chuyển đến menu trên cùng của Dự án, Tìm kiếm | Nhiệm vụ và đặt thời hạn cho một số nhiệm vụ có ngày trong quá khứ.  2. Chuyển đến menu Cài đặt trên cùng, đến phần Kỹ thuật | Tự động hóa | Mục menu Tác vụ được lập lịch, tìm hành động Kiểm tra hành động quy tắc trong danh sách, mở dạng xem biểu mẫu và nhấn vào nút Chạy thủ công, ở trên cùng bên trái. Giờ đây, các hành động tự động được hẹn giờ sẽ được kiểm tra. Lưu ý rằng điều này sẽ làm việc trên một cơ sở dữ liệu demo mới

38

được tạo ra, nhưng có thể không hoạt động như thế này trong một cơ sở dữ liệu hiện có.

 3. Một lần nữa, hãy vào menu trên cùng của Project và mở cùng một nhiệm vụ mà bạn đã đặt trước đó cho một ngày hết hạn. Kiểm tra bảng tin bên dưới; bạn sẽ thấy thông báo được tạo bởi hành động máy chủ được kích hoạt bởi hành động tự động của chúng tôi.

39

Làm thế nào nó hoạt động... Hành động tự động hoạt động trên Mô hình và có thể được kích hoạt theo sự kiện hoặc theo điều kiện thời gian. Các bước đầu tiên là đặt giá trị Mô hình và Thời gian chạy. Cả hai phương pháp đều có thể sử dụng bộ lọc để thu hẹp các bản ghi đủ điều kiện để thực hiện tác vụ. Chúng ta có thể sử dụng một biểu thức miền cho việc này. Bạn có thể tìm thấy chi tiết về cách viết biểu thức miền trong Chương 8, Chế độ xem phụ trợ. Ngoài ra, bạn có thể tạo và lưu bộ lọc cho các tác vụ dự án, sử dụng các tính năng giao diện người dùng, sau đó sao chép ở đây biểu thức miền được tạo tự động, chọn nó từ lựa chọn Đặt dựa trên danh sách bộ lọc tìm kiếm. Biểu thức miền chúng tôi đã sử dụng chọn tất cả các bản ghi có ngày Hạn chót không trống, trong giai đoạn mà cờ Gấp không được chọn. Các giai đoạn 40

không có cờ Gấp được coi là đang hoạt động. Bằng cách này, chúng tôi tránh kích hoạt thông báo về các tác vụ trong các giai đoạn Xong, Đã hủy hoặc Đã đóng. Sau đó, chúng ta nên xác định điều kiện thời gian: trường ngày tháng sử dụng và khi nào hành động sẽ được kích hoạt. Khoảng thời gian có thể bằng phút, giờ, ngày hoặc tháng và số khoảng thời gian có thể dương, trong khoảng thời gian sau ngày tháng hoặc âm, cho thời gian trước ngày đó. Khi sử dụng khoảng thời gian trong ngày, chúng tôi có thể cung cấp Lịch tài nguyên xác định ngày làm việc và số ngày sẽ sử dụng. Những hành động này được kiểm tra bởi các hành động kiểm tra quy định công việc theo lịch trình. Lưu ý rằng theo mặc định nó được chạy sau mỗi bốn giờ. Điều này thích hợp cho các hành động hoạt động theo thang độ ngày hoặc tháng, nhưng nếu bạn cần các hành động hoạt động theo giờ hoặc phút, bạn cần thay đổi khoảng thời gian chạy thành một giá trị nhỏ hơn. Hành động sẽ được kích hoạt cho các bản ghi đáp ứng tất cả các tiêu chí và điều kiện ngày kích hoạt (ngày trường cộng với khoảng thời gian) là sau khi thực hiện hành động cuối cùng. Điều này là để tránh lặp đi lặp lại kích hoạt cùng một hành động. Và đây là lý do tại sao việc chạy thủ công hành động trước sẽ làm việc trong cơ sở dữ liệu mà hành động được lập lịch chưa được kích hoạt, nhưng có thể không hoạt động ngay lập tức trong cơ sở dữ liệu mà nó đã được trình lên lịch chạy. Khi hành động tự động được kích hoạt, tab Tác vụ cho bạn biết điều gì sẽ xảy ra. Đây có thể là danh sách các hành động của máy chủ, thực hiện những việc như thay đổi giá trị trên bản ghi, đăng thông báo, gửi e-mail, v.v. Ngoài ra, hai hoạt động đặc biệt có sẵn. Đặt Responsible mong muốn Mô hình đích có trường user_id và đặt giá trị của nó khi hành động được kích hoạt. Thêm Người theo dõi cung cấp danh sách các đối tác sẽ được thêm vào người theo dõi bản ghi.

41

Còn nữa... Các loại hành động tự động này được kích hoạt sau khi đạt đến một điều kiện thời gian nhất định. Điều này không giống như thường xuyên lặp lại một số hành động trong khi một số điều kiện vẫn đúng. Ví dụ: hành động tự động sẽ không thể đăng lời nhắc mỗi ngày sau khi thời hạn đã vượt quá. Loại hành động này có thể được thực hiện bởi Hành động theo lịch trình, được lưu trữ trong mô hình ir.cron. Tuy nhiên, các hành động được lên lịch không hỗ trợ các hành động của máy chủ; họ chỉ có thể gọi một phương thức hiện có của một đối tượng mô hình. Vì vậy, để thực hiện một hành động tùy chỉnh, chúng ta cần phải viết một mô-đun addon thêm phương thức Python cơ bản. Để tham khảo, tên kỹ thuật cho Mô hình Hành động Tự động là base.action.rule.

42

6. Sử dụng hành động tự động trên điều kiện sự kiện Các ứng dụng kinh doanh cung cấp các hệ thống có hồ sơ cho các hoạt động kinh doanh, nhưng cũng được dự kiến sẽ hỗ trợ các quy tắc kinh doanh động cụ thể cho các trường hợp sử dụng tổ chức. Khắc các quy tắc này thành các mô-đun addon tùy chỉnh có thể không linh hoạt và nằm ngoài tầm với của người dùng chức năng. Các hành động tự động được kích hoạt bởi các điều kiện sự kiện có thể thu hẹp khoảng cách này và cung cấp một công cụ mạnh mẽ để tự động hóa hoặc thực thi các thủ tục tổ chức. Ví dụ, chúng tôi sẽ thực thi xác nhận các nhiệm vụ của Dự án sao cho chỉ có Người quản lý dự án mới có thể thay đổi Nhiệm vụ thành giai đoạn Xong.

Sẵn sàng 43

Để làm theo công thức này, bạn sẽ cần phải có ứng dụng Quản lý dự án đã được cài đặt. Chúng tôi cũng cần kích hoạt Chế độ nhà phát triển. Nếu không, hãy kích hoạt nó trong hộp thoại OdooAbout.

Làm thế nào để làm nó... Để tạo hành động tự động với điều kiện sự kiện trên các tác vụ, hãy làm theo các bước sau: 1. Trong menu Cài đặt trên cùng, chọn Kỹ thuật | Tự động hóa | Mục menu Tác vụ tự động và nhấn vào nút Tạo. 2. Điền thông tin cơ bản vào biểu mẫu Hành động tự động:  Tên quy tắc: Xác thực tác vụ đóng  Mô hình tài liệu liên quan: Tác vụ  Tab điều kiện | Thời gian chạy: Khi cập nhật 3. Các quy tắc cập nhật cho phép bạn đặt hai bộ lọc bản ghi, trước và sau khi thao tác cập nhật. Trên hộp văn bản trường Bộ lọc Trước khi Cập nhật, sau liên kết Chọn Bản ghi, hãy đặt một biểu thức tên miền hợp lệ: [('stage_id.name', '! =', 'Xong')]. Trên hộp văn bản trường bộ lọc, đặt tên miền sau: [('stage_id.name', '=', 'Done')], như được hiển thị trong ảnh chụp màn hình sau. 44

4. Trên tab Hành động, trong Hành động Máy chủ để Chạy, hãy nhấp vào Thêm mục, và trên hộp thoại danh sách, nhấn vào nút Tạo để tạo một hành động máy chủ mới. 45

5. Điền vào mẫu hành động máy chủ với các giá trị sau và sau đó nhấn vào nút Lưu:  Tên hành động: Xác thực tác vụ đóng  Mô hình cơ sở: Tác vụ  Hành động cần làm: Thực thi mã Python  Mã Python: Nhập thông tin sau: nếu người dùng! = obj.project_id.user_id: Tăng Cảnh báo ('Chỉ Người quản lý Dự án mới có thể đóng Nhiệm vụ ') Ảnh chụp màn hình sau đây cho thấy các giá trị đã nhập:

46

6. Nhấp vào Lưu để lưu hành động tự động và dùng thử:  1. Trên cơ sở dữ liệu có dữ liệu demo và đăng nhập với tư cách Quản trị viên, hãy vào trình đơn Dự án trên cùng và nhấp vào dự án Tích hợp ELearning để mở nhiệm vụ Kanban của nó.  2. Sau đó thử kéo một trong các nhiệm vụ vào cột Giai đoạn đã hoàn thành. Vì Người quản lý dự án này là người dùng Demo và chúng tôi đang làm việc với Quản trị viên người dùng, hành động tự động của chúng tôi sẽ được kích hoạt và thông báo cảnh báo của chúng tôi đang chặn thay đổi.

47

Làm thế nào nó hoạt động... Chúng tôi bắt đầu bằng cách đặt tên cho các hành động tự động của chúng tôi và đặt Mô hình hoạt động với. Đối với loại hành động, chúng tôi chọn On Update, nhưng tùy chọn On Creation, On Creation & Update, On Deletion, và Based On Form Modification cũng có thể được thực hiện. Tiếp theo, chúng ta nên xác định các bộ lọc để xác định khi nào hành động của chúng ta sẽ được kích hoạt. Hành động On Update cho phép chúng tôi xác định hai bộ lọc: một để kiểm tra trước và sau khi các thay đổi được thực hiện cho bản ghi. Điều này có thể được sử dụng để biểu diễn các chuyển tiếp: phát hiện khi một bản ghi thay đổi từ trạng thái A thành trạng thái B. Trong ví dụ của chúng ta, chúng ta muốn kích hoạt hành động khi một tác vụ không hoàn thành thay đổi thành giai đoạn Xong. Hành động On Update là phiên bản duy nhất cho phép hai bộ lọc này; các loại hành động khác chỉ cho phép một bộ lọc. 48

Điều quan trọng cần lưu ý là điều kiện mẫu của chúng tôi sẽ chỉ hoạt động chính xác cho người dùng tiếng Anh. Điều này là do Tên Giai đoạn là một trường có thể dịch có thể có các giá trị khác nhau cho các ngôn ngữ khác nhau. Vì vậy, các bộ lọc trên các trường có thể dịch được nên tránh hoặc sử dụng cẩn thận. Cuối cùng, chúng ta tạo và thêm một (hoặc nhiều) hành động máy chủ với bất cứ điều gì chúng ta muốn được thực hiện khi hành động tự động được kích hoạt. Trong trường hợp này, chúng tôi đã chọn để chứng minh cách triển khai xác thực tùy chỉnh, sử dụng hành động máy chủ mã Python sử dụng ngoại lệ Cảnh báo để chặn người dùng thay đổi.

Còn nữa... Trong Chương 5, Phát triển phía máy chủ cơ bản, chúng ta đã thấy cách định nghĩa lại các phương thức write () của một mô hình để thực hiện các hành động trên bản cập nhật bản ghi. Các hành động tự động khi cập nhật bản ghi cung cấp một cách khác để đạt được điều tương tự, với một số lợi ích và hạn chế. Trong số các lợi ích, nó rất dễ dàng để xác định một hành động được kích hoạt bởi việc cập nhật của một trường được lưu trữ tính toán, đó là khó khăn để làm trong mã tinh khiết. Cũng có thể xác định các bộ lọc trên các bản ghi và có các 49

quy tắc khác nhau cho các bản ghi khác nhau hoặc cho các bản ghi khớp với các điều kiện khác nhau có thể được thể hiện bằng các tên miền tìm kiếm. Nhưng các hành động tự động có thể có những bất lợi khi so sánh với mã logic kinh doanh Python bên trong các mô-đun. Là một mối quan tâm, với việc lập kế hoạch kém, sự linh hoạt này có thể nhanh chóng phát triển thành các tương tác phức tạp, khó duy trì và gỡ lỗi. Ngoài ra, trước và sau khi viết các hoạt động lọc mang lại một số chi phí, do đó, để thực hiện các hành động nhạy cảm, điều này có thể là một vấn đề.

7. Kiểm tra luồng công việc tích hợp Odoo bao gồm một công cụ luồng công việc được xây dựng được sử dụng để quản lý luồng tài liệu kinh doanh và tương tác. Tuy nhiên, động cơ này đã dần được thay thế bằng logic kinh doanh Python và các hành động tự động. Như một ví dụ về điều này, một trong những quy trình công việc quan trọng nhất được sử dụng để liên kết đơn đặt hàng, hóa đơn và giao hàng, nhưng kể từ phiên bản 9.0, nó đã bị xóa.

50

Tuy nhiên, có một số quy trình công việc vẫn được một số ứng dụng sử dụng, vì vậy có thể có trường hợp nhà phát triển cần làm việc với họ. Vì vậy, nó vẫn có liên quan để có một số hiểu biết cơ bản về cách họ làm việc. Ứng dụng Chiến dịch tiếp thị vẫn sử dụng quy trình làm việc đơn giản và chúng tôi sẽ sử dụng nó để cung cấp tổng quan ngắn gọn về chúng.

Sẵn sàng Chúng ta sẽ cần một cá thể Odoo với dữ liệu demo và mô đun addon của Chiến dịch tiếp thị được cài đặt (không phải là nó không phải là một ứng dụng). Chúng tôi cũng cần kích hoạt Chế độ nhà phát triển. Nếu không, hãy kích hoạt nó trong hộp thoại Odoo About.

51

Làm thế nào để làm nó... Để kiểm tra quy trình làm việc được xác định trên một mô hình, hãy làm theo các bước sau:  1. Mở trình đơn hàng đầu Tự động hóa chì. Tùy thuộc vào các ứng dụng bạn đã cài đặt, thay vào đó nó có thể được đặt tên là Tiếp thị. Nhấp vào một bản ghi trên danh sách Chiến dịch để mở dạng xem biểu mẫu của nó.  2. Mở menu Debug (biểu tượng Bug ở phía bên tay phải của thanh trên cùng) và chọn tùy chọn Print Workflow. Điều này sẽ tạo ra một tài liệu PDF 52

với một biểu đồ của quy trình làm việc của chiến dịch, hiển thị trên nền màu đỏ nút công việc mà tài liệu hiện tại đang ở.

 3. Một lần nữa trong menu Debug, chọn tùy chọn Edit Workflow. Điều này sẽ điều hướng đến chế độ xem danh sách Luồng công việc được lọc theo luồng công việc hiện tại. Nhấp vào dòng công việc trong danh sách để mở và kiểm tra định nghĩa của nó.

53

 4. Quy trình làm việc có chế độ xem thứ ba, sơ đồ. Nhấp vào biểu tượng Loại chế độ xem thứ ba, ở trên cùng bên phải sau dạng xem biểu mẫu, chúng tôi có thể xem định nghĩa quy trình làm việc trong biểu đồ. Biểu đồ cũng cho phép chỉnh sửa: nhấp đúp vào nút để chỉnh sửa Hoạt động và trên các dòng để chỉnh sửa Chuyển tiếp.

54

Làm thế nào nó hoạt động... Các định nghĩa dòng công việc được lưu trữ trong mô hình luồng công việc và cũng có thể truy cập được thông qua trình đơn Cài đặt trên cùng và điều hướng đến Kỹ thuật | Mục menu công việc. Định nghĩa của họ có Hoạt động. Các nút hoặc trạng thái luồng công việc và Chuyển tiếp, xác định khi nào trạng thái hiện tại của luồng công việc sẽ chuyển sang nút khác. Chuyển tiếp thường phụ thuộc vào quy trình làm việc Tín hiệu được kích hoạt. Một cách phổ biến để kích hoạt tín hiệu luồng công việc là thông qua các nút biểu mẫu. Các nút hỗ trợ thuộc tính type = "workflow" cho việc này. Quy trình công việc hiện tại có thể tùy chỉnh: chúng tôi có thể chỉnh sửa hoặc thêm hoạt động và chúng tôi có thể thay đổi Chuyển tiếp kết nối chúng. Các tùy chỉnh đơn giản thường liên quan đến việc chỉnh sửa chuyển đổi. Trong sơ đồ dòng công việc, nhấp đúp vào mũi tên chuyển đổi sẽ đưa ra dạng xem biểu mẫu của nó. Ở đó, chúng ta rewire workflow bằng cách sửa đổi Destination Activity, 55

thêm Condition với một biểu thức Python để đánh giá hoặc sử dụng Group Required để giới hạn quá trình chuyển đổi chỉ được kích hoạt bởi người dùng trong một nhóm bảo mật nhất định.

Xem thêm  Tài liệu chính thức cung cấp thêm chi tiết về định nghĩa luồng công việc: https://www.odoo.com/documentation/9.0/reference/workflows.html.

56

Related Documents


More Documents from "Yoga Pratama"

Ke Toan Gia Tha.doc
November 2019 30
Tonghopkt.doc
November 2019 27
Do_an_phonghoc.doc
November 2019 16
December 2019 15