强大的工作流引掣:shark

使用jawe后,一直在寻求一个好的工作流引掣,几个月过后shark终于浮出水面。真是令人兴奋!

发布的1.0版本的持久化存储稍有点问题,取消持久化存储后可以正常运行。

如果想解决持久化问题,可以从CVS上获取最新版本。

下面是我做的资源文件(对应于CVS版本,发布的shark1.0应该也可以用。)

# @(#)WorkflowClient.properties
#
# Resource strings for SharkClient

WorkflowAdminTitle=Shark管理员应用
WorklistHandlerTitle=Shark工作列表处理者应用

RefreshingRateInSecondsForWorkflowAdmin=100
RefreshingRateInSecondsForWorklistHandler=100

AddImage=org/webdocwf/util/workflowclient/resources/addpoint.gif
DefineImage=org/webdocwf/util/workflowclient/resources/define.gif
WaitImage=org/webdocwf/util/workflowclient/resources/wait.gif
worklisthandlerIcon=org/webdocwf/util/workflowclient/resources/worklisthandlericon.gif
worklisthandlerLogo=org/webdocwf/util/workflowclient/resources/worklisthandlerlogo.gif
workflowadminIcon=org/webdocwf/util/workflowclient/resources/workflowadminicon.gif
workflowadminLogo=org/webdocwf/util/workflowclient/resources/workflowadminlogo.gif

CancelImage=org/webdocwf/util/workflowclient/resources/cancel.gif
CancelLabel=取消

WorkflowObjectPropertiesImage=org/webdocwf/util/workflowclient/resources/properties.gif
WorkflowObjectPropertiesLabel=属性
WorkflowObjectPropertiesMnemonic=r
WorkflowObjectPropertiesAccel=CTRL-R

OKImage=org/webdocwf/util/workflowclient/resources/ok.gif
OKLabel=确定

VariableDescriptionLabel=描述
VariableDescriptionImage=org/webdocwf/util/workflowclient/resources/edit.gif
VariableDescriptionTooltip=显示选择变量的描述


openedpackagesTreeImage=org/webdocwf/util/workflowclient/resources/openedpackagestree.gif
packageTreeImage=org/webdocwf/util/workflowclient/resources/packagetree.gif
managerTreeImage=org/webdocwf/util/workflowclient/resources/managertree.gif
processTreeImage=org/webdocwf/util/workflowclient/resources/processtree.gif

#***************** main admin menubar
adminmainmenubar=file connection refreshing

#***************** main worklisthandler menubar
worklisthandlermainmenubar=file connection2 refreshing

# file Menu definition
#
# Each of the strings that follow form a key to be
# used as the basis of a menu item definition.
#
file=Exit
fileLabel=文件
fileMnemonic=f
ExitLabel=退出
ExitMnemonic=x
ExitAccel=ALT-X
ExitImage=org/webdocwf/util/workflowclient/resources/stop.gif

# connection Menu definition
#
# Each of the strings that follow form a key to be
# used as the basis of a menu item definition.
#
connection=Connect Disconnect - ShutdownEngine
connectionLabel=连接
connectionMnemonic=C
ConnectLabel=连接
ConnectMnemonic=c
ConnectAccel=CTRL-C
ConnectImage=org/webdocwf/util/workflowclient/resources/connect.gif
DisconnectLabel=断开
DisconnectMnemonic=d
DisconnectAccel=CTRL-D
DisconnectImage=org/webdocwf/util/workflowclient/resources/disconnect.gif
ShutdownEngineLabel=关闭引掣
ShutdownEngineMnemonic=h
ShutdownEngineAccel=CTRL-H
ShutdownEngineImage=org/webdocwf/util/workflowclient/resources/shutdownengine.gif

# connection2 Menu definition
#
# Each of the strings that follow form a key to be
# used as the basis of a menu item definition.
#
connection2=Connect Disconnect
connection2Label=连接
connection2Mnemonic=C

