SAP灵活工作流运行时处理类

父类        

        CL_SWF_FLEX_IFS_DEF_APPL_BASE  Flex Workflow Definition Class

        CL_SWF_FLEX_IFS_RUN_APPL_BASE Application Integration Runtime Base Class

        实施时创建子类使用,方便增加客制化逻辑 

示例:

        重写方法IF_SWF_FLEX_IFS_RUN_APPL~RESULT_CALLBACK

        该方法在流程完成后调用,用来处理流程结束后的逻辑可以获取工作流容器对象使用

 METHOD IF_SWF_FLEX_IFS_RUN_APPL~RESULT_CALLBACK.

    DATA:lv_retcode          TYPE sy-subrc,
         lt_container        TYPE TABLE OF swr_cont, 
         ls_contianer        TYPE swr_cont,
         lv_decision         TYPE swc_elem,
         ls_por              TYPE sibflpor, 
         lv_flow_workitem_id TYPE sww_wiid.
    DATA: lo_wf_object TYPE REF TO YCL_TEST_WF_OBJECT.
    
    " 父类调用
    TRY.
        CALL METHOD super->if_swf_flex_ifs_run_appl~result_callback
          EXPORTING
            io_context = io_context
            io_result  = io_result
          IMPORTING
            ev_outcome = ev_outcome.
      CATCH cx_swf_flex_ifs_run_exception.
    ENDTRY.
    
    " POR属性
    MOVE-CORRESPONDING io_context->get_leading_object_reference( ) TO ls_por.
    
    " 容器对象
    DATA(lo_cont) = io_context->get_workflow_container( ).
    
    " 工作流结果
    DATA(ls_result) = io_result->get_result( ).
    lv_flow_workitem_id = ls_result-wi_id.
    
    " 获取工作流容器值
    TRY .
        lo_cont->get( EXPORTING name = 'WFObject'  ##no_text
                          IMPORTING value = lo_wf_object ).  " user with US prefi
      CATCH cx_swf_cnt_elem_not_found.
      CATCH cx_swf_cnt_container.
    ENDTRY.
    
    " 结果判断
    CASE ls_result-result.
      WHEN 'APPROVED'.
        
      WHEN 'REJECTED'.
        
      WHEN OTHERS.
    ENDCASE.
 
  ENDMETHOD.

         其它方法根据业务场景决定是否重写,每个方法的重写都可视为对流程逻辑的增强处理,比如方法IF_SWF_FLEX_IFS_RUN_APPL_STEP~AFTER_COMPLETION_CALLBACK在节点创建完成后调用,可以填充邮件通知逻辑等。

        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值