起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8088|回复: 35

[结贴] 如何在流程流转结束步骤,调用自定义action

[复制链接]

67

主题

279

帖子

434

积分

中级会员

Rank: 3Rank: 3

积分
434
QQ
发表于 2014-11-14 09:31:21 | 显示全部楼层 |阅读模式
在流程流转到最后一步时候,点击流转,会弹出,结束的标识框,在结束流程的时候调用自定义action的方法。如何实现?

自定义action中如何调用存储过程,实现插入数据?
存储过程名字:HR_Interface_Generate1
参数:
@EmpNo        varchar(255) ,
@Date datetime,
@Type varchar(255) ,
@No varchar(255)

最好给出实例

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35924
发表于 2014-11-14 10:28:36 | 显示全部楼层
可以在process文件的流转完成后事件中写
finish.png


java中调用action可以调用API

actionUtils.png




调用存储过程都是java标准的
可以参考http://bbs.justep.com/forum.php?mod=viewthread&tid=39234
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

67

主题

279

帖子

434

积分

中级会员

Rank: 3Rank: 3

积分
434
QQ
 楼主| 发表于 2014-11-14 12:01:40 | 显示全部楼层
jishuang 发表于 2014-11-14 10:28
可以在process文件的流转完成后事件中写

public static Object invokeAction(String process, String activity, String action, String executor, String executeContext, Map parameters)
调用Action
参数:
String process process标识, 带路径
String activity activity标识, 不带路径
String action action标识
String executor 执行者
String executeContext 执行环境
Map parameters 参数
异常:
com.justep.model.exception.ModelException
返回:
Object

看不明白怎么写这些参数。

       /**
         * 流转完成后事件
         * */
        public static void leaveProcessAfterFinish() {
                System.out.println(">>>>>>>>>>流传完成时间调用<<<<<<<<<<");
                ActionUtils.invokeAction( arg0, arg1, arg2, arg3, arg4);               
        }

自定义action的名字,路径见截图。
feedbackLeave

回复 支持 反对

使用道具 举报

58

主题

410

帖子

823

积分

高级会员

Rank: 4

积分
823
QQ
发表于 2014-11-14 12:18:43 | 显示全部楼层
你调用自定义的action,首先这个action已经写好了,并存在项目的logic--action目录下。process 就是你项目process,activity 就是调用该方法的activity action是你写好的action名字 执行者可以知道,也可以是系统中任一人,其他两项可以为null
回复 支持 反对

使用道具 举报

58

主题

410

帖子

823

积分

高级会员

Rank: 4

积分
823
QQ
发表于 2014-11-14 12:25:22 | 显示全部楼层
可以参考这个:
                        Action action = new Action();
                        // 指定动作的process、activity和action,这里要注意登录的用户应该有执行这个功能中的这个动作的权限
                        action.setProcess("/xxx/common/process/common/commonProcess");
                        action.setActivity("mainActivity");
                        action.setName("userRevoke");

                        // 调用动作
                        ActionResult actionResult = ActionEngine.invokeAction(action, ActionUtils.JSON_CONTENT_TYPE, bSessionID, null, null);
                        // 判断是否调用成功
                        if (actionResult.isSuccess()) {
                                // 返回值
                                return actionResult.getDatas().get(0).toString();
                        } else {
                                throw new RuntimeException(actionResult.getMessage());
                        }
回复 支持 反对

使用道具 举报

67

主题

279

帖子

434

积分

中级会员

Rank: 3Rank: 3

积分
434
QQ
 楼主| 发表于 2014-11-14 12:54:36 | 显示全部楼层
米拉快跑 发表于 2014-11-14 12:25
可以参考这个:
                        Action action = new Action();
                        // 指定 ...

我是流程结束时候调用action,activity怎么写?结束的节点?
回复 支持 反对

使用道具 举报

58

主题

410

帖子

823

积分

高级会员

Rank: 4

积分
823
QQ
发表于 2014-11-14 13:59:58 | 显示全部楼层
zsj5237 发表于 2014-11-14 12:54
我是流程结束时候调用action,activity怎么写?结束的节点?

如图,两种都可以试试,我没写过流程的,所以不太确定
QQ截图20141114135848.png
回复 支持 反对

使用道具 举报

67

主题

279

帖子

434

积分

中级会员

Rank: 3Rank: 3

积分
434
QQ
 楼主| 发表于 2014-11-14 14:44:55 | 显示全部楼层
米拉快跑 发表于 2014-11-14 13:59
如图,两种都可以试试,我没写过流程的,所以不太确定