# refreshing Menu definition
#
# Each of the strings that follow form a key to be
# used as the basis of a menu item definition.
#
refreshing=Refresh - SetRefreshingRate
refreshingLabel=刷新
refreshingMnemonic=r
RefreshLabel=刷新
RefreshMnemonic=r
RefreshAccel=CTRL-R
RefreshImage=org/webdocwf/util/workflowclient/resources/refresh.gif

SetRefreshingRateLabel=设置刷新率
SetRefreshingRateMnemonic=t
SetRefreshingRateAccel=CTRL-T
SetRefreshingRateImage=org/webdocwf/util/workflowclient/resources/refreshingrate.gif

#
# processviewertoolbar definition
#
ProcessViewerToolbar=ActualSize ZoomIn ZoomOut - UpdateView - ViewBlock
ProcessViewerToolbarLabel=查看
ProcessViewerToolbarImage=org/webdocwf/util/workflowclient/resources/viewtoolbar.gif

ActualSizeLabel=实际大小
ActualSizeImage=org/webdocwf/util/workflowclient/resources/actualsize.gif
ActualSizeTooltip=实际大小
ZoomInLabel=放大
ZoomInImage=org/webdocwf/util/workflowclient/resources/zoomin.gif
ZoomInTooltip=缩小
ZoomOutLabel=放大
ZoomOutImage=org/webdocwf/util/workflowclient/resources/zoomout.gif
ZoomOutTooltip=缩小
UpdateViewLabel=更新视图
UpdateViewImage=org/webdocwf/util/workflowclient/resources/updateview.gif
UpdateViewTooltip=更新视图
ViewBlockLabel=查看块
ViewBlockImage=org/webdocwf/util/workflowclient/resources/block.gif
ViewBlockTooltip=查看选中的块活动

#
# repositorymanagementbuttons definition
#
RepositoryManagementButtons=UploadPackage - DeletePackage

UploadPackageLabel=上传
UploadPackageImage=org/webdocwf/util/workflowclient/resources/open.gif
UploadPackageTooltip=上传包到引掣库
DeletePackageLabel=删除
DeletePackageImage=org/webdocwf/util/workflowclient/resources/delete.gif
DeletePackageTooltip=从引掣库中删除选中包

#
# packagemanagementbuttons definition
#
PackageManagementButtons=LoadPackage UnloadPackage - UpdatePackage

LoadPackageLabel=载入
LoadPackageImage=org/webdocwf/util/workflowclient/resources/open.gif
LoadPackageTooltip=载入包到引掣
UnloadPackageLabel=卸载
UnloadPackageImage=org/webdocwf/util/workflowclient/resources/delete.gif
UnloadPackageTooltip=从引掣中卸载指定包
UpdatePackageLabel=更新
UpdatePackageImage=org/webdocwf/util/workflowclient/resources/update.gif
UpdatePackageTooltip=更新选择中的包
ChangePackageLabel=改变包
#
# processinstantiationbuttons definition
#
ProcessInstantiationManagementButtons=InstantiateProcess - ViewProcess ProcessDescription - ChangeProcessDefinition

InstantiateProcessLabel=初始化
InstantiateProcessImage=org/webdocwf/util/workflowclient/resources/new.gif
InstantiateProcessTooltip=根据过程的定义进行初始

ViewProcessLabel=查看
ViewProcessImage=org/webdocwf/util/workflowclient/resources/view.gif
ViewProcessTooltip=查看选择过程

ProcessDescriptionLabel=描述
ProcessDescriptionImage=org/webdocwf/util/workflowclient/resources/edit.gif
ProcessDescriptionTooltip=显示选中过程定义的描述

ChangeProcessDefinitionLabel=改变定义
ChangeProcessDefinitionImage=org/webdocwf/util/workflowclient/resources/changeprocessdefinition.gif
ChangeProcessDefinitionTooltip=改变并更新选中过程的定义

EnableDefinitionLabel=激活
EnableDefinitionImage=org/webdocwf/util/workflowclient/resources/unlock.gif
EnableDefinitionTooltip=激活选中过程定义的初始

