-
1. Re: Visualize workflow and it's current state
rebody Aug 18, 2010 10:00 AM (in response to jdevelop)Hi Eugene,
First you could get process picture from repostitoryService.
String imageName = processDefinition.getImageResourceName(); InputStream imageInputStream = repositoryService .getResourceAsStream(processDefinition.getDeploymentId(), imageName);
Second you could get activityCoordinates from repositoryService.
ActivityCoordinates ac = repositoryService .getActivityCoordinates(processDefinitionId, activityName);
-
2. Re: Visualize workflow and it's current state
jdevelop Aug 18, 2010 11:52 AM (in response to rebody)Oh, thanks a lot for the quick and prompt response!
Do you know, are there any examples of images, which could be retrieved from JBPM with this approach? And are they customizable (e.g is it possible to change fonts, colors etc)?
Thanks again!
-
3. Re: Visualize workflow and it's current state
rebody Aug 18, 2010 9:02 PM (in response to jdevelop)Hi Eugene,
If you can speek Cihnese, you could watch this video.
Related projects can be uploaded from here: http://code.google.com/p/family168/downloads/detail?name=sample.zip&can=2&q=
-
4. Re: Visualize workflow and it's current state
jdevelop Aug 19, 2010 10:30 AM (in response to rebody)Well, in the meantime I tried to implement generation of an image after workflow is deployed.
I tried to get image with the following code:
NewDeployment deployment = repositoryService.createDeployment();
String name = workflow.getName().replaceAll(" ", "_");
String key = deployment.addResourceFromString(
name + "_" + workflow.getVersion() + ".jpdl.xml",
workflowSerializer.serialize(workflow)).deploy();
ProcessDefinitionQuery pdq = repositoryService
.createProcessDefinitionQuery();
List<ProcessDefinition> processDefinitions = pdq.processDefinitionKey(
key).list();
for (ProcessDefinition pd : processDefinitions) {
String imageName = pd.getImageResourceName();
File f = new File("/home/bofh/" + imageName);
try {
FileOutputStream fos = new FileOutputStream(f);
System.out.println("Created file " + f.getAbsolutePath());
InputStream imageInputStream = repositoryService
.getResourceAsStream(pd.getDeploymentId(), imageName);
byte[] buffer = new byte[10240];
int read = 0;
while ((read = imageInputStream.read(buffer)) > 0) {
fos.write(buffer, 0, read);
}
fos.flush();
fos.close();
imageInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}However the name of image at line
String imageName = pd.getImageResourceName();
is always null, which causes NPE on getting the actual image stream
Am I missing something?
Thank you in advance!
-
5. Re: Visualize workflow and it's current state
rebody Aug 19, 2010 12:01 PM (in response to jdevelop)Hi Eugene,
You must deploy both xml and png in the same NewDeployment.
If you deploy them separately, They will have different deploymentId, so you can't get png by deploymentId of xml.
You could see these records in table JBPM4_LOB of database.
-
6. Re: Visualize workflow and it's current state
jdevelop Aug 19, 2010 12:26 PM (in response to rebody)Well, the problem is that I don't have an image to deploy. I want JBPM engine to generate it for me from a workflow.
Is that possible?
-
7. Re: Visualize workflow and it's current state
rebody Aug 19, 2010 7:55 PM (in response to jdevelop)Hi Eugene,
At this moment, PVM can't provide this feature. And still somebody mentioned that the server may be not provide graphic utils. So event if we could provide an automatic generated image feature, we cannot guarantee whether this feature could run successfully.
So we suggest you use GPD designing process definition, and it could generate the related png image for you.
Regards.
-
8. Re: Visualize workflow and it's current state
achitaley Aug 20, 2010 3:29 AM (in response to jdevelop)To Eugene Dzhurinsky, HuiSheng Xu and other JBPM Users who desire to view the Current Status of a Process Instance in a Graphical Mode / PNG Image.
I have received a generous assistance of Roberto Harihar, who has developed this code in viewing the Current Status of A Process Instance Graphically. (See attached Image - Sample.png & Code : jbpm_sample_image.jar)
With the attached files and steps mentioned below, we can generate an Image of the Current Status of Process Instance. This can be integrated into our application as well.
1) Use the attached File (jbpm_image_sample.jar) and extract it. This JAR Contains the necessary code to generate PNG Image of Current Process Instance at Runtime. This also contains the required images to generate the PNG Image.
2) In addition to above, in the same package, create a Java Class File named Render.java and insert the following code in it:
import java.io.File; import java.util.List; import javax.imageio.ImageIO; import org.jbpm.api.Configuration; import org.jbpm.api.ProcessEngine; import org.jbpm.api.model.OpenExecution; import com.airsanchay.jbpm.JBPMUtilities; import org.jbpm.api.ExecutionService; import org.jbpm.api.HistoryService; import org.jbpm.api.IdentityService; import org.jbpm.api.ManagementService; import org.jbpm.api.RepositoryService; import org.jbpm.api.TaskService;
public class Render { /** * @param args */ public static void main(String[] args) throws Exception { String processInstanceId = "AIRSanchayWorkflow.1870001"; /** if you are running as a java application - outside a j2ee container */ ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine(); List historyActivities = processEngine.getHistoryService().createHistoryActivityInstanceQuery().processInstanceId(processInstanceId).list(); RenderImage_JpdlModel jpdlModel = new RenderImage_JpdlModel(JBPMUtilities.class.getResourceAsStream("AIRSanchayWorkflow.jpdl.xml"), historyActivities); ImageIO.write(new RenderImage_JpdlModelDrawer().draw(jpdlModel), "png", new File("/root/Desktop/myprocess.png")); } }
3) In the above Code, JBPMUtilities.class is the class wherein I have specified all initial parameters for JBPM in my application. Replace this with your equivalent file.
4) Due Credits to Ricardo!
5) If you can update the code to include Assignee Name and Task Due Date also, do email me the revised code.
6) At last, to all JBPM Developers and Users --- Keep the good work & Enjoy !!!!!!!
Adwait Chitaley
Avid JBPM User
India
-
Sample.png 109.5 KB
-
jbpm_image_sample.jar 87.6 KB
-