当前位置: 首页 > news >正文

如果制作个人网站摄影学习网站

如果制作个人网站,摄影学习网站,中英文网站开发,网站建设流程知乎activiti脚本任务脚本任务可能是Activiti代码库中“最古老的”类之一#xff0c;但是我认为它仍然未被许多人使用。 #xff08;感知到的#xff09;缺点当然是性能#xff08;解释还是编译#xff09;#xff0c;并且从IDE角度来看支持较少。 但是#xff0c;好处但是我认为它仍然未被许多人使用。 感知到的缺点当然是性能解释还是编译并且从IDE角度来看支持较少。 但是好处imo超过了这一点 脚本在流程xml本身中定义。 不再担心版本控制和类路径上的库问题。 过去我们看到的是技术水平较低的人敢于尝试脚本。 但是从来没有Java。 无论如何很少有人知道或已经意识到您可以在Activiti中的脚本中做得非常出色并可以提高工作效率。 由于此类脚本是在流程引擎中执行的因此您可以访问该引擎的所有功能。 是的...一切...这使其既非常强大又潜在危险如果您不知道自己在做什么。 让我为您讲解这样的例子。 我喜欢将其称为“自定义配置注入”概念 因为它有效地允许您在运行时添加自定义逻辑从而显着改变流程的执行。 如果您的名字更酷请告诉我。 所有代码都可以在我的Github页面上找到 https : //github.com/jbarrez/activiti-advanced-scripting 用例 现在我想做什么。 好吧我想有一个流程执行时 向执行的每个用户任务添加“任务完成事件处理程序” 此事件处理程序必须向远程URL触发自定义事件在该URL上可能有事件处理器正在执行其工作 因此基本上我们希望每当任务完成时就将自定义事件触发到某个远程URL。 一个很好的用例是商业智能报告/复杂事件处理例如使用Esper之类的东西。 第一个版本 可以在https://github.com/jbarrez/activit-advanced-scripting/blob/master/src/test/resources/org/activiti/test/my-process.bpmn20.xml中找到该功能的第一版 。 执行此过程时将发生以下情况 var config Context.getProcessEngineConfiguration(); var bpmnParser config.getBpmnParser(); 我们只需获取当前的ProcessEngineConfiguration实例。 我们将从此配置中获取BpmnParser实例因为我们想更改整个引擎的常规用户任务解析。 接下来我们构建脚本 var script ; script script importPackage(java.net);; script script importPackage(java.io);; script script var url new URL(http://localhost:8182/echo);; script script var connection url.openConnection();; script script connection.setRequestMethod(POST);; script script connection.setDoOutput(true);; script script var outputStream new BufferedOutputStream(connection.getOutputStream());; script script outputStream.write(new java.lang.String(\{eventType:task-complete}\).bytes);; script script outputStream.flush();; script script connection.connect();; script script var respCode connection.getResponseCode();; script script if (respCode ! 200) ; script script println(Response code : respCode);; script script outputStream.close();; script script connection.disconnect();; 显然这不是执行此操作的最有效方法但可以肯定地说明发生了什么。 消息eventTypetask-complete通过标准java.net和java.io类发送到localhost8182 url。 接下来是棘手的部分 var handler new ExecuteScriptOnTaskCompleteBpmnParseHandler(JavaScript); handler.setUserTaskCompleteScript(script); bpmnParser.getBpmnParserHandlers().addHandler(handler);// reset the deployment cache such that the new listener gets picked up on a new redeploy config.getProcessDefinitionCache().clear(); 在这里我们将BpmnParseHandler类添加到引擎配置中。 解析处理程序会将上面定义的脚本的执行添加到引擎发出的“任务完成事件”的每次接收中。 每次对用户任务进行解析时该解析处理程序都会启动从而有效地将我们的“将事件发送到远程服务”添加到您的Activiti环境中现在发生的每个用户任务中 有一个单元测试以了解其工作原理 https : //github.com/jbarrez/activiti-advanced-scripting/blob/master/src/test/java/org/activiti/test/ExecuteScriptInProcessTest.java 。 在测试中我们设置了一个非常简单的“回显服务”只要接收到这样的事件它就会简单地打印出来。 如果在IDE中运行它将会看到类似以下内容 但是我们可以做得更好 但是我们可以做得更好。 检查以下代码。 var handler new ExecuteScriptOnTaskCompleteBpmnParseHandler(JavaScript); handler.setUserTaskCompleteScript(http://localhost:8182/scripts/task-complete.js); handler.setExecuteScriptInJob(true); bpmnParser.getBpmnParserHandlers().addHandler(handler);// Update the configuration to use the correct job handler var jobHandler new ExecuteScriptJobHandler(); config.getJobHandlers().put(jobHandler.type,jobHandler); 该代码与上一节中的代码相同。 为每个用户任务附加一个“完成”事件的侦听器。 但是此实现 异步执行脚本 没有在流程xml中定义脚本但是它是从远程URL获取的 更新作业处理程序配置 如果您问我那太棒了 因此这意味着向远程服务实际发送消息不会影响流程实例的执行性能 。 显然从这里您可以发疯添加持久队列和所有奇特功能。 最重要的是总是从远程服务器获取脚本。 如果要更新执行的逻辑只需更改返回的脚本。 这意味着您可以在不影响实际流程的情况下影响运行时的流程执行。 在https://github.com/jbarrez/activiti-advanced-scripting/blob/master/src/test/java/org/activiti/test/ExecuteScriptWithJobTest.java有一个单元测试 如果运行此测试则会看到以下内容。 请注意我们在测试服务器上将完成脚本托管为名为“ task-complete.js”的静态文件。 在测试中您可以看到我们必须专门执行异步作业才能查看测试的输出。 警告 需要注意的是当流程引擎重新启动时将从配置文件中重新加载配置。 因此不添加从上方插入自定义逻辑的过程。 但是这可以通过使用ProcessEngineLifeCycleListener实现轻松完成该实现在引擎启动后执行特定类别的流程定义。 例如如果将所有这些进程的“ config-processes”都设为类别则可以在启动时轻松执行它们。 结论 BPMN 2.0流程中的脚本编写是一项非常强大的功能。 它使您可以在几行之内更改整个引擎的流程执行。 当然以上所有代码都可以使用Java完成。 但是以上示例仅使用标准BPMN 2.0和每次JDK安装中捆绑的javascript引擎。 谢谢阅读。 编码愉快 参考 Activiti中的高级脚本 JCG合作伙伴 Joram Barrez在小脚步博客上的自定义配置注入 。 翻译自: https://www.javacodegeeks.com/2013/07/advanced-scripting-in-activiti-custom-configuration-injection.htmlactiviti脚本任务
http://www.zqtcl.cn/news/678721/

