今天要介l的是基于web的shark。不知道Z么字体都是斜体。烦性不配图了。本目代码部分源自Geeta Ramani的Struts in Shark?br /> 先来个How toQ?br /> 1. 在jbuilder 2006中新Z个web目Q包含struts最新版的库。我L名字叫TestingShark,路径?br />D:\jproject\TestingShark。可别放中文目录下,不然可能报错?br /> 2.把你安装好的shark打开Q进入lib文g夹,扑ֈ里面所有shark开头的jar文gQ都复制到D:\jproject\TestingShark\TestingShark\WEB-INF\lib中。当Ӟ你也可以把里面所有的jar文g都copyq去Q里面好东西不少Qcommons,axis,xalanQjawe包应有尽有。不要考文件夹Q只用考jar包。统计了
一下shark开头的?3V不要忘记sqlserver?个驱动文件?br /> 3.开始写代码。Action~!
按照昨天说的Qshark要运行v来先要把package是xpdllloadq来。如何在web上实玎ͼ
先看看shark API中的org.enhydra.shark.api.client.wfservice 之Interface PackageAdministration。关于包的所有操作都有了?br /> StrustsinShark目中徏立了一个JSPAdminUtilitiesc,里面有一些封装好的操作?br />package com.xxxx.shark.util.jsp;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import org.enhydra.shark.Shark;
......
import org.enhydra.shark.api.client.wfservice.PackageAdministration;
import org.enhydra.shark.api.client.wfservice.RepositoryMgr;
......
Ҏ String PackageLoad(String xpdlName)
/**
* 取得xpdl文gQxpdl文g必须在Shark服务端的Rs..external目录下,不然p输入路径?br /> *
* @param xpdlName Description of the Parameter
* @return Description of the Return Value
* @exception BaseException Description of the Exception
*/
public String packageLoad(String xpdlName) throws BaseException {
//包实例化需要从shark.getInstance()q入Q这步非常的重要?/p>
PackageAdministration pa = Shark.getInstance().getAdminInterface().getPackageAdministration();
//Z么要用RepositoryMgrQ因取得package id 来验证此包是否已l装载过?br /> RepositoryMgr rm = Shark.getInstance().getRepositoryManager();
String pkgId = rm.getPackageId(xpdlName);
//如果没有装蝲包,׃手吧?br /> if (!pa.isPackageOpened(pkgId)) {
try {
pa.openPackage(xpdlName);
}
catch (Throwable e) {
e.printStackTrace();
throw new BaseException(e);
}
}
return rm.getPackageId(xpdlName);
}
Ҏ boolean packageDownload(String pkgId, String completeFilePath)
/**
* 从数据库中下载XPDL文g到指定目?Table XPDLS and XPDLData)
* @param pkgId id of pkg you want to download
* @param completeFilePath where you want the file downloaded
* @throws BaseException, FileNotFoundException, IOException
*/
public boolean packageDownload(String pkgId, String completeFilePath) throws BaseException, FileNotFoundException, IOException {
PackageAdministration pa = Shark.getInstance().getAdminInterface().getPackageAdministration();
RepositoryMgr rm = Shark.getInstance().getRepositoryManager();
//String pkgId = rm.getPackageId(xpdlName);
//String pkgId = "WellnessDemo";
String currVersion = pa.getCurrentPackageVersion(pkgId);
byte[] contents = pa.getPackageContent(pkgId, currVersion);
//FileOutputStream fos = new FileOutputStream("C:\\xpdls\\WellnessDemo.xpdl");
FileOutputStream fos = new FileOutputStream(completeFilePath);
fos.write(contents);
//return "theXpdl";
FileDescriptor theFd = fos.getFD();
return true;
}
接着昨天的来吧。 昨天说道xpdl文g作ؓpackage的Ş式装载入shark之中。一个xpdl文g中是?br /> 角色(role)来分配Q务的Q如下图所C?br />
安装好了Shark,大家可以先玩一玩Shark的Swing界面。进入Shark的安装目录中的bin文g夹,
q行runAll.bat。立马蟩Z个DosH口Q一个Shark Server,昄的是SharkEngineManager的日志?br />用户登陆后在此窗口可以看到自q操作记录。一个Shark AdminH口,里面昄的信息就不是
那么多了。不这些,在随后出现的Swing登陆界面中输入用户名admin,密码enhydra,rp好的?br />q陆到ȝ面了。rp不好的会出现一个提C-QServer is busy。重新关掉这些窗口,重新
q行runAll.bat吧?br /> q入后先点击Repository managementq个tab,里面有一些xpdl文gQ这些是shark在启动时p?br />的位?Shark-root%\repository\external之中的东东了。想要用自己在jawe中编辑好的流E就点击
下方的upload自己加吧。加入xpdl后进入下一个tabQ-package management。这里面现在什么都没有Q点M方的load按钮Q出现select package对话框,现在里面应该有你加入的xpdl文g了,选中
后再点击对话框中的load。关闭对话框后一个xpdl程囑ְ是一个packageq成功加蝲了。如?img src="http://www.aygfsteel.com/images/blogjava_net/lancelotzx/15347/r_Snap2.jpg" />
里面的id和name都是在jawe中画图时定义的?/p>
随后q入process instantiation management。在左侧的目录树中进入最底层Q出C个process?br />一个是unknownQ很奇怪,但是q个process是不能清除的Q难道是控制程的流E?先不了?br />选中那个你自己定义的程Q点M方的Instantiate按钮Q一条流E就启动了。明天l?br />