如何为workflow单据类型定义一个form属性,在notify中通过这个属性打开表单

表单名称:MYFORM
数据块名称:MYBLOCK
第一步:
在表单中加入参数:WF_ITEMKEY
MYBLOCK的数据来源中必须有WF_ITEMKEY这个字段。
修改或添加数据块级触发器:WHEN-NEW-BLOCK-INSTANCE
if :Parameter.wf_itemkey is not null
then
   declare
      ls_where         varchar2(1000);
      ls_this_where    varchar2(1000);
   begin
      ls_where := GET_BLOCK_PROPERTY(MYBLOCK,DEFAULT_WHERE);
      if ls_where is null
      then
         ls_this_where := '1=1 ';
      else
         ls_this_where := ls_where;
      end if;

      ls_this_where := ls_this_where||' and (wf_itemkey = :Parameter.wf_itemkey)';

      SET_BLOCK_PROPERTY(MYBLOCK',DEFAULT_WHERE,LS_THIS_WHERE);
      app_find.find('MYBLOCK');
      SET_BLOCK_PROPERTY('MYBLOCK',DEFAULT_WHERE,LS_WHERE);
   end;
end if;

第二步:
在plsql的包中设计:
-- 创建工作流
      wf_engine.createprocess(
         itemtype    => lis_itemtype     ,   -- in varchar2
         itemkey     => lis_itemkey      ,   -- in varchar2
         process     => lis_wfprocess    ,   -- in varchar2 default ’’
      user_key    => ls_user_key      ,   -- in varchar2 default null
         owner_role => ls_owner_role    ); -- in varchar2 default null

-- 打开表单MYFORM
      wf_engine.setitemattrtext(
         itemtype    => lis_itemtype               ,   -- in varchar2
         itemkey     => lis_itemkey                ,   -- in varchar2
         aname       => 'OPEN_FORM_COMMAND'        ,   -- in varchar2
         avalue      => 'MYFORM:WF_ITEMKEY="'        -- in varchar2
                       || lis_itemkey
                       || '"'
                         );

--启动工作流
      wf_engine.startprocess(
         itemtype    => lis_itemtype     ,   -- in varchar2
         itemkey     => lis_itemkey      ); -- in varchar2

第三步:
在workflow builder中设计:
增加属性,名称为OPEN_FORM_COMMAND    类型为: Form
在message中,将此属性拉过去就好了,不必写在message body中。

第四步:
在notify中,应该可以会出现“OPEN_FORM_COMMAND”,选中点击就可以链接到表单了。

posted @ 2012-06-01 13:54  刘伟聪  阅读(239)  评论(0编辑  收藏  举报