[jboss-user] [jBPM] - Re: Link between org.drools.definition.process.Process and asset in Guvnor
Alessandro Dionisi
do-not-reply at jboss.com
Mon Sep 24 04:27:38 EDT 2012
Alessandro Dionisi [https://community.jboss.org/people/cecchisandrone] created the discussion
"Re: Link between org.drools.definition.process.Process and asset in Guvnor"
To view the discussion, visit: https://community.jboss.org/message/761044#761044
--------------------------------------------------------------
I've written this function that using the REST API retrieves the process UUID. It returns the first asset (BPMN file) that has a matching process ID in the definition.
Do you think it's a right solution?
public String getProcessUUID(Process p) {
try {
URL restUrl = new URL(url + "rest/packages/");
HttpURLConnection connection = (HttpURLConnection) restUrl.openConnection();
connection.setRequestProperty("Authorization", "Basic " + new Base64().encodeToString(((username + ":" + password).getBytes())));
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML);
connection.connect();
assertEquals(200, connection.getResponseCode());
assertEquals(MediaType.APPLICATION_ATOM_XML, connection.getContentType());
// Parse response
InputStream in = connection.getInputStream();
Document<Feed> doc = abdera.getParser().parse(in);
Feed feed = doc.getRoot();
List<Entry> entries = feed.getEntries();
Iterator<Entry> it = entries.iterator();
while (it.hasNext()) {
Entry entry = it.next();
// Match package
if (p.getPackageName().equals(entry.getTitle())) {
// Get the assets
restUrl = new URL(url + "rest/packages/" + p.getPackageName() + "/assets");
HttpURLConnection assetConnection = (HttpURLConnection) restUrl.openConnection();
assetConnection.setRequestProperty("Authorization", "Basic " + new Base64().encodeToString(((username + ":" + password).getBytes())));
assetConnection.setRequestMethod("GET");
assetConnection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML);
assetConnection.connect();
assertEquals(200, assetConnection.getResponseCode());
assertEquals(MediaType.APPLICATION_ATOM_XML, assetConnection.getContentType());
// Parse response
InputStream in2 = assetConnection.getInputStream();
Document<Feed> assets = abdera.getParser().parse(in2);
Feed assetFeed = assets.getRoot();
List<Entry> assetsEntries = assetFeed.getEntries();
for (Entry atomEntry : assetsEntries) {
ExtensibleElement metadataExtension = atomEntry.getExtension(Translator.METADATA);
ExtensibleElement formatExtension = metadataExtension.getExtension(Translator.FORMAT);
ExtensibleElement uuidExtension = metadataExtension.getExtension(Translator.UUID);
String uuid = uuidExtension.getSimpleExtension(Translator.VALUE);
if (formatExtension.getSimpleExtension(Translator.VALUE).contains("bpmn")) {
// Check if the bpmn file contains the specified process ID
SemanticModules modules = new SemanticModules();
modules.addSemanticModule(new BPMNSemanticModule());
modules.addSemanticModule(new BPMNDISemanticModule());
XmlProcessReader processReader = new XmlProcessReader(modules, getClass().getClassLoader());
processReader.read(atomEntry.getContentStream());
// The bpmn file matches the process ID, return the UUID of the asset
if (processReader.getProcess().get(0).getId().equals(p.getId()))
return uuid;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/761044#761044]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120924/ac76b88e/attachment-0001.html
More information about the jboss-user
mailing list