DisableDefinitionLabel=禁止
DisableDefinitionImage=org/webdocwf/util/workflowclient/resources/lock.gif
DisableDefinitionTooltip=禁止选中过程定义的初始


#
# processmonitorbuttons definition
#
ProcessMonitorButtons=SuspendProcess ResumeProcess TerminateProcess AbortProcess - - - ProcessDescription - ProcessVariables - ActivityManagement

SuspendProcessLabel=挂起
SuspendProcessImage=org/webdocwf/util/workflowclient/resources/suspend.gif
SuspendProcessTooltip=挂起选中的过程

ResumeProcessLabel=唤起
ResumeProcessImage=org/webdocwf/util/workflowclient/resources/resume.gif
ResumeProcessTooltip=唤起选中的过程

TerminateProcessLabel=终止
TerminateProcessImage=org/webdocwf/util/workflowclient/resources/terminate.gif
TerminateProcessTooltip=停止选中的过程

AbortProcessLabel=中止
AbortProcessImage=org/webdocwf/util/workflowclient/resources/delete.gif
AbortProcessTooltip=中止选中的过程

ShowHistoryLabel=显示历史
ShowHistoryImage=org/webdocwf/util/workflowclient/resources/showhistory.gif
ShowHistoryTooltip=显示选中过程的历史事情

ProcessVariablesLabel=变量
ProcessVariablesImage=org/webdocwf/util/workflowclient/resources/updatevariables.gif
ProcessVariablesTooltip=更新过程变量

ActivityManagementLabel=活动管理
ActivityManagementImage=org/webdocwf/util/workflowclient/resources/properties.gif
ActivityManagementTooltip=管理活动状态


#
# manageactivitiesbuttons definition
#
ManageActivitiesButtons=SuspendActivity ResumeActivity TerminateActivity AbortActivity ManuallyStartActivity

SuspendActivityLabel=挂起
SuspendActivityImage=org/webdocwf/util/workflowclient/resources/suspend.gif
SuspendActivityTooltip=挂起选中的活动

ResumeActivityLabel=唤起
ResumeActivityImage=org/webdocwf/util/workflowclient/resources/resume.gif
ResumeActivityTooltip=唤起选中的活动

TerminateActivityLabel=终止
TerminateActivityImage=org/webdocwf/util/workflowclient/resources/delete.gif
TerminateActivityTooltip=终止选中的活动

AbortActivityLabel=中止
AbortActivityImage=org/webdocwf/util/workflowclient/resources/delete.gif
AbortActivityTooltip=中止选中的活动

ManuallyStartActivityLabel=人工启动
ManuallyStartActivityImage=org/webdocwf/util/workflowclient/resources/start.gif
ManuallyStartActivityTooltip=人工方式启动指定活动

#
# useraccountbuttons definition
#
UserAccountManagementButtons=CreateUserAccount RemoveUserAccount ChangeUserAccountSettings ChangeUserAccountPassword

CreateUserAccountLabel=新
CreateUserAccountImage=org/webdocwf/util/workflowclient/resources/new.gif
CreateUserAccountTooltip=创建新用户帐号

RemoveUserAccountLabel=删除
RemoveUserAccountImage=org/webdocwf/util/workflowclient/resources/delete.gif
RemoveUserAccountTooltip=删除选中用户

ChangeUserAccountSettingsLabel=设置
ChangeUserAccountSettingsImage=org/webdocwf/util/workflowclient/resources/edit.gif
ChangeUserAccountSettingsTooltip=设置选中用户信息

ChangeUserAccountPasswordLabel=密码
ChangeUserAccountPasswordImage=org/webdocwf/util/workflowclient/resources/edit.gif
ChangeUserAccountPasswordTooltip=改变选中用户密码

#
# usermappingbuttons definition
#
UserMappingManagementButtons=AddUserMapping RemoveUserMapping

AddUserMappingLabel=增加
AddUserMappingImage=org/webdocwf/util/workflowclient/resources/new.gif
AddUserMappingTooltip=加入参与者与用户的映射

