They are VERY VERY messy, as I am making first steps with Seam and testing also other things in that files...
MyPanelBean:
package org.gutek.example.jbpm;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.naming.InitialContext;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;
import static org.jboss.seam.ScopeType.SESSION;
import org.jboss.seam.log.Log;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.TaskService;
import org.jbpm.api.task.Task;
@Stateful
@Scope(SESSION)
@Name("mypanel")
@AutoCreate
public class MyPanelBean implements Serializable, MyPanel{
@Logger
private static Log log; // Dla beanow Entity i Stateful, logger musi byc static! Jesli nie to NPE!
@In(required=false)
@Out(required=false)
private UserChoice userChoice;
@DataModel
private List<Task> personalTasks;
/*
@DataModel
private List<Task> groupTasks;
*/
@DataModelSelection
@Out(required=false)
private Task task;
@In(required=false)
@Out(required=false)
private Map<String, Object> processVariables;
/*
@In(create=true)
@Out
private TaskBean taskstate;
*/
//@In(value="val",create=true,required=false)
//@Out(required=false)
private String val ="blablabla";
public String getVal() {
log.info("========= getting val: " + this.val + " myPanelBean: " + this);
return this.val;
}
public void setVal(String val) {
this.val = val;
log.info("========= setting val: " + val + " myPanelBean: " + this);
}
//@Factory(value="val")
public void initVal(){
this.val = "initial value";
log.info("========== val should have been initialized... [" + this.val + "] myPanelBean: " + this);
}
/*
@Create
@Override
public void init() {
this.val = "XYZ-777";
}
*/
public void relogin(){
if( userChoice != null){
log.debug("========== Przelogowany na: " + userChoice.getLabel());
refreshTaskList();
}
}
@Factory("personalTasks")
public void refreshTaskList(){
if(userChoice != null){
log.debug("====== szukam prywatnych taskow dla usera: " +userChoice.toString());
ProcessEngine engine = JBPMFacade.getProcessEngine();
log.debug("======= mam silnik: " + engine);
TaskService taskService = engine.getTaskService();
log.debug("======= mam taskService: " + taskService);
personalTasks = taskService.findPersonalTasks(userChoice.toString());
log.debug("====== znalazlem taski: " + personalTasks);
}else{
personalTasks = new ArrayList<Task>();
}
}
public void runNewProcess(){
ProcessEngine engine = JBPMFacade.getProcessEngine();
log.info("======= mam silnik: " + engine);
ExecutionService executionService = engine.getExecutionService();
log.info("======= mam executionService: " + executionService);
executionService.startProcessInstanceByKey("myprocess");
log.info("======= proces odpalony");
refreshTaskList();
}
public String editTask(){
if(task != null){
log.info("============ Wybrano zadanie: " + task.getId());
Set<String> processVarNames = JBPMFacade.getProcessEngine().getExecutionService().getVariableNames(task.getExecutionId());
processVariables = JBPMFacade.getProcessEngine().getExecutionService().getVariables(task.getExecutionId(), processVarNames);
return task.getFormResourceName();
} else{
log.warn("============ wybrany TaskBean == null !!!");
}
return null;
}
public String finishTask(){
log.info("============ Rozpoczynam przepychanie Tasku dalej...");
String execId = task.getExecutionId();
JBPMFacade.getProcessEngine().getExecutionService().signalExecutionById(execId);
log.info("============ Task przepchniety :)");
refreshTaskList();
return "/myPanel.jsp";
}
public String saveAndFinishTask(){
// TODO: Zmienne z formularza chyba sie same zdjely?
log.info("======== Zmienne zdjete z formularza? : " + processVariables );
log.info("======== val : " + this.val);
return finishTask();
}
public UserChoice getUserChoice() {
return userChoice;
}
public void setUserChoice(UserChoice userChoice) {
this.userChoice = userChoice;
}
public Map<String, Object> getProcessVariables() {
return processVariables;
}
public void setProcessVariables(Map<String, Object> processVariables) {
this.processVariables = processVariables;
}
@Remove @Destroy
public void destroy() {}
public enum UserChoice {
AAA("User A"),
BBB("User B"),
CCC("User C"),
DDD("User D"),
EEE("User E"),
FFF("User F");
private String label;
UserChoice(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
}
}
... and the view:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s"%>
<html>
<head>
<link href="/seam-jbpm/styles.css" rel="stylesheet" type="text/css" />
<!-- TABS-LIB START -->
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
$("#tabs").tabs();
});
</script>
<!-- TABS-LIB END -->
</head>
<body>
<f:view>
<!--<form action="${form.action}" method="POST" enctype="multipart/form-data">-->
<h:form id="taskform">
<h1>Szczegoly sprawy nr: ${process_id}</h1>
<br/><br/>
<h:inputText id="testVal" value="#{mypanel.val}"/>
<table>
<tr>
<td>aaa</td>
<td><select name="business_type"><option value="operation">Operacja</option></select></td>
<td>bbb</td>
<td><h:inputText id="policy_id" value="#{mypanel.processVariables.policy_id}"/><a href="#" onclick="alert('TODO: okienko dialogowe do wyszukiwania numeru polisy');">...</a></td>
</tr>
<tr>
<td>ccc</td>
<td><select name="business_area">
<option value="eee">ddd</option>
<option value="fff">ggg</option></select>
</td>
<td>hhh</td>
<td><input type="text" name="proposal_id" /><a href="#" onclick="alert('TODO: okienko dialogowe do wyszukiwania numeru wniosku');">...</a></td>
</tr>
<tr>
<td>iii</td>
<td><select name="business_status">
<option value="jjj">W realizacji</option>
</td>
<td>kkk</td>
<td><input type="text" name="pretension_id" /><a href="#" onclick="alert('TODO: okienko dialogowe');">...</a></td>
</tr>
<tr>
<td>lll</td>
<td><input type="text" name="business_priority" value="Wysoki" disabled="true" /></td>
<td>Data</td>
<td><input type="text" name="time_created_str" disabled="true" value="${time_created_str}" /></td>
</tr>
<tr>
<td>mmm</td>
<td><input type="text" name="business_owner" value="xxxxxxx" disabled="true" /></td>
<td>nnn</td>
<td><h:inputText id="business_created_by" value="#{mypanel.processVariables['business_created_by']}"/></td>
</tr>
<tr>
<td>ooo</td>
<td><input type="text" name="deadline_time_str" value="${deadline_time_str}" disabled="true" /></td>
<td>ooo</td>
<td><input type="text" name="time_last_modified_str" value="${time_last_modified_str}" disabled="true" /></td>
</tr>
<tr>
<td></td>
<td></td>
<td>Uzytkownik modyfikujacy</td>
<td><input type="text" name="modifying_user" value="zzzzzzz" disabled="true" /></td>
</tr>
</table>
<div id="tabs">
<ul>
<li><a href="#tab_clients"><span>werewqr</span></a></li>
<li><a href="#tab_contacts_hisotry"><span>rewqrewr</span></a></li>
<li><a href="#tab_documents"><span>rewrewrew</span></a></li>
<li><a href="#tab_required_documents"><span>grthgrt</span></a></li>
<li><a href="#tab_task_list"><span>htrhtrh</span></a></li>
</ul>
<div id="tab_clients">
<p>First tab is active by default:</p>
<pre><code>$('#example').tabs();</code></pre>
</div>
<div id="tab_contacts_hisotry">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div id="tab_documents">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div id="tab_required_documents">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div id="tab_task_list">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
</div> <!-- div id="tabs"-->
<s:button action="#{mypanel.saveAndFinishTask}" value="Zapisz zmiany i zakoncz zadanie"/>
</h:form>
<!--</form>-->
</f:view>
</body>
</html>