Shark介绍及配置 -- Enhydra Shark
2007年3月16日
版本:1.0
本文仅代表个人对Shark的理解,如有理解错误或不准确的地方,敬请大家指出,我将急时修证。迎大家共同交流、相互学习。
目录
Shark是什么?……………………………………………………………
启动Shark………………………………………………………………………..
配置Shark……………………………………………………………….
配置“enginename”参数……………………………………………………………..
配置分支条件不满足的行为……………………………………………………..
配置否则条件最后求值……………………………………………………………………..
配置任务创建
配置Shark引擎启动时重分配任务行为
配置任务处理
配置Shark引擎启动时Cache填充行为
配置超期限制重计算行为
配置子流程锁
配置事件审计管理器持久化历史事件审计数据
配置XPDL仓库路径
配置LDAP服务器属性
配置CallbackUtilities接口实现类
配置ObjectFactory接口实现类
配置ToolAgentManager接口实现类
在Shark.conf文件中配置新的组件
数据库配置
配置持久化组件数据模型变量
配置应用程序映射持久化执行
配置任务管理器接口实现类
配置认证管理器接口实现类
配置Cache执行
配置流程实例持久化执行
配置流程结束时DODS持久化实例删除流程数据
配置限制工具代理接口实现
配置主锁接口实现类
配置日志接口实现类
配置参与者映射持久化接口实现类
配置XPDL仓库持久化接口实现类
配置脚本管理器接口实现类
配置脚本映射持久化接口实现
配置安全接口实现类
配置工具代理
配置事务管理器接口实现类
配置用户组接口实现类
配置用户事务工厂接口实现类
配置DODS中ID的缓存大小
配置Shark部署为CORBA服务的参数
关于数据模型
数据库支持
Shark默认为HSQL数据库,使用其它数据库需要什么配置?
Shark是什么?
Shark是完全基于WfMC[http://www.wfmc.org/standards/docs/if2v20.pdf]和OMG[http://www.omg.org/docs/formal/00-05-02.pdf]标准的工作流程引擎。
·它使用WfMC的工作流过程描述语言地址http://www.wfmc.org/standards/docs/TC-1025_10_xpdl_102520.pdf](XPDL)为工作流定义格式。
·In its standard kernel implementation[ly1] ,它是一个没有自己线程的类库,并且可以运行在许多不同的环境(WEB应用,swing应用,部署为CORBA服务,EJB容器)。我们的工程中有一个通过CORBA服务的Swing应用使用Shark的例子,也可以从JSP客户端应用。
·它是可配置的,提供了所有的内部接口,也可以被其它的实现替换完整的核心接口。
·它可以同时运行在多个虚拟机上(在集群环境)。
·它提供POJO接口,CORBA客户端应用程序通过提供的CORBA接口与部署的CORAB服务通信。[ly2]
·它可以配置使用定义在LDAP服务器上的组织结构(通过使用Shark用户组和认证组件的具体实现)。
·它不使用XPDL的扩展属性为执行角色。
·它接口允许外部事务通过(用在一些应用中),因此,客户端的事务能够工作。
·它使用DODS(Enhydra的OR/M工具),它几乎可以使用任何的数据库系统存储信息,并且很容易配置数据库与连接字符串标签(它有预订的数据库脚本,并且在那些数据库中用Enhydra的ETL工具自动创建适当数据库表)。
·它实现了WfMC定义执行自动活动工具的工具代理接口(Shark提供了几个有用的工具代理)。
·Shark可以使用自定的Java类(恰当的接口或抽象类)为流程变量。
启动Shark
Shark可以从客户端应用中首先配置然后获取一个实例启动它。如下是从应用中使用Shark的常用方式。
String confFilePath = “Shark.conf”;
Shark.configure(confFilePath);
Shark shark = Shark.getInstance();
通过Shark提供的接口可以做任何事。
如果你想通过CORBA接口使用Shark,首先你需要启动Shark CORBA服务(通过适当的运行脚本),然后你可以通过网络用Shark的CORBA API访问Shark(你可以用“runA”脚本启动Shark的管理应用体验一下)。通过“run”脚本启动服务器时,该计算机上的名称服务器自动启动。
Shark CORBA 服务器是Shark库的范例用法。
配置Shark
有四种不同的方式配置Shark:
1、 用configure()方法没有参数:
配置shark的配置文件仅仅来自于它的jar文件中。Shark被配置在默认设置方式下工作,没有许多内部API的特殊实现(例如:缓存,认证,用户组等等接口)。
2、 用configure(String filePath)方法:
该方法获取filePath字符串为文件路径创建File对象,并且调用configure(File configFile)方法运行下一步。
3、 用configure(File configFile)方法:
Shark首先基于它的jar文件中的配置文件属性做基本配置,然后从该文件细节中添加配置。如果配置文件定义与jar中的默认配置文件相同的属性,这些属性将覆盖默认的属性,来自于文件或属性集中的额外属性将被添加到Shark的配置中。你传递的实参配置文件不需要定义完整的配置,但是将重定义一些默认的配置参数(例如:engineName,ObjectFactoryClassName,….)和增加一些额外的配置参数(例如:AssignmentManagerClassName)。
4、 用configure(Properties props)方法:
该方法与上一个方法基本相同(事实上,上一个方法转换文件内容到Properties对象),但是提供给客户端应用可能使用Java Properties对象配置Shark的情况使用。
你可以使用配置不同的许多shark实例(你需要定义不同的配置文件或路径或者定义不同的Property对象)。如果你想在相同的数据库是使用多个Shark实例(多于一个的虚拟机),事实上你总是使用不同的配置“enginename”属性(同样,如果使用多个虚拟机,所有配置必须覆盖DODS缓存大小属性(必须设置为0),CacheManagerClassName属性将被删除)。因为流程同步执行,一个虚拟机平台上在一个流程上的操作Shark实例会加锁(根据“enginename”属性识别),因些在该加锁的Shark实例操作完成解锁之前其它的虚拟机是不可用的。
上面已经提到,Shark是可配置的引擎,并且它的所有组件,包括核心接口可以被一个自定义实现所替换。
通常配置Shark的方式是定义自定义的Shark.conf文件,在这个文件中你将描述如何配置Shark,通过Shark分发的标准Shark.conf文件简要地说明各项的意思:
设置Shark引擎名称参数
你可以编辑enginename属性设置shark实例名称。这里是为了配置该属性的Shark配置文件的一部份:
######################### NAME
# the name of shark instance - if shark is used in several VMs, this property
# MUST be different for each of them
enginename=Shark
如果shark部署到多个虚拟机使用相同的数据库,每个shark实例必须配置不同的engingname属性。这是非常生要的,因为流程锁。在一个线程中使用的流程同时不能在其它线程中使用,即使这些线程在不同的虚拟机上。流程锁是基于shark实例名称和流程ID。
设置分支条件不满足的行为
当然,这个参数仅仅表示该活动至少有一个分支转移。
这里是为了配置该属性的Shark配置文件的一部份:
######################### KERNEL SETTING for UNSATISFIED SPLIT CONDITIONS
# There can be a cases when some activity that has outgoing transitions other
# then to itself (other then circular one), has nowhere to go based on
# calculation of these conditions (all of the conditions are evaluated to false)
# In that case, the process could hang (it will not go anywhere, and it will
# also not finish), finish (if there is no other active activities), or
# the last transaction that finishes the activity will be rolled back.
# This settings apply to the block activity's activities also, but the difference
# is that if you set parameter to FINISH_IF_POSSIBLE, shark will actually
# finish block activity if possible.
# The possible values for the entry are IGNORE, FINISH_IF_POSSIBLE and ROLLBACK,
# and default kernel behaviour is FINISH_IF_POSSIBLE
#SharkKernel.UnsatisfiedSplitConditionsHandling=FINISH_IF_POSSIBLE
因此,有三个可能的方案描述,并且默认的方式是结束流程。
设置否则条件最后求值
XPDL定义中没有声明OTHERWISE类型转移条件仅仅在没有其它转移条件为真时执行(XOR分支情况)。因此,如果设置OTHERWISE类型转移条件为一些活动的第一个转移条件,那么其它的转移条件将不被执行。
你可以配置shark改变这种情况,所以OTHERWISE类型转移条件仅仅在没有其它转移条件为真时被计算和执行。
SharkKernel.handleOtherwiseTransitionLast=false
为任务创建设置核心参数
默认值为True,将创建任务。当任务创建不是必须的和总是用WfAactivity的change_state()方法执行活动时。
SharkKernel.createAssignments=true
因为这一个设置影响完全的引擎,你应该谨慎地考虑是否你正在访问的shark应用允许改变默认认定。
设置核心行为在shark引擎启动时重新评估任务
这个设置强制shark引擎重新评估任务在shark初始化期间。能够用下面的属性改变这种行为。
#Assignments.InitialReevaluation=false
如果设置这个属性的值为True,所有没有接受的任务将被重新评估(旧的任务将被删除,新的任务将基于当前的参与者映射,用户/用户组信息和AssignmentMananger接口的实现类创建)。
默认核心设置是不重新评估任务。
为任务处理设置核心参数
决定在某人接受/拒绝任务时是否从数据库中删除其它任务,并且第次重新评估任务。如果设置为true,副作用是有重分配并且用户获取重分配任务拒绝该任务之后他将不能再获取该任务。
SharkKernel.deleteOtherAssignments=true
Shark核心设置默认值为true。
设置核心行为在shark启动时填充缓存
如果你想在shark启动时填充它的流程和资源到缓存,你将从shark.conf配置文件中编辑下面项目:
#Cache.InitProcessCacheString=*
#Cache.InitResourceCacheString=*
如果你不注释上在的两行,所有的流程和资源将基于数据库数据进行创建并且填充到缓存中去(事实上,数量是受限于缓存大小的)。
这个属性值可以设置为以逗号分隔的在流程启动时需要放入缓存的流程/资源id列表,例如:
Cache.InitProcessCacheString=1_test_js_basic, 5_test_js_Game
Shark核心设置默认是不初始化缓存的。
为重新评估超期限制行为设置核参数
如果你想shark每次在外部超期管理超期检查时不重新评估超期,你将设置下面的参数为false(默认核心设置是true)。
#Deadlines.reevaluateDeadlines=true
决定重新评估超期时流程和活动上下文是否将使用。默认核心设置是使用活动上下文。
Deadlines.useProcessContext=false
决定是否异步超期仅仅被唤起一次,或者每次超期检查被执行时。默认核心设置为true(换起超期仅仅一次)。
Deadlines.raiseAsyncDeadlineOnlyOnce=true
为子流程锁设置核心参数
决定在子流程活动执行期间是否创建流程锁。在你执行打开线程的工具代理的情况和shark通信,这些情况(在XPDL中定义了自动执行子流程)锁是需要的。
SharkKernel.lockSubProcesses=false
默认核心设置为false。
为持久化历史事件审计数据设置核心和事件审计管理器
决定是否对历史事件审计数据进行持久化。默认是要持久化。这个属性值必须考虑shark核心与事件审计管理器。
PERSIST_OLD_EVENT_AUDIT_DATA=true
默认核心设置为true。
设置外部XPDL仓库文件夹
通过改变下面shark配置文件中的一部份你可以设置用于shark查找能够被装载到shark内存的XPDL文件的仓库位置。
######################## EXTERNAL REPOSITORY FOLDER SETTING
# Shark currently uses File system repository for holding XPDL definitions, and
# this is where you can specify location of this repository.
# If you want to specify it by relative path, you must know that this path must
# be relative to the Shark.conf file (in conf folder)
EXTERNAL_PACKAGES_REPOSITORY=repository/external
警告:Unix操作系统平台上,应用需要有写该文件夹的权限。
通过设置这个参数决定shark的XPDL仓库的位置。
外部XPDL仓库可以被客户端管理应用管理,XPDL文件(包)可以从该仓库中被添加或删除。该仓库中只有XPDL文件能够被装载到shark引擎,并且基于这些文件中的定义进行实例化流程。
为浏览LDAP服务器设置属性
如果你使用LDAP服务器保存组织结构,你可以配置shark使用我们的LDAP用户组和认证接口实现(),并且你必须定义一些LDAP属性。
此刻,shark用户组和认证接口支持LDAP的两类结构。第一种结构是标记类型为0,第二种结构标记类型为1。LDAP结构详细说明在Shark中的LDAP文件中(html[../ldap_structure/LDAP_structure.html]),pdf[../ldap_structure/LDAP_structure.pdf]。
你可以基于你的LDAP服务器配置设置这个属性,通过改变下面shark配置文件中的一部份:
######################### LDAP SETTINGS
# Shark can use LDAP implementation of Authentication and UserGroup interfaces,
# and these are settings required by these implementations to access and
# browse the LDAP server
LDAPHost=localhost
LDAPPort=389
# possible values for LDAPStructureType parameter are 0 and 1
# 0 is simple structure, the possibility that one group or user belongs to more
# than one group is not supported
# 1 is more complex structure that supports the possibility that one group or
# user belongs to more than one group is not supported
LDAPStructureType=1
LDAPSearchBase=
LDAPGroupObjectClasses=organizationalUnit
LDAPUserObjectClasses=inetOrgPerson
# parameter LDAPRelationObjectClasses is only needed for LDAPStructureType=1
LDAPRelationObjectClasses=groupOfNames
LDAPGroupUniqueAttributeName=ou
LDAPGroupDescriptionAttributeName=description
LDAPUserUniqueAttributeName=userid
# parameter LDAPRelationUniqueAttributeName is only needed for LDAPStructureType=1
LDAPRelationUniqueAttributeName=cn
# parameter LDAPRelationMemberAttributeName is only needed for LDAPStructureType=1
LDAPRelationMemberAttributeName=member
LDAPUserPasswordAttributeName=userpassword
LDAPUserRealNameAttributeName=cn
LDAPUserFirstNameAttributeName=givenName
LDAPUserLastNameAttributeName=sn
LDAPUserEmailAttributeName=mail
LDAPUser=sasaboy
LDAPPassword=s
# parameter LDAPGroupGroupsName is only needed for LDAPStructureType=1
LDAPGroupGroupsName=Groups
# parameter LDAPGroupUsersName is only needed for LDAPStructureType=1
LDAPGroupUsersName=Users
# parameter LDAPGroupGroupRelationsName is only needed for LDAPStructureType=1
LDAPGroupGroupRelationsName=GroupRelations
# parameter LDAPGroupUserRelationsName is only needed for LDAPStructureType=1
LDAPGroupUserRelationsName=UserRelations
·LDAPHost – 运行LDAP服务器的计算机地址
·LDAPPort – LDAP服务器能够被访问的端口
·LDAPStructoureType – 如果设置为0,简单结构用于不支持将一个组或用户分配到多个组,设置为1,复合结构用于不支持将一个组或用户分配到多个组。
·LDAPSearchBase – 上下文名称或对象搜索(这是所有查寻将开始的根LDAP模式)。
·LDAPGroupObjectClasses – 描述用户组的以逗号分隔的LDAP对象类列表。这些类必须有一个在LDAP树中唯一鉴别每个条目的属性值是很得要的。
·LDAPUserObjectClasses – 描述shark用户的以逗号分隔的LDAP对象列表。这些类必须有一个在LDAP树中唯一鉴别每个条目的属性值是很得要的。
·LDAPRelationObjectClasses – 只使用在结构类型为1中,描述shark用户与组或shark组之间的关系的用逗号分隔的LDAP对象类。这些类必须有一个在LDAP树中唯一鉴别每个条目的属性值是很得要的。
·LDAPGroupUniqueAttributeName – 描述用户组的LDAP对象类属性名称。属性值必须是唯一的为LDAP树中的每一个LDAP对象条目。
·LDAPGroupDescriptionAttributeName – 描述用户组的组描述的LDAP对象类属性名称。
·LDAPUserUniqueAttributeName – 描述用户的每个LDAP对象类的强制属性名称。在LDAP树中这些对象类的每个LDAP条目的属性值必须是唯一的。在shark使用LDAP为认证和用户组管理时,这个属性描述的名称将记录到shark。
·LDAPRelationUniqueAttributeName – 只用在结构类型为1,描述组或组和用户关系的每个LDAP对象类强制属性名称。
·LDAPRelationMemberAttributeName – 只用在结构类型为1,描述包含(用户或组)在关系中的成员的LDAP对象类(描述组或组与用户的关系)的属性名称。
·LDAPPasswordAttributeName – 描述用户的每个LDAP对象类强制属性名称。在shark使用LDAP为认证和用户组管理时,该属性描述的密码需要记录到shark中。
·LDAPUserRealNameAttributeName – 描述shark用户真实名称的LDAP对象类的属性名称。
· LDAPUserFirstNameAttributeName – 描述shark用户姓氏的LDAP对象类的属性名称。
·LDAPUserLastNameAttributeName -描述shark用户名的LDAP对象类的属性名称
·LDAPUser – 在LDAP服务器需要读信任时,这个用户名被用于连接LDAP服务器。
· LDAPPassword – 在LDAP服务器需要读信任时,这个密码被用于连接LDAP服务器。
·LDAPGroupGropusName – 只用在结构类型1,必须被创建的组定义名称,并且将包含所有的组。
·LDAPGroupUsersName – 只用在结构类型1,必须创建的组定义名称,并且将包含所有的用户。
·LDAPGroupGroupRelationsName – 只用在结构类型1,必须被创建组定义名称,并且将包含所有组之间的关系。
·LDAPGroupUserRelationName – 只用在结构类型1,必须创建组定义名称,并且将包含所有组和用户之间的关系。
设置核心的回调公用接口实现类
如何任何人想获取自己对CallbackUtilities接口的实现,他可以通过改变下面的属性做到:
######################### CALLBACK UTILITIES
# used for logging, and getting the shark properties
# the default kernel setting is as follows
#CallbackUtilitiesClassName=org.enhydra.shark.CallbackUtil
被使用的类型默认是注释的。
设置核心的对象工厂接口实现类
如果任何人想替换核心的一部份为自己的实现,他将基于这个接口创建自己的实现类,并且配置到Shark配置文件中使用它。
可以通过改变下面的shark配置文件中的一部份做到:
######################### OBJECT FACTORY
# the class name of the factory used to creating kernel objects
# the default kernel setting is as follows
#ObjectFactoryClassName=org.enhydra.shark.SharkObjectFactory
被使用的类型默认是注释的。
设置核心的工具代理管理器接口实现类
如果任何人想设置自己的工具代理管理器执行,将工具代理通信使用与标准实现不同的方式,他可以配置下面的参数:
######################### TOOL AGENT MANAGER
# the class name of the manager used to execute tool agents
# the default kernel setting is as follows
#ToolAgentManagerClassName=org.enhydra.shark.ToolAgentManagerImpl
在shark.conf中设置新的组件
ExpressionBuilderManager是Shark框架中新引进的组件。它的功能性只是没有适合任何的先前现有的。表达式构造者提供一个N层接口易于Wf*Iterator表达式构造.
ExpressionBuilderManagerClassName=org.enhydra.shark.ExpressionBuilderMgr
默认设置提供DODS兼容实现。
Wf-XML协同工作能力(WfMC接口4)引进另一个组件到shark.该组件主要任务是提供与其它引擎通过Wf-XML的连通性。
如果你不想部署Shark为Wf-XML服务,你可以保留这个注释,但是你想制造你的Shark引擎部署到其它通信(其它卖主的引擎),首先设置是托管的。其它两个是帮助这个组件到选择监听的IP地址或名称和端口。
WfEngineInteroperabilityManagerClassName=org.enhydra.shark.interoperability.WfXMLInteroperabilityImpl
Interoperability.Host=localhost
Interoperability.Port=8080
注意:[ly3] ,但我们不想包装完整的服务器,Shark使用SimpleAxisServer API文件清晰的表示:“这是一个HTTP服务器的简单实现为流程SOAP请示经过Apache的xml-axis.不想为产品使用,它想使用为演示,调试,和执行轮廓。”
数据库配置
这个shark配置文件片段是涉及到DODS数据持久化执行API。
在shark的分发中,我们为创建大部分数据库表提供DODS支持的SQL脚本,可以被Octopus用于创建提供了相应驱动器的数据库表的LoaderJob文件。这些文件可以在conf/sql文件夹中找到。
默认数据库使用HSQL,其它数据库设置被注释,下面是shark配置文件中设置的一部份:
#
# The jdbc driver to use, and Database url.
DatabaseManager.DB.sharkdb.JdbcDriver="org.hsqldb.jdbcDriver"
DatabaseManager.DB.sharkdb.Connection.Url="jdbc:hsqldb:C:/users/sasaboy/sdb/Shark/output/Shark/db/hsql/hsql"
DatabaseManager.DB.sharkdb.ObjectId.NextWithPrefix = true
DatabaseManager.DB.sharkdb.Connection.ShutDownString = SHUTDOWN
# DB2
#DatabaseManager.DB.sharkdb.JdbcDriver="COM.ibm.db2.jdbc.app.DB2Driver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:db2:shark"
# HypersonicSQL
#DatabaseManager.DB.sharkdb.JdbcDriver="org.hsqldb.jdbcDriver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:hsqldb:C:/users/sasaboy/Shark/output/Shark/db/hsql/hsql"
# Informix
#DatabaseManager.DB.sharkdb.JdbcDriver="com.informix.jdbc.IfxDriver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:informix-sqli://localhost/shark"
# MSQL
#DatabaseManager.DB.sharkdb.JdbcDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shark;SelectMethod=cursor"
# MySQL
#DatabaseManager.DB.sharkdb.JdbcDriver="org.gjt.mm.mysql.Driver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:mysql://localhost/shark"
# Oracle
#DatabaseManager.DB.sharkdb.JdbcDriver="oracle.jdbc.driver.OracleDriver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:oracle:thin:@localhost:1521:shark"
# PostgreSQL
#DatabaseManager.DB.sharkdb.JdbcDriver="org.postgresql.Driver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:postgresql://localhost/shark"
#DatabaseManager.ObjectIdColumnName=ObjectId
#DatabaseManager.VersionColumnName=ObjectVersion
# Sybase
#DatabaseManager.DB.sharkdb.JdbcDriver="com.ddtek.jdbc.sybase.SybaseDriver"
#DatabaseManager.DB.sharkdb.Connection.Url="jdbc:sybase://localhost/shark"
事实上你能够使用大部分的数据库,你也需要设置用户名和密码参数,通过更改下面shark配置文件中的一部份做到:
#
# Database user name. All connection are allocated by this user.
#
DatabaseManager.DB.sharkdb.Connection.User="sa"
# Database user password.
#
DatabaseManager.DB.sharkdb.Connection.Password=""
配置shark使用另一个数据库,你可以简单注释HSQL设置,并且释放编辑你想使用的数据设置,更改用户名和密码条目(也可以在工程中编辑configure.properties文件自动执行,并且调用配置脚本)。
有另一个重要的DODS配置方面 – 缓存大小:
#
# Default cache configuration
#
DatabaseManager.defaults.cache.maxCacheSize=100
DatabaseManager.defaults.cache.maxSimpleCacheSize=50
DatabaseManager.defaults.cache.maxComplexCacheSize=25
如果你了解用在多虚拟机上的shark多实例使用同一数据库的情况,你应该设置所有虚拟机上的缓存为0。与此相同,缓存管理器实现(在下文中将说明)将不被使用。
设置持久化组件可用数据模型
下列选项描述聚合,虽然他们影响不同的组件,选项的意图和影响发生是相同的。
决定存储在VARCHAR字段中的字符串最大长度。超过该长度的字符串将存储为BLOB数据类型。字符串最大长度可设置为4000(默认设置)。
DODSPersistentManager.maxVARCHARSize=4000
DODSEventAuditManager.maxVARCHARSize=4000
决定那种数据模型用于存储流程和活动变量。有两个选项:
1.标准数据模型,所有的数据类型存储到一张表中(包括存储自定义的Java对象和大字符串的BLOB数据类型);
2.可选数据模型,除BLOB数据类型以外的所有数据类型存储到一张表中,BLOB数据类型存储到另一张表中,并且只存储BLOB数据类型数据(自定义的Java对象和大字符串数据)。如果使用Oracle数据库,并且没有很多自定义Java对象和大字符对象和Shark与DODS的缓存都没有使用时该选项的性能是高效的。
默认使用标准数据模型,但使用可选数据模型可以改善没有许多自定义Java对象和大字符串对象并且shark和DODS缓存没有使用时的执行效率,特别是使用Oracle数据时效果更佳。
DODSPersistentManager.useStandardVariableDataModel=true
DODSEventAuditManager.useStandardVariableDataModel=true
设置应用程序映射持久化执行参数
该API用到存储XPDL应用程序与工具代理应用之间的映射信息。Shark自身提供DODS基本的应用程序映射持久化执行。
你可以提供自己的应用程序映射持久化接口实现,并且替换当前的实现。默认的实现是DODS。
#=============================================================================
# Default application map persistence manager is DODS
#
#-----------------------------------------------------------------------------
#
# DODS application map persistent manager defaults
#
ApplicationMapPersistenceManagerClassName=org.enhydra.shark.appmappersistence.DODSApplicationMappingMgr
# If set to true, the debug information on application mapping transaction will be
# written to console
#DODSApplicationMappingMgr.debug=false
注意:如果你注释上面的行,shark将工作在没有应用程序映射API执行的环境中。
设置任务管理器接口实现类
如果任何人想创建自己的任务管理器接口实现,任务是创建一个活动的决定,他可以实现自己的任务管理器接口,并且通过更改下列设置配置shark使用它:
AssignmentManagerClassName=org.enhydra.shark.assignment.StandardAssignmentManager
Shark提供三种不同的管理器实现:
·标准实现 - 通过一个参数返回用户列表或者在列表中没有用户返回创建相应流程的用户;
·历史有关的 – 如果在XPDL中为一些活动定义定义了一些特殊“扩展属性”,执行检查任务历史创建关于创建任务决定。
·XPDL参与者映射 – 为XPDL活动执行者有相同ID的用户创建任务。
注意:如果你没有设置任何实现(你简单注释上面的行),shark将使用默认程序。事实上,标准任务API实现不是非常有用的,它基本上返回第一个有效选项的结果。
设置认证管理器接口实现类
Shark提供两种认证和用户组API接口实现。第一种是基于数据库的(使用数据库存储和接收组织结构信息),另一种是基本LDAP的(使用LDAP服务器设置组织信息)。
这儿是设置认证管理器实现在shark配置文件中的一部份:
#=============================================================================
# Default AuthenticationManager is DODS
#
# WARNING: This and user/group manager must comply.
#-----------------------------------------------------------------------------
#
#AuthenticationManagerClassName=org.enhydra.shark.authentication.LDAPAuthenticationManager
AuthenticationManagerClassName=org.enhydra.shark.authentication.DODSAuthenticationManager
# Specifies the size of LRU cache for holding user attributes (for shark performance reason)
# for LRU implementation
LDAPClient.userAttributesCacheSize=100
# Specifies the size of LRU cache for holding group attributes (for shark performance reason)
# for LRU implementation
LDAPClient.groupAttributesCacheSize=100
# The database used for Authentication when using DODS implementation
#DODSAuthenticationManager.DatabaseName=sharkdb
它是非常生要的,如果你使用LDAP为认证API接口实现,你必须使用LDAP为用户组API接口实现(DODS实现也是如此)。
默认情况,shark使用数据库基于DODS实现,并且转换到LDAP实现,你将简单流程引用DODS的行,释放LDAP涉及的行并编辑以前描述的LDAP设置。
注意:如果你没有设置任何实现(简单注释上面的行),shark将不执行任何认证。
设置缓存执行参数
Shark提供LRU为支持流程和资源对象的基本缓存实现。默认情况,shark配置使用客户端可以加速的缓存实现。
这里是定义缓存实现和大小在shark配置文件中的片段:
#=============================================================================
# Default cache is LRU
#
#-----------------------------------------------------------------------------
# Cache defaults
#
CacheManagerClassName=org.enhydra.shark.caching.LRUCacheMgr
# Default LRU cache sizes (LRU implementation default is 100 for each cache)
#LRUProcessCache.Size=100
#LRUResourceCache.Size=100
注意:如果你没有配置任何实现(简单注释上面的行),shark将不执行任何缓存。
设置流程实现持久化实现类
该API实现用于存储shark的流程,活动信息到数据库。Shark提供DODS基本流程持久化实现。任何人可以写自己的流程持久化接口实现(允许使用Hibernate或EJB),并且配置shark工作为这个实现,需要编辑下列shark配置文件中的片段:
#
# DODS instance persistent manager defaults
#
InstancePersistenceManagerClassName=org.enhydra.shark.instancepersistence.DODSPersistentManager
Shark不能工作在没有流程实例持久化实现的环境下。
注意:如果任何人想实现其它流程实例持久化接口,他也将提供自己的SharkTransaction API接口的实现。
配置DODS流程实例持久化实现当流程结束时删除流程
默认情况,流程实例持久化接DODS实现不删除结束的流程,它们保留在数据库中。这种行为可以通过设置下列的参数为真而改变:
# Determines if finished processes should be deleted from DB (DODS persistence
# manager default is false)
#DODSPersistentManager.deleteFinishedProcesses=false
设置限制代理管理器接口实现类
Shark提供两种不同API接口实现。这些实现默认如果活动/流程超越在XPDL的设置的限制将记录到控制台。标准实现[ly4] ,客户端必须启动限制检查API,并且计时器基本实现(如果你想shark运行为一个库将不使用,因为该实现将启动线程)将不做什么。
如果你想使用自己的实现,你可以从shark的配置文件中编辑下列的行:
LimitAgentManagerClassName=org.enhydra.shark.limitagent.StandardLimitAgentManager
设置主锁实现
主锁用于同步流程 – 使用主锁时,在相同的流程上同时不能有多个线程工作。
Shark 提供两种主锁接口实现,一个是“简单”实现用于你知道shark将只运行在单个虚拟机上,另一个是“DODS”实现用于你知道shark将运行在多虚拟机上访问相同数据。
默认设置主锁为“DODS”实现,并且可以通过注释DODS主锁实现相应的行改变它,释放简单主锁相应的行。这里是决定主锁使用方式的shark配置文件中的片段:
#=============================================================================
# Default LockMaster is DODS
#
#-----------------------------------------------------------------------------
# SimpleLockMaster defaults
#
#LockMasterClassName=org.enhydra.shark.processlocking.SimpleLockMaster
# The number of milliseconds to wait for a locked process, -1 is default
# for the simple lock master implementation, and it means wait forever
#SimpleLockMaster.Timeout=-1
# The number of milliseconds to try to acquire lock for the process if we
# must wait for it to be unlocked. Lock master will try to acquire process lock
# every SimpleLockMaster.LockWaitTime milliseconds until it succeeds, or
# until SimpleLockMaster.Timeout milliseconds has passed (int that case, an
# exception will be thrown).
# The simple lock master implementation default is 100 milliseconds
#SimpleLockMaster.LockWaitTime=100
#-----------------------------------------------------------------------------
# DODSLockMaster defaults
#
LockMasterClassName=org.enhydra.shark.processlocking.DODSLockMaster
# The number of milliseconds to wait for a locked process, -1 is default
# for the DODS lock master implementation, and it means wait forever
DODSLockMaster.Timeout=1200
# The number of milliseconds to try to acquire lock for the process if we
# must wait for it to be unlocked. Lock master will try to acquire process lock
# every DODSLockMaster.LockWaitTime milliseconds until it succeeds, or
# until DODSLockMaster.Timeout milliseconds has passed (int that case, an
# exception will be thrown).
# The DODS lock master implementation default is 100 milliseconds
DODSLockMaster.LockWaitTime=400
# The database holding information on locked processes
#DODSLockMaster.DatabaseName=sharkdb
# The cache sizes must be set to zero
DatabaseManager.DB.sharkdb.LockTable.cache.maxCacheSize=0
DatabaseManager.DB.sharkdb.LockTable.cache.maxSimpleCacheSize=0
DatabaseManager.DB.sharkdb.LockTable.cache.maxComplexCacheSize=0
你可以看到,有一些配置主锁的额外参数(超时和锁待时间参数)。
使用主锁DODS实现时,设置DODS表锁缓存为0也是非常重要的。
注意:你能够工作在没有主锁实现的情况(注释上面的行),只不过你必须确实shark只运行在单虚拟机上,并且在具体时刻只有一个客户端线程。
设置日志API接口实现
Shark提供一个默认的日志实现,该实现使用Log4j。你可以写自己的日志API的实现,并且编辑shark配置文件设置它,或许添加一些你的日志实现将读取的额外条目到shark配置文件中。这里是shark标准日志管理器的完整配置:
#
# Standard logging manager defaults
#
LoggingManagerClassName=org.enhydra.shark.logging.StandardLoggingManager
# Standard Logging manager is using log4j, and here is log4j configuration
#
# log4j.rootLogger=info, SharkExecution, Console
log4j.appender.Database=org.apache.log4j.RollingFileAppender
log4j.appender.Database.File=C:/users/sasaboy/Shark/output/Shark/logs/SharkPersistence.log
log4j.appender.Database.MaxFileSize=10MB
log4j.appender.Database.MaxBackupIndex=2
log4j.appender.Database.layout=org.apache.log4j.PatternLayout
log4j.appender.Database.layout.ConversionPattern=%d{ISO8601}: %m%n
log4j.appender.XMLOutFormatForPersistence=org.apache.log4j.FileAppender
log4j.appender.XMLOutFormatForPersistence.File=C:/users/sasaboy/Shark/output/Shark/logs/chainsaw-persistence.log
log4j.appender.XMLOutFormatForPersistence.append=false
log4j.appender.XMLOutFormatForPersistence.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.PackageEvents=org.apache.log4j.RollingFileAppender
log4j.appender.PackageEvents.File=C:/users/sasaboy/Shark/output/Shark/logs/SharkPackageHandlingEvents.log
log4j.appender.PackageEvents.MaxFileSize=10MB
log4j.appender.PackageEvents.MaxBackupIndex=2
log4j.appender.PackageEvents.layout=org.apache.log4j.PatternLayout
log4j.appender.PackageEvents.layout.ConversionPattern=%d{ISO8601}: %m%n
log4j.appender.XMLOutFormatForPackageEvents=org.apache.log4j.FileAppender
log4j.appender.XMLOutFormatForPackageEvents.File=C:/users/sasaboy/Shark/output/Shark/logs/chainsaw-packageevents.log
log4j.appender.XMLOutFormatForPackageEvents.append=false
log4j.appender.XMLOutFormatForPackageEvents.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.SharkExecution=org.apache.log4j.RollingFileAppender
log4j.appender.SharkExecution.File=C:/users/sasaboy/Shark/output/Shark/logs/SharkExecutionFlow.log
log4j.appender.SharkExecution.MaxFileSize=10MB
log4j.appender.SharkExecution.MaxBackupIndex=2
log4j.appender.SharkExecution.layout=org.apache.log4j.PatternLayout
log4j.appender.SharkExecution.layout.ConversionPattern=%d{ISO8601}: %m%n
log4j.appender.XMLOutFormatForExecution=org.apache.log4j.FileAppender
log4j.appender.XMLOutFormatForExecution.File=C:/users/sasaboy/Shark/output/Shark/logs/chainsaw-execution.log
log4j.appender.XMLOutFormatForExecution.append=false
log4j.appender.XMLOutFormatForExecution.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.NTEventLog=org.apache.log4j.nt.NTEventLogAppender
log4j.appender.NTEventLog.source=SharkCORBA-Service
log4j.appender.NTEventLog.append=false
log4j.appender.NTEventLog.layout=org.apache.log4j.PatternLayout
log4j.appender.NTEventLog.layout.ConversionPattern="%d{ISO8601}: [%t], %p, %c: %m%n"
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601}: %m%n
log4j.logger.Persistence=INFO,Database
#log4j.logger.Persistence=INFO,Database,XMLOutFormatForPersistence
log4j.logger.PackageEventLogger=INFO,PackageEvents
#log4j.logger.PackageEventLogger=INFO,PackageEvents,XMLOutFormatForPackageEvents
log4j.logger.Shark=INFO,Console,SharkExecution
#log4j.logger.Shark=INFO,Console,SharkExecution,XMLOutFormatForExecution
标准日志器实现是记录日志即使在shark配置文件中没有log4j的配置(因此默认实现不能配置log4j),log4配置从客户端应用使用shark。
下列名项日志输出通过默认设置产生:
·服务器执行流日志 – 记录每一个重要shark操作像包装载,流程实例化,活动结束等等,这些日志在shark执行期间显示在控制台中。
·包处理事件 – 记录每一个操作执行为包定义文件(XPDL文件)。这些操作是:
·从外包XPDL仓库中装载包到shark的内存中;
·从shark中卸载包;
·已经在shark的内存中的包更新;
·服务器持久化日志 – 记录每一个操作涉及到流程实例持久化DODS实现和下层数据库之间的通信。
你可能强迫shark创建能够被log4j的“chainsaw”阅读器阅读的日志文件。因此,每种日志器类型,你可以在日志器配置底部注释第一行并且释放影响日志器的第二行。
然后,输出日志将产生到能够被“chainsaw”阅读的XML日志文件。
“chainsaw”阅读器能够从工程的根目录使用正确的“chainsaw”脚本启动。“chainsaw”阅读器启动后,你可以用他的[文件]->[装载文件]菜单项打开你想打开的日志文件,这将逞现日志内容。
注意:如果你不想任何日志被记录,注释上面的LoggingManagerClassName行,并且shark在任何地方将不记录日志。
设置参与者映射持久化实现
该API用于存储XPDL中的参与者与shark用户之间的映射信息。Shark与DODS一起提供建立参与者映射持久化实现。
你可以提供自己的参与者映射持久化API实现,并且替换当前的实现。默认的实现是DODS实现。
#=============================================================================
# Default participant map persistence manager is DODS
#
#-----------------------------------------------------------------------------
#
# DODS participant map persistent manager defaults
#
ParticipantMapPersistenceManagerClassName=org.enhydra.shark.partmappersistence.DODSParticipantMappingMgr
# If set to true, the debug information on participant mapping transaction will be
# written to console
#DODSParticipantMappingMgr.debug=false
注意:如果你注释上面的行,shark将工作在没有参与者映射持久化API实现的环境。
设置仓库持久化实现
这个API用于存储XPDL定义和版本信息。Shark与两类API实现一起提供:基于文件系统和基于DODS。
你可以提供自己的API实现,并且替换当前的实现。默认的实现是DODS实现。
# Default repository persistent manager is DODS
#
#RepositoryPersistenceManagerClassName=org.enhydra.shark.repositorypersistence.FileSystemRepositoryPersistenceManager
# The location of xpdl repository.
# If you want to specify it by relative path, you must know that this path must
# be relative to the Shark.conf file (in conf folder)
FileSystemRepositoryPersistenceManager.XPDL_REPOSITORY=repository/internal
# The location of xpdl history repository.
# If you want to specify it by relative path, you must know that this path must
# be relative to the Shark.conf file (in conf folder)
FileSystemRepositoryPersistenceManager.XPDL_HISTORY_REPOSITORY=repository/internal/history
RepositoryPersistenceManagerClassName=org.enhydra.shark.repositorypersistence.DODSRepositoryPersistenceManager
# The database used for Repository persistence when using DODS implementaion
#DODSRepositoryPersistenceManager.DatabaseName=sharkdb
# If set to true, the debug information on repository transaction will be
# written to console
#DODSRepositoryPersistenceManager.debug=false
注意:shark不能工作在没有仓库持久化实现的环境。
设置脚本管理器实现
Shark与标准脚本管理器实现一起提供。这是一个工厂为返回适当的脚本求值程序,标准实现提供三种不同脚本求值程序:Python,Java脚本和Bean shell。
#=============================================================================
# Default Scripting manager is Standard
#
#-----------------------------------------------------------------------------
#
ScriptingManagerClassName=org.enhydra.shark.scripting.StandardScriptingManager
Shark不能工作在没有脚本API实现的环境。
设置脚本映射持久化管理器实现
该API用于存储XPDL中脚本语言映射信息。Shark与DODS建立脚本映射持久化管理器实现一起提供。
你可以提供自己的脚本映射持久化API实现,并且替换当前的实现。通常,该API是没有定义的,因此没有使用它的实现。
#=============================================================================
# Default script map persistence manager is DODS
#
#-----------------------------------------------------------------------------
#
# DODS script map persistent manager defaults
#
#ScriptMapPersistenceManagerClassName=org.enhydra.shark.mappersistence.DODSScriptMappingMgr
# If set to true, the debug information on script mapping transaction will be
# written to console
#DODSScriptMappingMgr.debug=false
注意:如果上面的行被注释,shark将工作在没有脚本映射持久化API实现的环境。
设置安全(认证)管理器实现
该API没有适当的定义,通常只是提供一个例子。将来,该API将包含使用实际的方法认证shark(例如:创建,中止,结束,暂停或者挂起一些流程,用户将获取认证)。
#=============================================================================
# Default Security manager is Standard
#
#-----------------------------------------------------------------------------
#
SecurityManagerClassName=org.enhydra.shark.security.StandardSecurityManager
注意:如果你不想要任何认证,你需要注释上面的行 – shark可以工作在没有实现的环境。
设置工具代理
Shark与标准工具代理工厂实现,几个工具代理例子(Java脚本,BeanShell,运行时应用,SOAP,邮件和Java类工具代理)和默认工具代理实现一起提供。
你可以看工具代理文档学习更多关于工具代理内容。
这些是设置工具代理的配置:
#=============================================================================
# Default Tool agent settings
#
#-----------------------------------------------------------------------------
#
ToolAgentFactoryClassName=org.enhydra.shark.toolagent.ToolAgentFactoryImpl
# The list of tool agents
ToolAgent.JavaClassToolAgent=org.enhydra.shark.toolagent.JavaClassToolAgent
ToolAgent.JavaScriptToolAgent=org.enhydra.shark.toolagent.JavaScriptToolAgent
ToolAgent.BshToolAgent=org.enhydra.shark.toolagent.BshToolAgent
ToolAgent.RuntimeApplicationToolAgent=org.enhydra.shark.toolagent.RuntimeApplicationToolAgent
ToolAgent.MailToolAgent=org.enhydra.shark.toolagent.MailToolAgent
ToolAgent.SOAPToolAgent=org.enhydra.shark.toolagent.SOAPToolAgent
# Default tool agent is used when there is no mappings for some
# XPDL application definition
DefaultToolAgent=org.enhydra.shark.toolagent.DefaultToolAgent
# Specifies the size of cache for holding ext. attributes (for shark performance reason)
# Default -1 means unlimited
#AbstractToolAgent.extAttribsCacheSize=-1
注意:shark能够工作在没有工具代理API实现的环境,但是它只能执行没有包含任何“工具”活动的流程。
设置事务管理器接口实现
Shark已经默认该接口为DODS实现,并且遵守流程实例持久化API的实现。它用于创建SharkTransaction对象。SharkTransaction对于客户端和内部shark接口是可见的。Shark的客户端API覆盖这些方法,任何人可以有或没有事务具体实现。可能使用Shark内部扩展事务实现。
#=============================================================================
# Default transaction factory is DODS
#
#-----------------------------------------------------------------------------
# DODSTransactionFactory defaults
#
TransactionManagerClassName=org.enhydra.shark.transaction.DODSTransactionFactory
# If set to true, the debug information on shark transaction will be
# written to console
#DODSTransactionFactory.debug=false
设置用户组管理器接口实现
Shark与两种认证和用户组API实现一起提供。第一种是基于数据库(使用数据库存储接收组织结构信息),另一种是基于LDAP(使用LDAP服务器获取组织信息)。
这里是设置用户组管理器实现在shark配置文件中的一个片段:
#=============================================================================
# Default UserGroupManager is DODS
#
# WARNING: This and authentication manager must comply.
#-----------------------------------------------------------------------------
#UserGroupManagerClassName=org.enhydra.shark.usergroup.LDAPUserGroupManager
UserGroupManagerClassName=org.enhydra.shark.usergroup.DODSUserGroupManager
# The database used for User/Group when using DODS implementaion
#DODSUserGroupManager.DatabaseName=sharkdb
如果你使用用户组API为LDAP实现方式,你必须使用认证API为LDAP实现是非常重要的(DODS实现也是相同的)。
默认情况,shark使用基于数据库的DODS实现,转换到LDAP实现你可以简单注释引用DODS的行,并且释放引用LDAP(并且做相同的认证设置)的行,编辑相应的当前描述。
注意:shark能够工作在没有该API实现的环境 – 如果你不想使用任何实现,简单的注释上面的行就可以了。
设置用户事务工厂实现
Shark默认该接口为DODS实现,并且遵守用户组接口API的实现。该工厂用于创建UserTransaction对象。UserTransaction对客户端和内部shark接口(认证和用户组接口使用它)是可见的。Shark的客户端API覆盖这些方法,任何人可以有或没有事务的具体实现。可能使用Shark内部扩展事务。
#=============================================================================
# Default user transaction factory is DODS
#
#-----------------------------------------------------------------------------
# DODSUserTransactionFactory defaults
#
UserTransactionManagerClassName=org.enhydra.shark.usertransaction.DODSUserTransactionFactory
# If set to true, the debug information on user transaction will be
# written to console
#DODSUserTransactionFactory.debug=false
设置DODS id生成器缓存大小
你可以指定对象Id缓存大小(活动和流程Id)。在流程或流程被创建时,shark要求数据层(默认为DODS层)为唯一Id。该Id生成器在数据库是同步的,因此shark在某个时刻可以使用不同的虚拟机。通常告诉shark不直接从数据库中获取Id,你可以对象指定一个Id缓存。
#=============================================================================
# DODS Settings for Id Generator
#-----------------------------------------------------------------------------
# default cache size for Ids (if cache size for particular object Id is not
# specified, then this size is used, and if this cache size also isn't
# specified, program default is used)
DODS.defaults.IdGenerator.CacheSize=100
# cache size for process instance Ids
#DODS.IdGenerator._process_.CacheSize=100
# cache size for activity instance Ids
#DODS.IdGenerator._activity_.CacheSize=100
当Shark部署为CORBA服务时设置CORBA参数
你可以设置一些shark部署为CORBA服务使用的参数。
################################# CORBA Settings when used as CORBA service
nameserverhost=localhost
nameserverport=10123
DEFAULT_ADMINISTRATOR_GROUP_NAME=AdminGroup
DEFAULT_ADMINISTRATOR_GROUP_DESCRIPTION=Default Admin Group
DEFAULT_ADMINISTRATOR_USERNAME=admin
DEFAULT_ADMINISTRATOR_PASSWORD=enhydra
DEFAULT_ADMINISTRATOR_FIRST_NAME=Administrator
DEFAULT_ADMINISTRATOR_LAST_NAME=Admin
DEFAULT_ADMINISTRATOR_EMAIL=admin@together.at
nameserver.executable=C:/j2sdk1.4.2_04/bin/tnameserv
# if set to value greater than zero, shark's CORBA wrapper will periodically
# restart nameserver (the given period is in minutes)
nameserver.restarting_period_minutes=0
Deadlines.SERVER_SIDE_CHECKING=false
Limits.SERVER_SIDE_CHECKING=false
# The time in millis used to poll shark for checking deadlines if
# server side checking is ON
Deadlines.pollingTime=300000
# The time in millis used to poll shark for checking limits if
# server side checking is ON
Limits.pollingTime=60000
通过设置名称服务器主机和名称服务器端口属性,指定名称服务器机器和端口。
客户端想连接到Shark服务器时,需要联系名称服务器寻找用于通过“enginename“属性指定的shark服务器的主对象。
首先DEFAULT_ADMINISTRATOR参数确定默认管理员用户。如果你保留这个属性值,你将能够使用“admin”用户名和“enhydra”密码登录shark CORBA服务器。
你可以指定是否shark服务器自身检查超期和限制(通过开启单独线程周期性的要求shark做检查)。如果那样的话,你可以配置周期时间。
CORBA服务器有内存泄漏时Shark服务器被告知。这个选项在客户端告知有这种情况(SharkConnection和其它接口释放连接方法)发生时通过创建服务器跟踪和释放连接对象防止这种情况发生。关闭时,服务器运行前不再担心对象存储空间。
CORBAServer.TrackAndDisconnect=true
如果设置为真,CORBA服务器出现问题时第一次将联系外部请求,由于网络或客户端应用关闭,下次将试着联系流程实现请求。
CORBAServer.ignoreProblematicRequester=true
关于数据模型
你可以在默认的shark配置找到DODS产生的不同数据模型文件:
流程实现持久化数据模型 - (html文档[../SharkInstancePersistence-DODS.html],pdf文档[../SharkInstancePersistence-DODS.pdf])
事件审计数据模型 - (html文档[../SharkEventAudit-DODS.html],pdf文档[../SharkEventAudit -DODS.pdf])
参与者映射持久化数据模型 - (html文档[../SharkPartcipantMapPersistence-DODS.html],pdf文档[../SharkPartcipantMapPersistence -DODS.pdf])
应用程序映射持久化数据模型 - (html文档[../SharkApplicationMapPersistence-DODS.html],pdf文档[../SharkApplicationMapPersistence -DODS.pdf])
仓库持久化数据模型 - (html文档[../SharkRepositoryPersistence-DODS.html],pdf文档[../SharkRepositoryPersistence -DODS.pdf])
用户组数据模型 - (html文档[../SharkUserGroup-DODS.html],pdf文档[../SharkUserGroup -DODS.pdf])
流程锁数据模型 - (html文档[../SharProcessLocking-DODS.html],pdf文档[../SharProcessLocking -DODS.pdf])
Id计数器据模型 - (html文档[../SharUtilities-DODS.html],pdf文档[../SharUtilities -DODS.pdf])
支持数据库
使用持久化API DODS实现,shark可以工作在不同的数据库上 – 事实上,任何数据库被DODS支持可以使用。
这里是DODS支持的数据库列表:
·DB2
·Informix
·HypersonicSQL
·MSQL
·MySQL
·Oracle
·PostgreSQL
·Sybase
与Shark分发一起提供的默认数据是HypersonicSQL,我们也在DB2,MSQL,MySQL,Oracle和PostgreSQL上进行了测试。
使用除HypersonicSQL之外的数据库需要配置什么?
创建不同数据库表的脚本与Shark一起分发。如果你想使用与最初配置Shark工作的数据库不同的数据库,你可以按如下选项做:
·首先你需要停止任何可能运行(POJO swing管理应用/任务管理者,或者CORBA服务器)的Shark实例。
·编辑configure.properties文件设置下列值:
db_loader_job 包含Octoputs装载器作业的目录名称,选项是:db2,hsql,Informix,msql,mysql,oracle,postgresql,sybase;
db_user 数据库认证用户名;
db_passwd 数据库认证用户密码;
db_ext_dirs 包含JDBC驱动程序包的目录,如果需要定义多于一个的目录- 用${path.separator}连接它们;
${db_loader_job}_JdbcDriver 你想使用的JDBC驱动器名称,这些条目已经填充了默认值;
${db_loader_job}_Connection_Url 完整的数据库URL,这些条目已经填充了默认值;
·运行configure.[bat|sh]
如果以上都准备好了,启动shark时将使用你配置的数据库。
注意:装载新创建的数据库时,Octopus将抱怨不能删除索引和表,但是这些警告被忽略。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sscel/archive/2007/03/27/1542375.aspx