﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-spark的自留地(ofbiz/eclipse rcp/shark/opentaps)-随笔分类-shark</title><link>http://www.blogjava.net/hispark/category/35142.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 17 Nov 2008 10:37:52 GMT</lastBuildDate><pubDate>Mon, 17 Nov 2008 10:37:52 GMT</pubDate><ttl>60</ttl><item><title>结合OA业务需要,设计一个简单够用的工作流系统(三) </title><link>http://www.blogjava.net/hispark/archive/2008/11/17/240949.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Mon, 17 Nov 2008 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/11/17/240949.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/240949.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/11/17/240949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/240949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/240949.html</trackback:ping><description><![CDATA[放一些屏幕截图来看图说话吧<br />
<br />
流程设计界面<br />
左边下拉框放至了我所有允许定义流程的业务对象类型,可通过底部的"新增"\"修改"\"删除"等操作进行维护.点击已定义的流程可以查看对应的流程设置<br />
<br />
<img height="500" alt="审批流设置界面" src="http://www.blogjava.net/images/blogjava_net/hispark/process1.JPG" width="700" border="0" /><br />
<br />
新增流程界面<br />
新增时可为该流程设置相关启用条件,优先级别及审批步骤等<br />
<br />
<img height="379" alt="新增流程" src="http://www.blogjava.net/images/blogjava_net/hispark/process2.JPG" width="414" border="0" /><br />
<br />
审批人的待办工作台,可以这里统一处理各类待办业务:<br />
<br />
<img height="250" alt="待办工作" src="http://www.blogjava.net/images/blogjava_net/hispark/process3.JPG" width="700" border="0" /><br />
<br />
待办业务的查看界面:<br />
<img height="735" alt="待办业务界面" src="http://www.blogjava.net/images/blogjava_net/hispark/process4.JPG" width="681" border="0" /><br />
<br />
审批流转界面(以通过为例)<br />
<img height="524" alt="通过界面" src="http://www.blogjava.net/images/blogjava_net/hispark/process5.JPG" width="541" border="0" /> 
<img src ="http://www.blogjava.net/hispark/aggbug/240949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-11-17 13:55 <a href="http://www.blogjava.net/hispark/archive/2008/11/17/240949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>结合OA业务需要,设计一个简单够用的工作流系统(二) </title><link>http://www.blogjava.net/hispark/archive/2008/11/08/239384.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Sat, 08 Nov 2008 13:53:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/11/08/239384.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/239384.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/11/08/239384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/239384.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/239384.html</trackback:ping><description><![CDATA[下面给出UML图供大家参考:<br />
<br />
<img height="342" alt="工作流UML" src="http://www.blogjava.net/images/blogjava_net/hispark/workflow.gif" width="741" border="0" /><br />
<br />
其中:<br />
流程类型、流程、活动、流转条件、外部应用为设计时对象，用于描述流程规则<br />
流程实例、活动实例、活动记录为运行时对象，用于记录实际发生的流程运行状况<br />
<br />
需要解决的问题是，如何将我们的应用与此工作流引擎进行结合？我的解决方法是：<br />
1、流程类型约定业务对象类型（即此流程可以与哪种业务对象关联）<br />
2、业务对象中的属性或其组合可以定义为流转条件（即实现业务对象信息影响工作流流转）<br />
3、活动执行者可以选择业务系统的组织机构、角色、人员定义（我是通过接口方式进行约定，IOC注入）<br />
4、活动可调用已定义的应用（可多个）<br />
5、业务对象可以通过报批动作启动工作流实例，之后由工作流按照设计信息与业务信息进行自动流转或全程提供表单与审批按钮支持。<br />
<br />
由于此工作流系统是出于简化的目的进行设计的，设计时与运行时信息我都使用数据库信息来表示，设计器也未提供拖拉界面来进行设计，而是采用顺序定义的方式来操作。在实际运作过程中，我觉得它可以满足一般规模不大（文职人员100人左右）的企业的OA应用。<br />
<br />
本人原创文章，欢迎转载，转载请注明出处！<br />
<img src ="http://www.blogjava.net/hispark/aggbug/239384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-11-08 21:53 <a href="http://www.blogjava.net/hispark/archive/2008/11/08/239384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>结合OA业务需要,设计一个简单够用的工作流系统(一)</title><link>http://www.blogjava.net/hispark/archive/2008/11/04/238632.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Tue, 04 Nov 2008 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/11/04/238632.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/238632.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/11/04/238632.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/238632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/238632.html</trackback:ping><description><![CDATA[<p>工作流引擎产品无论国内或国外都有不少成熟之作，开源的工作流产品也有诸如shark之类的精品。但工作流产品做为一个独立的中间件，无论是其本身或通过它进行流程设计及与你自己的系统整合，对很多使用过工作流产品的开发人员来说都是一件不容易的事。特别是在一些其实只是一些很简单的流程控制应用需要时，我们是否需要一个独立的工作流产品来运作呢？<br />
<br />
也许你可以尝试自己做一个工作流组件？听起来好象有点儿难，但其实并不是一件很恐怖的工作。让我们先从通常会使用到工作流引擎的情景分析下我们需要什么？<br />
<br />
情景：某公司需要对员工请假进行管理，员工请假需进行系统填写申请，如果请假天数&lt;=1天，可以部门主管批准。如果请假天数&gt;1天，需由部门主管-&gt;副总经理进行再行批复。批准后的请假自动记入考勤系统。<br />
<br />
从这个简单的业务需求，我们进行分析它的需求：<br />
1、工作流程的选择是由业务信息（请假单）相关联的，工作流独立存在是无意义的。<br />
2、业务信息中的内容会决定流程的选择与流向。如：请假天数，或是主管的批复意见<br />
3、工作流程的流转与组织结构、角色、员工相关。<br />
4、工作流程通常会调用相关业务应用（记入考勤）来完成多应用系统之间的协作。<br />
<br />
结合以上需求，我们定义出工作流系统所需功能与数据：<br />
1、流程定义工具（负责生成工作流引擎能明白的流程控制信息），对应于XPDL<br />
2、工作流控制变量定义（即用于控制流程流转的控制量，如请假天数与各级审批意见，可由系统根据流程实体信息自动注入至工作流引擎）<br />
3、工作流相关数据，即与业务过程相关的数据，如：业务表单、组织结构、角色、员工等<br />
4、工作流引擎，负责解释流程定义，创建过程实例并控制其执行，并可能提供相关的监控界面以保障工作流的正确运转。<br />
5、外部应用，可由工作流引擎进行调用完成多个业务系统的流程衔接。这通常是工作流引擎的最大亮点。<br />
<br />
未完待续&gt;&gt;<br />
<br />
本人原创文章，欢迎转载，转载请注明出处！</p>
<img src ="http://www.blogjava.net/hispark/aggbug/238632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-11-04 16:34 <a href="http://www.blogjava.net/hispark/archive/2008/11/04/238632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何集成shark工作流到你自己的业务系统</title><link>http://www.blogjava.net/hispark/archive/2008/10/12/233862.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Sun, 12 Oct 2008 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/12/233862.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/233862.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/12/233862.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/233862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/233862.html</trackback:ping><description><![CDATA[<p>好久没有去看shark项目的进展了，说起来有些惭愧上次去enhydra.org网站应该还是四年前的事情了，shark 1.x版本一直觉得够用了，也就不再留意它的进展了。也一直未做过什么对外的文档与代码贡献，鄙视一下。今天来看看网站上对shark的描述，提些自己的看法与应用认识。</p>
<p>Shark与JaWE是Enhydra基于LGPL授权协议下提供的一组开源工作流软件。打个比方就类似于JasperReport与iReport的两者的关系。Shark提供完整的工作流引擎，JaWE是一个工作流程设计器与调试环境。</p>
<p>以我使用的经验来说，Shark是一个严格遵守WFMC标准的，使用XPDL语言进行描述的引擎。Shark可以应用在多种J2EE容器下支持会话Bean与Corba方式调用及WEB服务调用。</p>
<p>初学者很容易被这些开源项目中大量的概念与术语吓住，基本上都是死在第一步上的，无法入手。以我的经验来说，先了解WFMC标准与XPDL语言标签的含义，你有个基本的概念头认识后，然后用JaWE模仿示例做几个你常用的小流程，调试跑起来，你立即就会被它吸引上而不断去尝试它博大精深的内容。</p>
<p>当然，很多人又会跳出来说Shark不好，它是基于自己的框架开发的，并未使用struts/spring+hibernate这些更大众化的框架来做，它有自己的DODS等技术，学习曲线与成本很高。好象OFBiz不被大家接收也是这个原因（它有自己的OR技术与Framework）关于这点我的看法是，如果你是应付一些简单项目业务需求，是无需套用象OFBiz或Shark这些面向企业业务应用的框架，这叫用高射炮打蚊子。简单的信息CRUD自己随便找个框架或是原来的代码拷贝修改一下就可以了。不要天天比较说这个业务框架不好，那个技术不够开放。要知道这些项目都是这些开源组织多年持续坚持不断积累的沉淀，那时哪有这么多成熟的技术框架呀？而且我觉得客户或是作为技术负责人来说，只有最适合的，没有说一定要什么技术框架？啥叫主流？啥叫未来方向？扯淡多过实际，再过两三年现在所谓的主流框架还真的是主流吗？</p>
<p>shark在不同的人手中应该是可以有不同的用法，我是把它独立做为一个组件来应用的，使用需要用到工作流程驱动的应用我会使用到它。通过JaWE根据业务需求设计XPDL文件存放至资源库中，把流程结束点需触发的应用做成外部应用在工作流程中加以定义（支持Beanshell/WebService多种方式），类似于JspClient的示例方式在你自己的页面中提供待办事宜、工作申报、审批等操作。当然最主要的集成工作就是组织结构与权限的融合。这样你的业务系统就可以同shark全面融合了。最棒的情况下就是多个业务系统通过shark的同一实例串接起来，实现不同业务系统的工作衔接。</p>
<p>说得有些粗糙，可能文笔比较差，也不知别人是否能明白。以后有机会再就某个主题来说吧。</p>
<p>本人原创文章，欢迎转载，转载请注明出处！</p>
<p><br />
&nbsp;</p>
 <img src ="http://www.blogjava.net/hispark/aggbug/233862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-12 13:40 <a href="http://www.blogjava.net/hispark/archive/2008/10/12/233862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>