網(wǎng)頁設(shè)計(jì)策劃案范文seo技術(shù) 快速網(wǎng)站排名
前言
略
用戶任務(wù)中的執(zhí)行監(jiān)聽器配置界面
監(jiān)聽器事件
用戶任務(wù)中的執(zhí)行監(jiān)聽器可以監(jiān)聽到的事件有:
- start:開始時(shí)觸發(fā)。
- end:結(jié)束時(shí)觸發(fā)。
- take:執(zhí)行時(shí)觸發(fā)。
監(jiān)聽器執(zhí)行方式
監(jiān)聽器的執(zhí)行方式:
- 類(class):需要配置實(shí)現(xiàn)了ExecutionListener接口的類。
- 表達(dá)式(Expression):需要從Spring中獲取對(duì)應(yīng)的bean對(duì)象及要調(diào)用的相關(guān)的方法。
- 委托表達(dá)式(DelegateExpression):需要從Spring容器中獲取實(shí)現(xiàn)了ExecutionListener接口的實(shí)現(xiàn)類、
類(class)方式
類由 activiti 初始化。
因?qū)崿F(xiàn)了 ExecutionListener 接口,所以無需指定調(diào)用的方法。
表達(dá)式(Expression)方式
類已由 spring 初始化完成。表達(dá)式中是 bean 的名字。
因未實(shí)現(xiàn) ExecutionListener 接口,所以 activiti 不知道該調(diào)用哪個(gè)方法,需要指定所需調(diào)用的方法。
示例:
${updateInstanceUpdate.update()}
updateInstanceUpdate
是 spring 中 bean 的名字。
委托表達(dá)式(DelegateExpression)方式
類已由 spring 初始化完成。
表達(dá)式中是 bean 的名字。
因?qū)崿F(xiàn)了 ExecutionListener 接口,所以無需指定調(diào)用的方法。
示例:
${qingJiaUpdateStatusActivitiListener }
qingJiaUpdateStatusActivitiListener
是 spring 中 bean 的名字。
傳遞參數(shù)
在執(zhí)行監(jiān)聽器配置界面下半部分添加傳遞給監(jiān)聽器的參數(shù)。
可配置常量(字符串)和表達(dá)式
監(jiān)聽器中接收參數(shù)
@Component("qingJiaUpdateStatusActivitiListener ")
public class QingJiaUpdateStatusActivitiListener implements ExecutionListener {@Overridepublic void notify(DelegateExecution execution) {/*綁定工作流的單據(jù)Key*/String key = execution.getProcessInstanceBusinessKey();/*status*/Integer status = this.getIntegerFieldValue(execution.getCurrentActivitiListener(), "status");/*更新 status*/if (null != status) {this.xxx.notifyUpdateStatus(id, status);}}protected String getFieldValue(ActivitiListener activitiListener, String fieldName) {List<FieldExtension> listField = activitiListener.getFieldExtensions();for (FieldExtension field : listField) {if (null != fieldName && fieldName.equals(field.getFieldName())) {return field.getStringValue();}}return null;}protected Long getLongFieldValue(ActivitiListener activitiListener, String fieldName) {String fieldValue = this.getFieldValue(activitiListener, fieldName);return null==fieldValue?null:Long.valueOf(fieldValue);}protected Integer getIntegerFieldValue(ActivitiListener activitiListener, String fieldName) {String fieldValue = this.getFieldValue(activitiListener, fieldName);return null==fieldValue?null:Integer.valueOf(fieldValue);}}
參考
https://blog.csdn.net/m0_38001814/article/details/104197670