You are on page 1of 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 biểu mẫu, nó nên sử dụng tiện ích
kanban_state_selection cụ thể:

<tên trường = "kanban_state" widget = "kanban_state_selection" />

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

<field name = "priority" widget = "priority" />

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:

<form>
<group>
<tên trường = "tên" />
<field name = "author_ids" widget = "many2many_tags" />
</ group>
<group>
<tên trường = "date_release" />
</ group>
</ form>

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 </ form>:
<div class = "oe_chatter">
<tên trường = "message_follower_ids"
widget = "mail_followers" groups = "base.
group_user "/>
<tên trường = "message_ids"
widget = "mail_thread" />
</ div>

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 e-
mail 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 E-
Learning để 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

You might also like