关于iMatrix平台流程引擎事件处理之业务补偿分析
2013-08-14 11:57
357 查看
前面已经介绍了iMatrix平台办理人设置和表单字段权限的原理,下面再看看iMatrix平台是怎样处理事件的?
[align=left]iMatrix平台流程属性中的业务补偿:[/align]
[align=left]自己认为业务补偿也是属于事件的。[/align]
[align=left]1 xml中的配置[/align]
[align=left]<process … … ……>[/align]
[align=left]… … … …[/align]
[align=left]<extend>[/align]
[align=left]… … … …[/align]
[align=left]<expiation-setting>[/align]
[align=left] <set-type>http</set-type>[/align]
[align=left] <delete-instance>[/align]
[align=left]/expense-report/delete-instance-expiation.htm[/align]
[align=left]</delete-instance>[/align]
[align=left] <cancel-instance>[/align]
[align=left]/expense-report/cancel-instance-expiation.htm[/align]
[align=left]</cancel-instance>[/align]
[align=left] <task-jump>/expense-report/task-jump-expiation.htm</task-jump>[/align]
[align=left] <pause-instance/>[/align]
[align=left] <continue-instance/>[/align]
[align=left] <goback-task/>[/align]
[align=left] </expiation-setting>[/align]
[align=left]</extend>[/align]
[align=left]… … … …[/align]
[align=left]</process>[/align]
[align=left]任务退回配置的是spring bean名称,该bean需要实现的接口为com.norteksoft.wf.engine.client.ReturnTaskInterface。当在流程监控中删除、取消、暂停、继续实例时,做法基本一致,如下:[/align]
[align=left]首先获得xml中配置的请求方式和请求的url;当请求方式是HTTP方式时,使用httpclient请求url;当请求方式是RESTful方式时,使用的是Jersey的Client请求的。[/align]
[align=left]WebUtil.java中的两种请求方式实现如下:[/align]
[align=left]/**[/align]
[align=left] * 普通的http请求[/align]
[align=left] * @param url[/align]
[align=left] */[/align]
[align=left] public static void getHttpConnection(String url,Long companyId,LongentityId,String systemCode){[/align]
[align=left] String resultUrl=SystemUrls.getBusinessPath(systemCode);[/align]
[align=left] if(PropUtils.isBasicSystem(resultUrl)){[/align]
[align=left] resultUrl = SystemUrls.getSystemUrl("imatrix");[/align]
[align=left] }[/align]
[align=left] log.info(" == systemurl : ["+resultUrl+"] == ");[/align]
[align=left] resultUrl = resultUrl + url+"?companyId="+companyId+"&entityId="+entityId;[/align]
[align=left] log.info(" == restleturl : ["+resultUrl+"] == ");[/align]
[align=left] HttpGet httpget = new HttpGet(resultUrl);[/align]
[align=left] HttpClient httpclient = new DefaultHttpClient();[/align]
[align=left] ResponseHandler<String> responseHandler = newBasicResponseHandler();[/align]
[align=left] try {[/align]
[align=left] httpclient.execute(httpget, responseHandler);[/align]
[align=left] } catch (ClientProtocolException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] httpclient.getConnectionManager().shutdown();[/align]
[align=left] }[/align]
[align=left]/**[/align]
[align=left] * RESTful请求[/align]
[align=left] * @param url[/align]
[align=left] * @param companyId[/align]
[align=left] */[/align]
[align=left] public static void restful(String url,Long companyId,Long entityId,StringsystemCode){[/align]
[align=left] ClientConfig config = new DefaultClientConfig();[/align]
[align=left] Client client = Client.create(config);[/align]
[align=left] String resultUrl = SystemUrls.getSystemUrl(systemCode);[/align]
[align=left] if(PropUtils.isBasicSystem(resultUrl)){[/align]
[align=left] resultUrl = SystemUrls.getSystemUrl("imatrix");[/align]
[align=left] }[/align]
[align=left] log.info(" == systemurl : ["+resultUrl+"] == ");[/align]
[align=left] resultUrl = resultUrl + url;[/align]
[align=left] log.info(" == restleturl : ["+resultUrl+"] == ");[/align]
[align=left] WebResource service = client.resource(resultUrl);[/align]
[align=left] ClientResponse cr = service[/align]
[align=left] .entity("companyId="+companyId+"&entityId="+entityId, MEDIA_TYPE)[/align]
[align=left] .accept(MEDIA_TYPE)[/align]
[align=left] .post(ClientResponse.class);[/align]
if(cr != null) log.info("=========== RESTful execute result : ["+cr.getEntity(String.class)+"]===========
");
[align=left] }[/align]
<
4000
span style="font-family:Calibri;">
[align=left]iMatrix平台流程属性中的业务补偿:[/align]
[align=left]自己认为业务补偿也是属于事件的。[/align]
[align=left]1 xml中的配置[/align]
[align=left]<process … … ……>[/align]
[align=left]… … … …[/align]
[align=left]<extend>[/align]
[align=left]… … … …[/align]
[align=left]<expiation-setting>[/align]
[align=left] <set-type>http</set-type>[/align]
[align=left] <delete-instance>[/align]
[align=left]/expense-report/delete-instance-expiation.htm[/align]
[align=left]</delete-instance>[/align]
[align=left] <cancel-instance>[/align]
[align=left]/expense-report/cancel-instance-expiation.htm[/align]
[align=left]</cancel-instance>[/align]
[align=left] <task-jump>/expense-report/task-jump-expiation.htm</task-jump>[/align]
[align=left] <pause-instance/>[/align]
[align=left] <continue-instance/>[/align]
[align=left] <goback-task/>[/align]
[align=left] </expiation-setting>[/align]
[align=left]</extend>[/align]
[align=left]… … … …[/align]
[align=left]</process>[/align]
[align=left]任务退回配置的是spring bean名称,该bean需要实现的接口为com.norteksoft.wf.engine.client.ReturnTaskInterface。当在流程监控中删除、取消、暂停、继续实例时,做法基本一致,如下:[/align]
[align=left]首先获得xml中配置的请求方式和请求的url;当请求方式是HTTP方式时,使用httpclient请求url;当请求方式是RESTful方式时,使用的是Jersey的Client请求的。[/align]
[align=left]WebUtil.java中的两种请求方式实现如下:[/align]
[align=left]/**[/align]
[align=left] * 普通的http请求[/align]
[align=left] * @param url[/align]
[align=left] */[/align]
[align=left] public static void getHttpConnection(String url,Long companyId,LongentityId,String systemCode){[/align]
[align=left] String resultUrl=SystemUrls.getBusinessPath(systemCode);[/align]
[align=left] if(PropUtils.isBasicSystem(resultUrl)){[/align]
[align=left] resultUrl = SystemUrls.getSystemUrl("imatrix");[/align]
[align=left] }[/align]
[align=left] log.info(" == systemurl : ["+resultUrl+"] == ");[/align]
[align=left] resultUrl = resultUrl + url+"?companyId="+companyId+"&entityId="+entityId;[/align]
[align=left] log.info(" == restleturl : ["+resultUrl+"] == ");[/align]
[align=left] HttpGet httpget = new HttpGet(resultUrl);[/align]
[align=left] HttpClient httpclient = new DefaultHttpClient();[/align]
[align=left] ResponseHandler<String> responseHandler = newBasicResponseHandler();[/align]
[align=left] try {[/align]
[align=left] httpclient.execute(httpget, responseHandler);[/align]
[align=left] } catch (ClientProtocolException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] httpclient.getConnectionManager().shutdown();[/align]
[align=left] }[/align]
[align=left]/**[/align]
[align=left] * RESTful请求[/align]
[align=left] * @param url[/align]
[align=left] * @param companyId[/align]
[align=left] */[/align]
[align=left] public static void restful(String url,Long companyId,Long entityId,StringsystemCode){[/align]
[align=left] ClientConfig config = new DefaultClientConfig();[/align]
[align=left] Client client = Client.create(config);[/align]
[align=left] String resultUrl = SystemUrls.getSystemUrl(systemCode);[/align]
[align=left] if(PropUtils.isBasicSystem(resultUrl)){[/align]
[align=left] resultUrl = SystemUrls.getSystemUrl("imatrix");[/align]
[align=left] }[/align]
[align=left] log.info(" == systemurl : ["+resultUrl+"] == ");[/align]
[align=left] resultUrl = resultUrl + url;[/align]
[align=left] log.info(" == restleturl : ["+resultUrl+"] == ");[/align]
[align=left] WebResource service = client.resource(resultUrl);[/align]
[align=left] ClientResponse cr = service[/align]
[align=left] .entity("companyId="+companyId+"&entityId="+entityId, MEDIA_TYPE)[/align]
[align=left] .accept(MEDIA_TYPE)[/align]
[align=left] .post(ClientResponse.class);[/align]
if(cr != null) log.info("=========== RESTful execute result : ["+cr.getEntity(String.class)+"]===========
");
[align=left] }[/align]
<
4000
span style="font-family:Calibri;">
相关文章推荐
- 下面介绍下iMatrix平台流程引擎事件处理之流向事件处理分析
- 探讨一下iMatrix平台流程引擎时间处理之子流程事件处理
- 读懂源码系列-FileZilla Server 设计原则分析-socket 事件处理流程(4)
- Android View系统源码分析(一)——概述&触摸事件总体处理流程
- 按键分析--APP部分-- OnTouch事件处理流程
- Qt GUI 通过鼠标事件剖析整个事件处理流程(基于Qt4.5.2源码windows平台)
- android的frameworks层键盘事件处理流程分析
- Launcher桌面点击&长按&拖动事件处理流程分析 .
- BPA业务流程分析平台-炎黄盈动
- (按键)深入分析J2ME平台MIDP低级事件处理机制
- android的frameworks层键盘事件处理流程分析
- Android 事件捕捉和处理流程分析
- 按键分析--APP部分-- OnClickListener事件处理流程
- 驰骋工作流程引擎开发技术:关于退回与撤消的接受人员的工作处理.
- android的frameworks层键盘事件处理流程分析
- Android的frameworks层键盘事件处理流程分析
- 深入分析J2ME平台MIDP低级事件处理机制
- 关于springmvc执行的流程和处理过程分析
- Android中Preference的使用以及监听事件分析处理流程
- 按键分析--APP部分-- OnLongClickListener事件处理流程