RemoveUserMappingLabel=删除
RemoveUserMappingImage=org/webdocwf/util/workflowclient/resources/delete.gif
RemoveUserMappingTooltip=删除参与者与用户的映射

#
# reassign button (from workflowadmin->worklist management)
#
ReassignWorkitemLabel=重新委派
ReassignWorkitemImage=org/webdocwf/util/workflowclient/resources/reassign.gif
ReassignWorkitemTooltip=委派指定工作项给其它用户

#
# applicationmappingbuttons definition
#
ApplicationMappingManagementButtons=AddApplicationMapping RemoveApplicationMapping

AddApplicationMappingLabel=Add
AddApplicationMappingImage=org/webdocwf/util/workflowclient/resources/new.gif
AddApplicationMappingTooltip=Adds xpdl application to tool agent application mapping

RemoveApplicationMappingLabel=Remove
RemoveApplicationMappingImage=org/webdocwf/util/workflowclient/resources/delete.gif
RemoveApplicationMappingTooltip=Removes xpdl application to tool agent application mapping#

#
# worklistbuttons definition
#
WorklistButtons=CompleteWorkitem UpdateProcessVariables - WorkitemDescription

CompleteWorkitemLabel=完成
CompleteWorkitemImage=org/webdocwf/util/workflowclient/resources/complete.gif
CompleteWorkitemTooltip=完成选中的工作项

UpdateProcessVariablesLabel=更新变量
UpdateProcessVariablesImage=org/webdocwf/util/workflowclient/resources/updatevariables.gif
UpdateProcessVariablesTooltip=更新过程变量

WorkitemDescriptionLabel=描述
WorkitemDescriptionImage=org/webdocwf/util/workflowclient/resources/edit.gif
WorkitemDescriptionTooltip=显示选中工作项的描述

#
# reportmanagement buttons definition
#
ReportManagementButtons=

###############################################################################
# The possible states of activities
###############################################################################
NotOpenedKey=not opened
open.runningKey=open-running
open.not_running.not_startedKey=open-not running-not started
open.not_running.suspendedKey=open-not running-suspended
closed.completedKey=closed-completed
closed.terminatedKey=closed-terminated
closed.abortedKey=closed-aborted

#
# workflowclient Messages and misc
#
AcceptedKey=接受
AccountsKey=理由
ActiveProcessesKey=活动过程
ApplicationIdKey=应用标识
ApplicationNameKey=应用名称
ApplicationModeKey=应用模式
ApplyKey=应用
BooleanKey=真假
CancelKey=取消
CategoryKey=类别
CloseKey=关闭
ConfirmPasswordKey=确认密码
ConnectionIdKey=连接标识
ConnectKey=连接
DescriptionKey=描述
DisabledKey=禁用
DoubleKey=双精度实数
DurationKey=持续时间
EmailAddressKey=电子邮件地址
EnabledKey=激活
EngineContextKey=引掣环境
EnumerationKey=列举
ExitKey=退出
falseKey=假
FilePathRelativeToEngineRepositoryKey=相对于引掣库的文件路径
FinishStringsKey=结束字符串
IdKey=标识
IntegerKey=整数
InstantiatedProcessKey=初始过程
LoadKey=载入
LocationKey=场所
LoggedKey=已登录
LongKey=长整数
MappingKey=映射
NameKey=名称
NameServerHostKey=命名服务器
NameServerPortKey=端口
NewValueKey=新值
NoOfInstantiatedProcessesKey=初始过程的序号
NoOfProcessesKey=过程序号
NoneKey=无
NotLoggedKey=没登录
OKKey=确定
OldPasswordKey=旧密码
OpenedPackagesKey=打开的包
PackageKey=包
PackageIdKey=包标识
ParticipantIdKey=参与者标识
ParticipantKey=参与者
ParticipantNameKey=参与者名称
PasswordKey=密码
PollingPeriodKey=检测间隔[微秒]
PriorityKey=优先级
ToolAgentNameKey=工具代理名称
ApplicationMappingKey=应用映射
ProcessDefinitionKey=过程定义
ProcessKey=过程
PackageManagementKey=包管理
ParticipantIdKey=参与者标识
ProcessDefinitionIdKey=过程定义标识
ProcessIdKey=过程标识
ProcessInstantiationManagementKey=过程初始化管理
ProcessMonitorKey=过程监视器
ProcessNameKey=过程名
ProcessPropertiesKey=过程属性
PropertyKey=属性
ReassignToKey=重新委派给
ReportManagementKey=报表管理
RepositoryManagementKey=库管理
SelectActivityKey=选择活动
SelectApplicationKey=选择应用
SelectPackageKey=选择包
SelectParticipantKey=选择参与者
SelectProcedureKey=选择程序
SelectProcessDefinitionKey=选择过程定义
SelectProcessKey=选择过程
SelectUserKey=选择用户
StartedKey=已启动
StateKey=状态
StringKey=字符串
SubmittedKy=已提交
trueKey=真
TimeKey=Time
TypeKey=类型
UnknownKey=未知
UpdateKey=更新
UpdateVariableKey=更新变量
UserKey=用户
UserManagementKey=用户管理
UsernameKey=用户名
ValueKey=值
VersionKey=版本
XPDLErrorReportKey=XPDL 错误报告
WorkflowServerKey=工作流服务器
WorkitemKey=工作项
WorklistManagementKey=工作列表管理

