Contoh dalam artikel ini menunjukkan metode implementasi tampilan diagram alur Activiti. Langkah-langkah spesifiknya adalah sebagai berikut:
1. Kode gambar tampilan test case adalah sebagai berikut:
public void viewImage() throws Exception { // Membuat objek layanan gudang RepositoryService repositoriService = processEngine.getRepositoryService(); // Temukan file yang perlu ditampilkan dari gudang String deploymentId = "701"; repositoriService.getDeploymentResourceNames (deploymentId); String imageName = null; if(nama.indexOf(".png")>=0){ imageName = nama; } } if(imageName!=null){// System.out.println(imageName); /"+ imageName); // Dapatkan aliran input file melalui ID penerapan dan nama file InputStream di = repositoriService.getResourceAsStream(deploymentId, imageName); FileUtils.copyInputStreamToFile(dalam, f }
menjelaskan:
1) deploymentId adalah ID penerapan proses
2) resourceName adalah nilai kolom NAME_ pada tabel act_ge_bytearray
3) Gunakan metode getDeploymentResourceNames dari repositoriService untuk mendapatkan nama semua file di bawah penerapan yang ditentukan
4) Gunakan metode getResourceAsStream dari repositoriService untuk meneruskan ID penerapan dan nama file guna mendapatkan aliran input file dengan nama yang ditentukan dalam penerapan.
5) Untuk operasi aliran IO terakhir, gunakan metode copyInputStreamToFile dari alat FileUtils untuk menyelesaikan penyalinan aliran proses ke file.
2. Lihat gambar pada halaman definisi proses di proyek web:
public String viewImage(){InputStream in = repositoriService.getResourceAsStream.getImageStream(deploymentId,imageName);//Proyek sebenarnya dari metode ini di sini harus ditempatkan di layanan HttpServletResponse resp = ServletActionContext.getResponse();try { OutputStream out = resp .getOutputStream( ); // Tulis proses masukan gambar ke dalam aliran keluaran resp byte[] b = baru byte[1024]; for (int len = -1; (len= in.read(b))!=-1; ) { out.write(b, 0, len); .close( ); in.close();} tangkapan (IOException e) { e.printStackTrace();}kembalikan nol;}
menjelaskan:
1) deploymentId adalah ID penerapan proses, imageName adalah nama gambar
2) Karena gambar dilihat dari halaman daftar definisi proses, id dan imageName dapat diperoleh dari definisi proses (ProcessDefinition) (String getDeploymentId(); dan String getDiagramResourceName();)
3) Tag halaman web <a target="_blank" href="viewImage?deploymentId=1&imageName=imageName.png" rel="external nofollow" >Lihat diagram alur</a>
3. Lihat diagram alur proyek web saat ini
public String viewCurrentImage(){ProcessDefinition pd = service.getProcessDefinitionByTaskId(taskId);// 1. Dapatkan ID penerapan proses putContext("deploymentId", pd.getDeploymentId());// 2. Dapatkan nama gambar proses putContext ("NamaGambar" , pd.getDiagramResourceName());// 3. Dapatkan koordinat aktivitas saat ini Map<String,Object> currentActivityCoordinates =service.getCurrentActivityCoordinates(taskId);putContext("acs", currentActivityCoordinates);return "image";}
Implementasi kode service.getProcessDefinitionByTaskId(taskId);
public ProcessDefinition getProcessDefinitionByTaskId(String taskId) {// 1. Dapatkan taskTask task = taskService.createTaskQuery().taskId(taskId).singleResult();// 2. Dapatkan objek definisi proses ProcessDefinition melalui pdid objek tugas pd = repositoriService.getProcessDefinition (task.getProcessDefinitionId());kembali pd;}
Implementasi kode service.getCurrentActivityCoordinates(taskId);
public Map<String, Object> getCurrentActivityCoordinates(String taskId) {Map<String, Object> koordinat = new HashMap<String, Object>(); // 1. Dapatkan IDTask yang sedang aktif task = taskService.createTaskQuery().taskId ( taskId).singleResult();ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();String currentActivitiId = pi.getActivityId();// 2. Dapatkan definisi proses ProcessDefinitionEntity pd = (ProcessDefinitionEntity) repositoriService.getProcessDefinition(task.getProcessDefinitionId( ));// 3. Gunakan definisi proses untuk mendapatkan objek aktivitas ActivityImpl melalui currentActivitiId aktivitas = pd.findActivity(currentActivitiId);// 4. Dapatkan koordinat koordinat aktivitas.put("x", aktivitas.getX()); put("y" , aktivitas.getY());koordinat.put("lebar", aktivitas.getWidth());koordinat.put("tinggi", aktivitas.getHeight());koordinat pengembalian;}
bagian halaman gambar:
Dari halaman daftar tugas pribadi, klik <a target="_blank" href="/viewCurrentImage?taskId=1" rel="external nofollow" >Lihat diagram alur saat ini</a> untuk melompat ke halaman berikut:
<body><!-- 1. Dapatkan diagram alur aturan. Di sini kita menggunakan tag strust2 untuk memasukkan nilai ke dalam tumpukan nilai di atas--><img style="position: absolute;top: 0px;left: 0px ; " src="viewImage?deploymentId=<s:nilai properti='#deploymentId'/>&imageName=<s:properti value='#imageName'/>"><!-- 2. Gambar DIV secara dinamis sesuai dengan koordinat aktivitas saat ini --><div style="position: absolute;border:1px solid red;top:<s: nilai properti ='#acs.y'/>px;kiri: <s:nilai properti='#acs.x'/>px;lebar: <s:property value='#acs.width'/>px;height:<s:property value='#acs.height'/>px "></div></body>