相关文章:

  • 网站开发行业标准江苏网站开发公司
  • 服装技术支持东莞网站建设如何加强企业网站建设论文
  • 中英双语网站怎么做深圳勘察设计协会
  • 用dw做网站维护教程梧州网站建设制作
  • 网站代运营公司有哪些深圳小区封闭最新通知
  • 江西网站设计服务网站开发所需费用明细
  • 深圳网站建设公司jm3q编程网站免费中文版
  • 泉州专门制作网站如何在小红书上做推广
  • 网站改版活动微网站开发一般费用多少钱
  • 网站关键词挖掘顺德网站制作案例价位
  • 广广东网站建设企业网站无锡
  • 广州网站备案号wordpress模板专题页
  • 西安做网站哪里价格低综合查询
  • 电商需要多少投入沈阳网站关键词优化
  • 速拓科技是做网站百度推广登陆入口官网
  • 十大高端网站设计网站开发培训达内
  • 河北云网站建设怎么让别人找你做网站
  • 怎么自己在电脑上做网站网络服务有哪些与对生活的影响
  • asp网站采集和平东路网站建设
  • 深圳市 交易建设中心网站越南的网站建设
  • 微网站建设方式构建网站系统
  • 优秀网站的要素有公司名字寓意好的字
  • 学习型网站空间网站模板免费下载酒店管理系统
  • icp备案网站用不了备案期间关闭网站
  • 上海电子门户网站建设数据公司签约网站
  • 北京品牌高端网站建设公司天津最好的网站建设公司
  • 网站开发中文摘要当今做啥网站致富
  • 钓鱼网站制作方法WordPress音乐免刷新
  • 北京网站建设的公网站订票策划方案
  • 做搜狗网站快速排名福田瑞沃自卸车