DialogConnectToWorkflowServer=连接工作流服务器...
DialogCreateApplicationToProcedureMapping=创建应有与程序的映射
DialogCreateParticipantToUserMapping=创建参与者与用户的映射
DialogEventHistory=事情历史
DialogLoadPackage=加载包到引掣
DialogManageActivities=管理活动
DialogReassignWorkitem=重新委派工作项
DialogSetRefreshingRateInSeconds=设置刷新率(秒)
DialogSetUploadedPackageRelativeFilePath=设置已上传的包的相关文件路径
DialogUpdatePackage=更新选中的包
DialogUpdateProcessDefinition=更新过程定义
DialogUpdateProcessVariables=更新过程变量
DialogUserAccountSettings=用户帐号设置

ErrorCannotReassignAcceptedWorkitem=已接受的工作项不能被重新委派!
ErrorCannotUpdateInvalidProcess=无效的过程不能被更新,请更正!
ErrorCannotUploadSelectedPackageFileAtTheMoment=不能同时更新选中包的文件!
ErrorEnteredValueIsNotAllowed=确入值不正确!
ErrorNotConnectedToTheServer=连接服务器失败!
ErrorPasswordsDoNotMatch=你输入密码不匹配!
ErrorThePackageCannotBeLoadedAtTheMoment=同一包不能被同时载入!
ErrorSelectValidUser=选择有效用户 !
ErrorTheUpdateOfSelectedPackageIsNotAllowedAtTheMoment=选中的包不能同时被更新.\n请检查所有的活动过程是否都处于可被更新的状态 !
ErrorTheSelectedPackageCannotBeDeletedAtTheMoment=选中的包不能同时被删除!
ErrorTheSelectedPackageCannotBeUnloadedAtTheMoment=选中的包不能同时被卸载 !
ErrorTheServerIsDownOrItIsBusy=服务器已关闭和正忙-请稍后再试 !
ErrorTheServerIsPerformingCriticalOperationTryToShutdownLater=服务器正在执行一些重要操作,请稍后再关闭 !
ErrorTheUpdateOfSelectedPackageFailed=选中包的更新失败 !
ErrorTheUpdaterPackageIsInvalid='更新'包无效!
ErrorThePackageIsInvalid=包无效 !
ErrorTheOneOfTheExternalPackagesIsInvalid=外部包中的这个无效 !
ErrorUncorrectLogin=不正确登录, 请重试!
ErrorUncorrectType=不正确类型 !

