﻿<?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-吐泡泡的龙</title><link>http://www.blogjava.net/lancelotzx/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 12:27:17 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 12:27:17 GMT</pubDate><ttl>60</ttl><item><title>我的Shark使用经验(3)</title><link>http://www.blogjava.net/lancelotzx/archive/2006/09/20/70903.html</link><dc:creator>泡泡龙龙</dc:creator><author>泡泡龙龙</author><pubDate>Wed, 20 Sep 2006 13:16:00 GMT</pubDate><guid>http://www.blogjava.net/lancelotzx/archive/2006/09/20/70903.html</guid><wfw:comment>http://www.blogjava.net/lancelotzx/comments/70903.html</wfw:comment><comments>http://www.blogjava.net/lancelotzx/archive/2006/09/20/70903.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/lancelotzx/comments/commentRss/70903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lancelotzx/services/trackbacks/70903.html</trackback:ping><description><![CDATA[
		<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
				<p>      今天要介绍的是基于web的shark。不知道为什么字体都是斜体。索性不配图了。本项目代码部分源自Geeta Ramani的Struts in Shark。<br />      先来个How to：<br />      1. 在jbuilder 2006中新建一个web项目，包含struts最新版的库。我起的名字叫TestingShark,路径在<br />D:\jproject\TestingShark。可别放中文目录下，不然可能报错。<br />      2.把你安装好的shark打开，进入lib文件夹，找到里面所有shark开头的jar文件，都复制到D:\jproject\TestingShark\TestingShark\WEB-INF\lib中。当然，你也可以把里面所有的jar文件都copy过去，里面好东西不少，commons,axis,xalan，jawe包应有尽有。不要考文件夹，只用考jar包。统计了<br />一下shark开头的有53项。不要忘记sqlserver的3个驱动文件。<br />      3.开始写代码。Action~!<br />      按照昨天说的，shark要运行起来先要把package就是xpdl给load进来。如何在web上实现？<br />先看看shark API中的<font size="-1">org.enhydra.shark.api.client.wfservice</font> 之Interface PackageAdministration。关于包的所有操作都有了。<br />     StrustsinShark项目中建立了一个JSPAdminUtilities类，里面有一些封装好的操作。<br />package com.xxxx.shark.util.jsp;</p>
				<p>import java.io.File;<br />import java.io.FileDescriptor;<br />import java.io.FileNotFoundException;<br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.util.Iterator;<br />import java.util.List;<br />import java.util.Map;<br />import java.util.Set;<br />import java.util.Vector;</p>
				<p>import org.enhydra.shark.Shark;<br />......<br />import org.enhydra.shark.api.client.wfservice.PackageAdministration;<br />import org.enhydra.shark.api.client.wfservice.RepositoryMgr;<br />......<br /><strong>方法 String  PackageLoad(String xpdlName) <br /></strong>/**<br />  * 取得xpdl文件，xpdl文件必须在Shark服务端的Rs..external目录下，不然就要输入路径。<br />  *<br />  * @param  xpdlName           Description of the Parameter<br />  * @return                    Description of the Return Value<br />  * @exception  BaseException  Description of the Exception<br />  */<br /> public String packageLoad(String xpdlName) throws BaseException {<br />//包实例化需要从shark.getInstance()进入，这步非常的重要。</p>
				<p>  PackageAdministration pa = Shark.getInstance().getAdminInterface().getPackageAdministration();<br />//为什么要用RepositoryMgr？因为要取得package id 来验证此包是否已经装载过。<br />  RepositoryMgr rm = Shark.getInstance().getRepositoryManager();<br />  String pkgId = rm.getPackageId(xpdlName);<br />//如果没有装载包，就下手吧。<br />  if (!pa.isPackageOpened(pkgId)) {<br />   try {<br />    pa.openPackage(xpdlName);<br />   }<br />   catch (Throwable e) {<br />    e.printStackTrace();<br />    throw new BaseException(e);<br />   }<br />  }<br />  return rm.getPackageId(xpdlName);<br /> }<br /><br /><strong>方法  boolean packageDownload(String pkgId, String completeFilePath)<br /></strong> /**<br />     * 从数据库中下载XPDL文件到指定目录(Table XPDLS and XPDLData)<br />     * @param pkgId id of pkg you want to download<br />     * @param completeFilePath where you want the file downloaded<br />     * @throws BaseException, FileNotFoundException, IOException<br />     */<br /> public boolean packageDownload(String pkgId, String completeFilePath) throws BaseException, FileNotFoundException, IOException {<br />  PackageAdministration pa = Shark.getInstance().getAdminInterface().getPackageAdministration();<br />   RepositoryMgr rm = Shark.getInstance().getRepositoryManager();<br />  //String pkgId = rm.getPackageId(xpdlName);<br />  //String pkgId = "WellnessDemo";<br />  String currVersion = pa.getCurrentPackageVersion(pkgId);<br />  byte[] contents = pa.getPackageContent(pkgId, currVersion);<br />  //FileOutputStream fos = new FileOutputStream("C:\\xpdls\\WellnessDemo.xpdl");<br />  FileOutputStream fos = new FileOutputStream(completeFilePath);<br />  fos.write(contents);<br />  //return "theXpdl";<br />  FileDescriptor theFd = fos.getFD();<br />  return true;<br /> }<br /></p>
		</blockquote>           这段大家自己看看API理解吧。Shark的API是非常方便的。输出使用FileOutputStream。这里<br />在页面上我是这样写的。把一些属性放到map中然后做为request传递。早知道就用packageDownload了。<br />              HashMap[] hm=(HashMap[])request.getAttribute("packages");<br />          for(int i=0;i&lt;hm.length;i++)<br />                           {<br /><br />                         field_1=(String)hm[i].get("packageId");<br />                         field_2=hm[i].get("isPackageOpened").toString();<br />                                        byte[] b= (byte[])hm[i].get("packageContent");<br />                                        FileOutputStream fs = new FileOutputStream("c:\\"+field_1+".xml");<br />                                        fs.write(b);<br />                                        fs.close();<br />                            }<br />             做为xml保存，使用dom来修改，放弃jawe的swing界面，在页面上修改流程。。。这是不得以而<br />为之的办法。<br />      That's all for today~<br /><img src ="http://www.blogjava.net/lancelotzx/aggbug/70903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lancelotzx/" target="_blank">泡泡龙龙</a> 2006-09-20 21:16 <a href="http://www.blogjava.net/lancelotzx/archive/2006/09/20/70903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的Shark使用经验(2)</title><link>http://www.blogjava.net/lancelotzx/archive/2006/09/19/70458.html</link><dc:creator>泡泡龙龙</dc:creator><author>泡泡龙龙</author><pubDate>Tue, 19 Sep 2006 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/lancelotzx/archive/2006/09/19/70458.html</guid><wfw:comment>http://www.blogjava.net/lancelotzx/comments/70458.html</wfw:comment><comments>http://www.blogjava.net/lancelotzx/archive/2006/09/19/70458.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lancelotzx/comments/commentRss/70458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lancelotzx/services/trackbacks/70458.html</trackback:ping><description><![CDATA[
		<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
				<p>      接着昨天的来吧。  昨天说道xpdl文件作为package的形式装载入shark之中。一个xpdl文件中是由<br />  角色(role)来分配任务的，如下图所示<br /><img style="WIDTH: 627px; HEIGHT: 409px" height="740" alt="o_Snap3.jpg" src="http://www.blogjava.net/images/blogjava_net/lancelotzx/15347/o_Snap3.jpg" width="1024" border="0" /></p>这里面有三个角色,报销人，部门经理，财务。<br />        来到shark中，选择user management这个tab,进入第一个sub tab －－Account。在这里添加用户吧，点击下方的"new"按钮，弹出对话框。这里我们只用填写"user name"和"password"项即可。"group<br />name"项若填写，就是新建一个group,用户作为一个group user存在。若不填写，用户仅做为一个single<br />user存在。(group是存放用户的集合，在用户和角色的映射中可以直接当作用户来映射，相当于把<br />集合中的全部用户都映射到同一角色。)<br />         说到映射，shark是相当灵活的。点击user management中的第三个sub tab －－Mapping。现在里面什么都没有。点击下方的"Add"按钮。弹出一个对话框。左侧的是"Role List",右侧是"User List"。当然，我们先要把package加载进去后，角色列表才出的来哦。User List中有我们刚才加入的用户。如果刚才创建了group的话，group也做为一个user存在。选择一个角色和用户，点击下方的"Apply"按钮，就成功创建了一条映射。我们可以把一个角色映射到多个用户上(等效于映射到一个group上，用户很多的时候就创建group吧。)。也可以把多个角色映射到一个用户上。完成后关闭对话框。现在Mapping这个tab中就有我们刚才添加的映射了。<br />      最后我们来到Worklist management这个tab。在select user这个下拉框中选择第一步的role对应的角色。不好表述，就是做第一条流程的用户了。选中后就出现一条待办工作。如下图<br /><img style="WIDTH: 607px; HEIGHT: 339px" height="668" alt="o_Snap4.jpg" src="http://www.blogjava.net/images/blogjava_net/lancelotzx/15347/o_Snap4.jpg" width="974" border="0" /><br />       <br />         Oh yeah!我们还是先用这个用户登陆吧。来到这个tab,当点选前方checkbox后，用户的worklist状态就由open.not_start.not_running改变成为running了。后面的计时器(Duration)也开始计时。点击下方的"update variable(s)"来完成表单，最后点击"Complete"提交。一件待办工作就完成了，下个用户再登陆重复这个步骤即可。<br />        这个界面还有个"Reassign"按钮，相当于"公文转发"，把自己手上的事情交给另一个用户来办。<br />只要不点击"complete",一个步骤可以反复assign到多个用户，当然，这些用户必须先映射到相同的role<br />上才行。细节就不多说了，大家自己试试吧。<br />      swing界面比较简陋，但是基本功能都有，明天我们来构建web系统。<br /><br /><br />   为什么都是斜体字？谁能告诉我？？</blockquote>
<img src ="http://www.blogjava.net/lancelotzx/aggbug/70458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lancelotzx/" target="_blank">泡泡龙龙</a> 2006-09-19 11:12 <a href="http://www.blogjava.net/lancelotzx/archive/2006/09/19/70458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的Shark使用经验(1)</title><link>http://www.blogjava.net/lancelotzx/archive/2006/09/18/70402.html</link><dc:creator>泡泡龙龙</dc:creator><author>泡泡龙龙</author><pubDate>Mon, 18 Sep 2006 14:43:00 GMT</pubDate><guid>http://www.blogjava.net/lancelotzx/archive/2006/09/18/70402.html</guid><wfw:comment>http://www.blogjava.net/lancelotzx/comments/70402.html</wfw:comment><comments>http://www.blogjava.net/lancelotzx/archive/2006/09/18/70402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lancelotzx/comments/commentRss/70402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lancelotzx/services/trackbacks/70402.html</trackback:ping><description><![CDATA[
		<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
				<p dir="ltr" style="MARGIN-RIGHT: 0px">      安装好了Shark,大家可以先玩一玩Shark的Swing界面。进入Shark的安装目录中的bin文件夹，<br />运行runAll.bat。立马跳出两个Dos窗口，一个Shark Server,显示的是SharkEngineManager的日志。<br />用户登陆后在此窗口可以看到自己的操作记录。一个Shark Admin窗口,里面显示的信息就不是<br />那么多了。不管这些，在随后出现的Swing登陆界面中输入用户名admin,密码enhydra,rp好的话<br />就登陆到主界面了。rp不好的会出现一个提示－－Server is busy<img height="20" src="http://www.blogjava.net/Emoticons/QQ/nugget.gif" width="20" border="0" />。重新关掉这些窗口，重新<br />运行runAll.bat吧。<br />      进入后先点击Repository management这个tab,里面有一些xpdl文件，这些是shark在启动时就装载<br />的位于%Shark-root%\repository\external之中的东东了。想要使用自己在jawe中编辑好的流程就点击<br />下方的upload自己加吧。加入xpdl后进入下一个tab－－package management。这里面现在什么都没有，点击下方的load按钮，出现select package对话框，现在里面应该有你加入的xpdl文件了，选中<br />后再点击对话框中的load。关闭对话框后一个xpdl流程图就是一个package就算成功加载了。如图<img src="http://www.blogjava.net/images/blogjava_net/lancelotzx/15347/r_Snap2.jpg" /><br />里面的id和name都是在jawe中画图时定义的。</p>
				<p dir="ltr" style="MARGIN-RIGHT: 0px">   随后进入process instantiation management。在左侧的目录树中进入最底层，出现两个process。<br />一个是unknown，很奇怪，但是这个process是不能清除的，难道是控制流程的流程？先不管了。<br />选中那个你自己定义的流程，点击下方的Instantiate按钮，一条流程就启动了。明天继续。<br />     <br /></p>
		</blockquote>
<img src ="http://www.blogjava.net/lancelotzx/aggbug/70402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lancelotzx/" target="_blank">泡泡龙龙</a> 2006-09-18 22:43 <a href="http://www.blogjava.net/lancelotzx/archive/2006/09/18/70402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Enhydra Shark的安装和配置</title><link>http://www.blogjava.net/lancelotzx/archive/2006/09/14/69753.html</link><dc:creator>泡泡龙龙</dc:creator><author>泡泡龙龙</author><pubDate>Thu, 14 Sep 2006 12:47:00 GMT</pubDate><guid>http://www.blogjava.net/lancelotzx/archive/2006/09/14/69753.html</guid><wfw:comment>http://www.blogjava.net/lancelotzx/comments/69753.html</wfw:comment><comments>http://www.blogjava.net/lancelotzx/archive/2006/09/14/69753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lancelotzx/comments/commentRss/69753.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lancelotzx/services/trackbacks/69753.html</trackback:ping><description><![CDATA[
		<ol>
				<li dir="ltr">下载shark<br />在<a href="http://shark.objectweb.org/">http://shark.objectweb.org/</a> 下载shark的源码和安装程序。（我下载的是shark1.0.1,现在已有shark1.1）</li>
				<li dir="ltr">安装shark<br />直接点击shark-1.0-1.setup.exe。假设安装到D:\Shark-1.0。</li>
				<li dir="ltr">与数据的连接（以sqlserver2000为例）<br />(1) 将数据库的驱动程序包拷贝到D:\Shark-1.0\lib\contrib下<br />(2) 修改安装目录下的configure.properties<br /> 修改下列值：<br /> db_loader_job=msql<br /> db_user=sa<br /> db_passwd=你的数据库密码<br /> db_ext_dirs=数据库的驱动程序包目录即D:/Shark-1.1/lib/contrib.<br />(3) 修改安装目录下的configure.xml<br />将文件中所有的hsql替换为msql,就可以了。还有其他的方法，我感觉这种方法简单<br />(4) 建立数据名为shark的空数据库<br />(5) 运行configure.bat<br />到此shark和sqlserver的连接配置完毕，按doc下QuickStartExample文档说明，运行例子，在数据库就可看到数据。</li>
		</ol>
<img src ="http://www.blogjava.net/lancelotzx/aggbug/69753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lancelotzx/" target="_blank">泡泡龙龙</a> 2006-09-14 20:47 <a href="http://www.blogjava.net/lancelotzx/archive/2006/09/14/69753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>