>>>>>>>>>>流传完成时间调用<<<<<<<<<<
2014-11-14 14:42:35 action:<?xml version="1.0" encoding="UTF-8"?>
<actions><action direct-execute="false" process="/xusteelOA/workTime/process/leave/leaveProcess" activity="businessActivity9" action-flag="__action_0__" executor="/ORG01.ogn/1E3F81C3250E4287988F819E3BF648A2.dpt/C6091B2A82EF4993BB0D9D3436DB4677.dpt/0B04327681444E14B4D047141D7C3A5F.dpt/9E92117B7B764008A0BDCC0366EFD053@0B04327681444E14B4D047141D7C3A5F.psm" execute-context="" name="externalAdvanceProcessAction" accept="*/*">        <parameters xmlns:xbiz="http://www.justep.com/xbiz#">                <parameter name="task">                        <xbiz:simple type="http://www.w3.org/2001/XMLSchema#String">2FBE8D31729F4FB8957B7AC8483FE9AF</xbiz:simple>                </parameter><parameter name="control"><xbiz:object class="com.justep.system.process.ProcessControl"><process-control><task-join>false</task-join><customized-enabled>false</customized-enabled><task-join-mode/><save-history>true</save-history><jump-enabled>false</jump-enabled><dialog-enabled>true</dialog-enabled><message/><status>none</status><to><process-control-item id="082E0467831F46919523C2108C7879FB" activity-id="082E0467831F46919523C2108C7879FB" is-end="true" selected="true" readonly="true"><unit>end1</unit><template/><process>/xusteelOA/workTime/process/leave/leaveProcess</process><executor-kinds/><executor-range/><executors/><task-relation-value><sTypeName>请假申请</sTypeName><sLock>9495C17222764DEFACAB65259F7E1019</sLock><SA_Task>46010A9E5D654428A0E19EC5768CECE1</SA_Task><sActivityInTemplate>end1</sActivityInTemplate><sProcessTemplateID2/><sProcess>/xusteelOA/workTime/process/leave/leaveProcess</sProcess><sActivityName/><sLastModifyTime>2014-11-14T14:42:27.206Z</sLastModifyTime><sProcessName>请假申请</sProcessName></task-relation-value><exts/></process-control-item></to><notice/><exts/></process-control></xbiz:object></parameter>        </parameters></action></actions>
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeAction(Native Method)
        at com.justep.system.action.Engine.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
        at com.justep.system.process.ProcessUtils.advanceProcess(Unknown Source)
        at ExternalProcessProcedure.advanceProcess(ExternalProcessProcedure.java:30)
        ... 26 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeAction(Native Method)
        at com.justep.system.action.Engine.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
        at com.justep.system.process.AdvanceProcessEngine.a(Unknown Source)
        at com.justep.system.process.AdvanceProcessEngine.execute(Unknown Source)
        at com.justep.system.process.ProcessEngine.advance(Unknown Source)
        at ProcessProcedure.advanceProcess(ProcessProcedure.java:279)
        ... 37 more
Caused by: java.lang.NullPointerException
        at com.justep.system.action.Engine.actionParameterInit(Unknown Source)
        at com.justep.system.action.Engine.invokeAction(Native Method)
        at com.justep.system.action.Engine.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
        at LeaveProcess.leaveProcessAfterFinish(LeaveProcess.java:35)
        ... 50 more

调用时候报错,代码如下:
/**
         * 流转完成后事件
         * */
        public static void leaveProcessAfterFinish() {
                System.out.println(">>>>>>>>>>流传完成时间调用<<<<<<<<<<");
                Object result = ActionUtils.invokeAction("/xusteelOA/workTime/process/leave/leaveProcess", "businessActivity1", "feedbackLeave", null, null);
        }
回复 支持 反对

使用道具 举报

67

主题

279

帖子

434

积分

中级会员

Rank: 3Rank: 3

积分
434
QQ
 楼主| 发表于 2014-11-14 15:30:36 | 显示全部楼层
action调用OK了,
请问存储过程调用时,创建连接
Connection conn = ModelUtils.getConnectionInTransaction("datamodel");
其中datamodel,是db.config.m文件中的那么么,如下红色字?
<?xml version="1.0" encoding="utf-8"?>
<model xmlns="http://www.justep.com/model">
        <config name="dataSource" value="java:comp/env/dngt_hr"/>
</model>
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35924
发表于 2014-11-14 16:36:17 | 显示全部楼层
zsj5237 发表于 2014-11-14 15:30
action调用OK了,
请问存储过程调用时,创建连接
Connection conn = ModelUtils.getConnectionInTransactio ...

/demo/components/data这样的data目录

就是这个db.config.m所在的data的目录

远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-7 20:32 , Processed in 0.109405 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表