MessageActivityCannotBeAborted=活动不能被中止 !
MessageActivityIsAborted=活动已中止 !
MessageActivityCannotBeSuspended=活动不能被挂起!
MessageActivityIsSuspended=活动已挂起!
MessageActivityCannotBeResumed=活动不能被唤起 !
MessageActivityIsResumed=活动已唤起 !
MessageActivityCannotBeTerminated=活动不能被终止 !
MessageActivityIsTerminated=活动已中止 !
MessageCannotChangeSettingsOfUserRetreivedFromLDAP=从LDAP服务器获取的用户信息不能被修改 !
MessageChoosePackageFileToUpload=选择你想载入引掣库的包文件...
MessageDoYouWantToUpdateProcessVariables=你确认要更新你的过程变量吗 ?
MessageMappingAlreadyExistsOrCannotBeAddedAtTheMoment=映射已存在, 或者不能同时加入映射 !
MessageMappingCannotBeRemovedAtTheMoment=映射不能被同时删除!
MessagePackageIsReferencedDoYouWantToProceed=包已被引用 !!! \n你确认要进行吗???
MessagePleaseWait=请稍候 !!!
MessageProcessCannotBeResumed=过程不能被唤起(也许它已经被作为某个活动作为子过程启动) !
MessageUsernameAlreadyExistsOrAccountCannotBeCreatedAtTheMoment=用户名已存在, 或者同一帐号不能被同时创建!
MessageUserAcountCannotBeRemovedAtTheMoment=同一用户不能被同时删除, 或者这个用户是LDAP中的用户 !

QuestionDoYouReallyWantToDeleteThePackageFileFromTheRepository=你确定要从库中删除这个包文件吗 ???
QuestionDoYouReallyWantToRemoveUserAccount=你确定要删除这个用户吗 ???

WarningCannotAcceptSuspendedWorkitem=挂起的工作项不能被接受 !
WarningProcessInstantiationForSelectedDefinitionIsCurrentlyDisabled=选中定义过程的初始化目前被禁止 !
WarningTheWorkitemCannotBeCompleted=工作项不能被完成- 它不是被挂起就是被结束(更新你的工作列表) !
WarningTheWorkitemIsPerformedByAnotherUser=工作项已被其它用户执行 !
WarningTheWorkitemMustBeAcceptedBeforeExecution=工作项完成前必须被接受, 请先接受工作项 !
WarningTheWorkitemMustBeAcceptedBeforeVariableUpdate=工作项变量更新前必须被接受, 请先接受工作项!

和jawe一样,也是enhydra里的开源项目。

http://shark.enhydra.org/

能否详细谈谈,和OFBiz等有什么不同,它的特点和你认为理想之处在哪里?

呵呵,终于有人应了。

我现在没有再做工作流方面的工作,所以没有深入。已经把shark的信息发给浆糊了,希望他有空时能弄点说明出来给我们饱饱眼。


个人觉得如果希望在旧有系统中集成工作流的功能,shark(engine)+jawe(designer)是个不错的选择,一是因为它们属于同一开源阵营,兼容性会好一点;二是shark除了实现工作流引掣的核心功能外,还提供了初步的测试工具。(是c/s的,稍加改动就可以用于集成到别的c/s产品中)

ofbiz workflow engine:
当初对它期望很高,但是事后觉得抽离ofbiz workflow engine为我所有,不是件很easy的事情。也许实际做项目的时候,你会发现抽离ofbiz里功能比你重写类似功能花的事情还要多,至少后来我修改另一个不健全的工作流引掣花得时间要少很多――学习ofbiz,抽离工作流引掣:7天:失败;修改某个workflow engine(当然,修改后的引掣虽然符合了项目的要求,但功能比ofbiz的引掣要弱),写业务层次的处理程序:1.5天:完成。

有兴趣,希望能看到更多的资料。。

前段时间就听说过了Shark,不知和ofbiz相比怎么样?ofbiz的工作流要用到他的服务引擎,实体引擎,太复杂了,感觉很不爽~~
shark也用到了enhydra的Dods等,请问能否使用其它持久框架(非dods)。

