原理
ations
OE定义了ir.actions.actions,并从中派生了众多的子类
- ir.actions.client
- ir.actions.act_url
- ir.actions.act_window
- ir.actions.act_window_close
- ir.actions.wizard
- ir.actions.server
用来执行相关的动作
Server action
其中有一个子类 ir.actions.server ,可以用来执行服务器端的动作。
可以执行的动作有;
'state': fields.selection([
('client_action','Client Action'),
('dummy','Dummy'),
('loop','Iteration'),
('code','Python Code'),
('trigger','Trigger'),
('email','Email'),
('sms','SMS'),
('object_create','Create Object'),
('object_copy','Copy Object'),
('object_write','Write Object'),
('other','Multi Actions'),
], 'Action Type', required=True, size=32, help="Type of the Action that is to be executed"),
可以用来干各种事情
Automated Action Rules
模块定义了 自动动作规则
-针对什么对象
-条件
-动作 ,即server_action定义的动作
何时触发
- 定时器触发
- 注入到对象的create/write方法中
使用场景
例如,
- 当有任务指派时,发送通知邮件给被指派的人
- 定时提醒
- 接收到邮件时,创建对象实例
实际操作
建立server_actions.
菜单 Settings/ Technical/ Actions/ Server Actions
create一个新的action
object处选择Task, 即project.task
Action type选择Email
其中可以选的action有很多,如下
定制邮件内容
- 邮件接收人
- 邮件主旨
- 邮件内容
提示,如果不清楚object的属性,可以点击弹出窗口按键,弹出Task定义窗口
设置好相关的参数后,保存
至此,server_action设置好了。
设置automatic action rule以便可以触发动作。
菜单 Settings/ Technical/ Automated Actions/ Automated Actions
create一个automatic action rule.
输入规则名称
选择相应的对象,在此选择task ,即project.task
设置conditions
目的,用来过滤哪些对象可以执行服务器动作
说明;
Timer如果不设置,则当crete/update Object时触发服务器动作;否则,按照定时器设定的时间触发,但是会按照trigger date设置的参数筛选相应的对象实例。
设置actions
点击Add按钮,在弹出窗选择已经创建的server action或者建立新的server action.
提示;
可以添加多个动作,动作按sequence顺序执行
注意;
Fields to change. 是指 change the fields of the object.
Add Followers,是指 为此 instance of object指派 订阅者(但有条件,具体看代码 ;))
定时任务
Automatic action rules是由 ir.cron定期执行的,如
附加说明
注入到对象创建、修改方法的代码
修改create方法
修改write方法
执行动作时,修改 Fields to change 和Add Follower的相关代码
总结;
- 如果使用filter. 不要给 filter指定 res.user !!! 否则会有权限问题发生!!!
-
如果设置了timer. 则不注入到model,不触发动作
-
如果设置了timer. 而 时间条件不成熟时,不触发动作