您的位置:首页 > 编程语言 > Java开发

关于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;">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息