前段时间就听说过了Shark,不知和ofbiz相比怎么样?ofbiz的工作流要用到他的服务引擎,实体引擎,太复杂了,感觉很不爽~~
shark也用到了enhydra的Dods等,请问能否使用其它持久框架(非dods)。

sorry,公司对提交表单有限制,导致提交了两遍@_@

skyleaf24

我正在看 Shark ,能不能交流一下,留个MSN 或者 QQ 给我,
我的
MSN:ditto@163.com
QQ 23992

能不能告诉我一下cvs的连接,我这里访问不上,可能公司的网络有问题,
多谢!

但是我个人觉得Shark里的持久层实现得很不爽哪
虽然没仔细看过,但是看上去如果想要将他的工作流部分剥离出来,还是有麻烦的。
推荐希望使用完全独立于其他模块的工作流引擎的同学关注一下这个:OBE

我学习了两天ofbiz,以下是过程,我正在选择一个工作流引擎,也很困惑


学习:XPDL
1.学习WFMC 的XPDL 标准:阅读 TC-1025_10_xpdl_102502.pdf
3. 下载和使用 jawe , 一个xpdl 图形化工具
4. 阅读 TC-1016-X_Process_Definition_Interchange_QnA_IF1.pdf , 同时打开jawe 的example ,这是一个很好的例子; 同时阅读 jawe 的tuturial 。

安装和使用OFBIZ
1. 阅读 setup.html
2. 解开ofbiz 包,运行 java Cjar ofbiz.jar , 访问http://localhost:8080/ecommerce
3. 编写第一行语句:
4. 阅读 workeffort 代码,发现ofbiz 的 MVC 结构与 struts 的结构不一样 ,ofbiz 在 request mapping 中直接用了service engine
5. 阅读 workeffort 代码,发现 entity engine 与hibernate 不一样
6. 阅读 OFBizQuickStart.html
7. 阅读 OFBizForDummy.html
8. ofbiz 与常规的j2ee 编程模式的差异,这会不会有问题 ?
9. struts 与 ofbiz 都要配置web.xml 会不会有问题 ?
10. 看来掌握ofbiz 是个困难的事情,超过struts,因为它是一个庞大的结构


工作流引擎的工作,其实是固定的。重要的是工作流的制作以及流程与外部的交互。比的就是制作的方便性,以及外部交互的方便性。

这是ofbiz 的诱惑所在。基于xpdl 标准的制作要好得多。


2. 阅读 ofbiz 的一些文档,
3. 一直没有读懂 , 流程中产生的数据,如何与数据库交付 (哈哈,procedure)
4. 设定debug.properties ,log 输出到文件
5. 启动ofbiz ,注册用户lijqb ,提交一个order , 以下阅读ofbiz.log
6. 找到了 initiateOrderWorkflow 这个入口,在ecommerce / controller.xml 中,一个checkoutevent 被触发 ,其中调用了dispatcher.runAsync(“processOrder”,…).
7. 根据 service.xml 的定义,创建一个“process Order” 的workflow manager ,创建执行期 “ process Order” 对象 , 由于runasync , 页面返回调用 “checkexternal payment”
8. 创建下一个活动 “receive order” 并执行,调用orderservices.java , 出现异常
9. 创建下一个活动 “orderNotReady“ 并执行 ,出现了回滚

1. 打开ordermgr ,用 admin ,ofbiz 进入,发现了order的状态
2. 进入party 管理,创建一个clerk1 party, 不理解 clerk 与 权限状态(??),如何联系到一起 ,创建了一个 clerk111 个人 , 权限 order admin
3. 进入workeffort , 用clerk111 ,看到order ,accept assignment 不能成功
4. 进入ordermgr ,用admin ,改变orderstatus , complete status ,continue
5. 观察一下最后的log ,作了什么 : 激活了一个completeorder event
6. 回顾,每次order 页面的调用,从哪里调用,从哪里获取数据 ?
在order 的xpdl 中,有一个procedure ,它的一个service name 被定义。在这个service 中访问数据库。

