|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.drools.repository.RulesRepository
public class RulesRepository
RulesRepository is the class that defines the bahavior for the JBoss Rules (drools) rule repository based upon the JCR specification (JSR-170).
An instance of this class is capable of storing rules used by the JBoss Rule engine. It also provides a versioning capability for rules. Rules can be imported from specified files. The RulesRepository is also capable of storing DSL content. Rules can be explicitly tied to a particular DSL node within the repository, and this reference can either follow the head version, or a specific version of the DSL node.
The RulesRepository also is capable of storing RulePackages, which aggregate one or more Rules into a set. RulePackages hold references to the nodes storing the content of the rules in the set within the repository. Each entry in a rulepackage can either refer to the head version of the given rule node, or a specific version.
Rules can be tagged. Tags are stored in a separate area of the repository, and can be added on demand. Rules can have 0 or more tags. Tags are intended to help provide a means for searching for specific types of rules quickly, even when they aren't all part of the same rulepackage.
Rules can be associated with 0 or 1 states. States are created in a seperate area of the repository. States are intended to help track the progress of a rule as it traverses its life- cycle. (e.g. draft, approved, deprecated, etc.)
The RulesRepository provides versioning of rules, rule packages, and DSLs. This versioning works in a strictly linear fashion, with one version having at most 1 predecessor version (or none, if it is the first version), and at most 1 successor version (or none, if it is the most recently checked-in version). The JCR specification supports a more complicated versioning system, and if there is sufficient demand, we can modify our versioning scheme to be better aligned with JCR's versioning abilities.
Field Summary | |
---|---|
static String |
DROOLS_URI
|
static String |
PACKAGE_SNAPSHOT_AREA
The name of the rulepackage area of the repository |
static String |
RULE_PACKAGE_AREA
The name of the rulepackage area of the repository |
static String |
RULES_REPOSITORY_NAME
The name of the rules repository within the JCR repository |
static String |
STATE_AREA
The name of the state area of the repository |
static String |
TAG_AREA
The name of the tag area of the repository |
Constructor Summary | |
---|---|
RulesRepository(javax.jcr.Session session)
This requires a JCR session be setup, and the repository be configured. |
Method Summary | |
---|---|
protected static javax.jcr.Node |
addNodeIfNew(javax.jcr.Node parent,
String nodeName,
String type)
Will add a node named 'nodeName' of type 'type' to 'parent' if such a node does not already exist. |
boolean |
containsPackage(String name)
This returns true if the repository contains the specified package name. |
String |
copyAsset(String uuidSource,
String destinationPackage,
String destinationName)
This will copy an assets content to the new location. |
void |
copyPackageSnapshot(String packageName,
String snapshotName,
String newName)
Copies a snapshot to the new location/label. |
PackageItem |
createPackage(String name,
String description)
Adds a package to the repository. |
void |
createPackageSnapshot(String packageName,
String snapshotName)
This will copy the package to the snapshot area. |
StateItem |
createState(String name)
Create a status node of the given name. |
byte[] |
dumpRepositoryXml()
|
byte[] |
exportRulesRepository()
TODO: comment |
List |
findAssetsByCategory(String categoryTag)
TODO: Comment |
List |
findAssetsByCategory(String categoryTag,
boolean seekArchivedAsset)
This will retrieve a list of RuleItem objects - that are allocated to the provided category. |
AssetItemIterator |
findAssetsByName(String name)
|
AssetItemIterator |
findAssetsByName(String name,
boolean seekArchived)
This will search assets, looking for matches against the name. |
javax.jcr.Session |
getSession()
|
StateItem |
getState(String name)
Gets a StateItem for the specified state name. |
void |
importRulesRepository(byte[] byteArray)
|
Iterator |
listPackages()
|
String[] |
listPackageSnapshots(String packageName)
Return a list of the snapshots available for the given package name. |
StateItem[] |
listStates()
|
AssetItem |
loadAssetByUUID(String uuid)
Loads a rule by its UUID (generally the fastest way to load something). |
CategoryItem |
loadCategory(String tagName)
This will return a category for the given category path. |
PackageItem |
loadDefaultPackage()
This will return or create the default package for rules that have no home yet. |
PackageItem |
loadPackage(String name)
Loads a RulePackage for the specified package name. |
PackageItem |
loadPackageByUUID(String uuid)
Similar to above. |
PackageItem |
loadPackageSnapshot(String packageName,
String snapshotName)
|
void |
logout()
Explicitly logout of the underlying JCR repository. |
void |
moveRuleItemPackage(String newPackage,
String uuid,
String explanation)
This moves a rule asset from one package to another, preserving history etc etc. |
void |
removePackageSnapshot(String packageName,
String snapshotName)
This will remove the specified snapshot. |
void |
restoreHistoricalAsset(AssetItem versionToRestore,
AssetItem headVersion,
String comment)
This will restore the historical version, save, and check it in as a new version with the given comment. |
void |
save()
Save any pending changes. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String DROOLS_URI
public static final String RULE_PACKAGE_AREA
public static final String PACKAGE_SNAPSHOT_AREA
public static final String TAG_AREA
public static final String STATE_AREA
public static final String RULES_REPOSITORY_NAME
Constructor Detail |
---|
public RulesRepository(javax.jcr.Session session)
Method Detail |
---|
protected static javax.jcr.Node addNodeIfNew(javax.jcr.Node parent, String nodeName, String type) throws RulesRepositoryException
parent
- the parent node to add the new node tonodeName
- the name of the new nodetype
- the type of the new node
RulesRepositoryException
public void logout()
public String copyAsset(String uuidSource, String destinationPackage, String destinationName)
public PackageItem loadPackage(String name) throws RulesRepositoryException
name
- the name of the package to load
RulesRepositoryException
public boolean containsPackage(String name)
public PackageItem loadPackageSnapshot(String packageName, String snapshotName)
public void createPackageSnapshot(String packageName, String snapshotName)
public void removePackageSnapshot(String packageName, String snapshotName)
public void copyPackageSnapshot(String packageName, String snapshotName, String newName)
packageName
- The name of the package.snapshotName
- The label of the source snapshotnewName
- The new label. The old one is left intact.public PackageItem loadDefaultPackage() throws RulesRepositoryException
RulesRepositoryException
public PackageItem loadPackageByUUID(String uuid) throws RulesRepositoryException
uuid
- the uuid of the package to load
RulesRepositoryException
public void restoreHistoricalAsset(AssetItem versionToRestore, AssetItem headVersion, String comment)
versionToRestore
- headVersion
- comment
- public AssetItem loadAssetByUUID(String uuid)
public PackageItem createPackage(String name, String description) throws RulesRepositoryException
name
- what to name the node addeddescription
- what description to use for the node
RulesRepositoryException
public StateItem getState(String name) throws RulesRepositoryException
name
- the name of the state to get
RulesRepositoryException
public StateItem createState(String name)
public CategoryItem loadCategory(String tagName) throws RulesRepositoryException
tagName
- the name of the tag to get. If the tag to get is within a
heirarchy of tag nodes, specify the full path to the tag node
of interest (e.g. if you want to get back 'child-tag', use
"parent-tag/child-tag")
RulesRepositoryException
public List findAssetsByCategory(String categoryTag, boolean seekArchivedAsset) throws RulesRepositoryException
RulesRepositoryException
public List findAssetsByCategory(String categoryTag) throws RulesRepositoryException
RulesRepositoryException
public byte[] exportRulesRepository() throws IOException, javax.jcr.PathNotFoundException, javax.jcr.RepositoryException
IOException
javax.jcr.PathNotFoundException
javax.jcr.RepositoryException
public byte[] dumpRepositoryXml() throws javax.jcr.PathNotFoundException, IOException, javax.jcr.RepositoryException
javax.jcr.PathNotFoundException
IOException
javax.jcr.RepositoryException
public void importRulesRepository(byte[] byteArray)
byteArray
- public Iterator listPackages()
public javax.jcr.Session getSession()
public void save()
public void moveRuleItemPackage(String newPackage, String uuid, String explanation)
newPackage
- The destination package.uuid
- The UUID of the ruleexplanation
- The reason (which will be added as the checkin message).public String[] listPackageSnapshots(String packageName)
public AssetItemIterator findAssetsByName(String name, boolean seekArchived)
public AssetItemIterator findAssetsByName(String name)
public StateItem[] listStates()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |