Task Flow使用指南之十:通过程序调用TaskFlow

运行环境:JDeveloper 11.1.2.3.0 + Oracle Database 11g Express Edition。

Task Flow使用指南之九中介绍了如何调用Remote TaskFlow, 但那是通过TaskFlow Call Activity调用的,如何通过程序调用一个Bounded TaskFlow呢?

首先我们必须知道TaskFlow的URL的格式,以Remote TaskFlow应用为例,其中的employee TaskFlow的URL如下:
http://127.0.0.1:7101/ADF_TaskFlow_RemoteProducer-ViewController-context-root/faces/adf.task-flow?adf.tfId=employee-btf&adf.tfDoc=/WEB-INF/employee-btf.xml&departmentId=60
其中参数 adf.tfId是TaskFlow的ID,参数 adf.tfDoc是 TaskFlow的Document。
这两个参数对应 TaskFlow Call Activity上的同名属性。
注意,我这里还带了一个参数 departmentId,因为 employee TaskFlow的输入参数就是 departmentId。
你可以复制这个URL,直接在浏览器中访问,如果能看到 departmentId=60的员工列表,就说明 employee TaskFlow可以通过URL访问。
有了URL,我们就可以通过程序调用 employee TaskFlow。

重要步骤说明:

1. 创建Remote TaskFlow Producer
这一步和《 Task Flow使用指南之九》一样,这里不再赘述。

2. 在departments.jsf页面中,添加按钮:Invoke Employee TaskFlow
(1)页面代码如下:

<af:commandButton text="Invoke Employee TaskFlow" id="cb2" action="#{myBackingBean.invokeEmployeeTaskFlow}">
    <af:setPropertyListener from="#{bindings.DepartmentId}" to="#{requestScope.departmentId}" type="action"/>
</af:commandButton>
(2)对应的Managed Bean的方法: invokeEmployeeTaskFlow

    public String invokeEmployeeTaskFlow() {
        FacesContext fctx = FacesContext.getCurrentInstance();
        ExternalContext ectx = fctx.getExternalContext();
        Map m = ectx.getRequestMap();

        String tfId = "employee-btf";
        String tfDoc = "/WEB-INF/employee-btf.xml";
        Map parameters = new HashMap();
        parameters.put("departmentId", m.get("departmentId"));

        TaskFlowId taskflowId = new TaskFlowId(tfDoc, tfId);
        //TaskFlowId taskflowId = TaskFlowId.parse("/WEB-INF/employee-btf.xml#employee-btf");
        String taskflowUrl = ControllerContext.getInstance().getTaskFlowURL(false, taskflowId, parameters);
        //String taskflowUrl = "http://127.0.0.1:7101/ADF_TaskFlow_RemoteProducer-ViewController-context-root/faces/adf.task-flow?adf.tfId=employee-btf&adf.tfDoc=/WEB-INF/employee-btf.xml&departmentId=60";

        try {
            ectx.redirect(taskflowUrl);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return taskflowUrl;
    }

Project 下载: ADF_TaskFlow_RemoteProducer.7z

参考文献:
1. http://oracleseeker.com/2009/10/28/adf_current_taskflow_id/
2.  http://oracleseeker.com/2009/11/09/adf_backing_action_taskflow/
3.  https://forums.oracle.com/forums/thread.jspa?threadID=1082973
4.  https://blogs.oracle.com/jdevotnharvest/entry/how-to_navigate_in_bounded_task_flows
5.  http://adfdeveloper.blogspot.jp/2011/07/adf-auto-redirect-while-still-passing.html
6. https://blogs.oracle.com/jdeveloperpm/entry/how-to_efficiently_redirect_to_an_adf_faces_view_using_adf_controller

7. http://udayarocks.wordpress.com/2011/07/22/how-to-invoke-a-method-from-managed-bean-when-jspx-page-loads-in-adf/


文章出自:

http://maping930883.blogspot.com/2013/04/adf207task-flowtaskflow.html


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值