发现在同一台机器上,用不同的用户登录。可能由于缓存的问题,导致系统把不同的用户搞混。security 部分 处理的问题。

到现在为止,我算是明白了ofbiz 。其实workflow 部分,主要是workfactory, exceutionimplement 。
entity engine 是必须的,但可以仅用现成的。自己的代码可以用hibernate 。
service engine 是必须的。

Ofbiz 提供的 data model 还是值得学习的。我打开order.vsd .

Ofbiz 是一个电子商务应用的完整的解决方案。
每一块实现成一个web application, 实现了单点登录。这也方便了部署。

问题:
我见到jsp 中包含了不少直接访问entity engine 的taglib代码,不知道这样好不好。比如workeffort 下边的/task /mytask.jsp 。不过好像也没有关系。(总之觉得不太好,万一要用ejb 实现不就麻烦了,还是放在servlets 中比较好,我比较习惯struts的方式)。

我不知道 BeanShell script 有什么样的好处。Ftl 是什么?

目录结构很好。采用ant 打包。
用 <filter-name>ContextSecurityFilter</filter-name> 实现了限制对jsp 的直接访问。
打包了一个很小的servlet 引擎也不错。在熟悉原理前就不用再费劲安装了。

我发现ofbiz 使用的页面模版机制不错,与struts 的tile 比,易用性如何?

在ejb 实现的时候,可以为方法加security 。ofbiz 在web 层实现的security 也不错。
关系建模也不错。除了 findByPrimaryKey 还有什么呀 ?


与bea platform8.1 相比,他们的结构非常类似。唯一的差别就是,platform workshop IDE 的功能还是非常强大。Bea 的提供的若干control 也不错。
看来昂贵的东西也有一些价值。

用jawe看它带的例子的时候为什么总出现 不能解析的错误
fatal error while parsing ...

shark启动后输入它提供的用户和密码 也总是连不到server上去
tns 以及server 已启动

很奇怪的问题,郁闷ing....

1.连接不上shark workflow server的主要原因是因为发布的1.0版本有问题,从CVS获取的版本是没有问题的。

2.修改数据存储方式是很简单的事情,参考shark自带的帮助。我刚开始使用时就改成了mysql。

3.目前的版本是使用Enhydra DODS作持久化存储工具,而且shark的作者也预期将来使用重量级的持久化工具来完善此部分的工作。我个人觉得shark目前的持久化存储已经不错了,如果真的想修改它这部分的代码,也是可行的,shark的各个模块间独立性很强,修改persistent这部分的工作绝大部分应该都集中在sharkdodslayer。

4.有必要分离shark吗?如果你只需要c/s的工作流系统,各工作环节的输入数据并不复杂,那么shark已经为你完成了除工作流引掣以外的大部应用开发工作。剩下的事情就是需要对权限进行控制(至少不能任何都能登录admin,不能任何人都可以都可以启动任何工作流)。
要做b/s的系统,谈不上要剥离什么东西,只是需要去掉了admin和worklisthandler的client实现,改成基于web形式,这部分的工作并不难,工作难也不大,我以前已做过一部分,可以启动process,处理任务。最大的困难可能是在开发帮助文档比较少,刚开始开发时常需要在源代码的游来荡去,是有点痛苦。

单纯从workflow engine来讲,shark是完成的相当不错的:
功能比较健全,支持wfmc,对外提供corba接口供application调用,对内各模块的代码耦合性低,支持多种数据库存储。

抛开workflow engine功能来讲,shark提供了相关的支持工具:
1.有初步的表单定制工具。
2.提供了测试工作流并修改工作流定义的工具(这也是因为和jawe同属一阵营带来的好处)
3....

缺点:
作为引掣实现:
1.利用dods完成持久化,也许在大量数据应用时会出现问题。
引掣外的功能:
2.表单定制比较弱,严格来讲,它只是用来定义各环节的输入/输出的数据,并不涉及布局的设置。而且就提供的数据类型也有限。

楼上对此也有不少的研究吧。

大家可不可以交流一下:
msn:angel.john@itpub.net