📄 statemachineaction.java
字号:
package cn.myapps.core.workflow.engine;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import cn.myapps.base.action.ParamsTable;
import cn.myapps.constans.Environment;
import cn.myapps.core.dynaform.document.action.DocumentAction;
import cn.myapps.core.dynaform.document.ejb.Document;
import cn.myapps.core.dynaform.form.ejb.Form;
import cn.myapps.core.dynaform.form.ejb.FormProcess;
import cn.myapps.core.dynaform.form.ejb.FormProcessBean;
import cn.myapps.core.dynaform.form.ejb.ValidateMessage;
import cn.myapps.core.user.action.WebUser;
import cn.myapps.core.workflow.storage.definition.ejb.BillDefiProcess;
import cn.myapps.core.workflow.storage.definition.ejb.BillDefiVO;
import cn.myapps.util.ProcessFactory;
public class StateMachineAction extends DocumentAction {
private String[] _nextids;
private String _currid;
private String _flowType;
private String _attitude;
public String get_attitude() {
return _attitude;
}
public void set_attitude(String _attitude) {
this._attitude = _attitude;
}
public String get_flowType() {
return _flowType;
}
public void set_flowType(String type) {
_flowType = type;
}
public String get_currid() {
return _currid;
}
public void set_currid(String _currid) {
this._currid = _currid;
}
public String[] get_nextids() {
return _nextids;
}
public void set_nextids(String[] _nextids) {
this._nextids = _nextids;
}
public StateMachineAction() throws Exception {
}
public String doViewFlow() throws Exception {
return SUCCESS;
}
public String doFlow() throws Exception {
Environment evt = (Environment) getContext().getApplication().get(
Environment.class.getName());
BillDefiVO flowVO = null;
BillDefiProcess process;
WebUser user = this.getUser();
ParamsTable params = getParams();
Document doc = (Document) getContent();
Document po = (Document) proxy
.doView(((Document) getContent()).getId());
doc.setChilds(po.getChilds());
doc.setState(po.getState());
doc.setFieldPermList(po.getFieldPermList());
doc.setParent(po.getParent());
doc.setFlowid(this.get_flowid());
doc.setAuthor(po.getAuthor());
FormProcessBean fb = (FormProcessBean) (ProcessFactory
.createProcess(FormProcess.class));
Form form = (Form) fb.doView(this.getFormid());
doc = form.createDocument(doc, params, user);
Collection errors = form.validate(doc, params, user);
if (errors != null && errors.size() > 0) {
for (Iterator iter = errors.iterator(); iter.hasNext();) {
ValidateMessage err = (ValidateMessage) iter.next();
this.addFieldError(err.getFieldname(), err.getErrmessage());
}
} else {
try {
// update Document
doc.setAuditdate(new Date()); // last audit date
super.proxy.doUpdate(doc);
process = (BillDefiProcess) ProcessFactory
.createProcess(BillDefiProcess.class);
flowVO = (BillDefiVO) process.doView(this.get_flowid());
StateMachine.doFlow(get_docid(), flowVO, get_currid(),
get_nextids(), getUser(), get_flowType(),
get_attitude(), evt);
set_attitude("");// 将remarks清空
setFlowState(get_docid(), flowVO.getId());
} catch (Exception e) {
System.out.println(e.getMessage());
addFieldError("flowError", e.getMessage());
}
}
return SUCCESS;
}
/**
* 检验total field是否为零
*
* @return
* @throws Exception
*/
public boolean checkNonzero() throws Exception {
Document currdoc = ((Document) this.getContent());
String totalStr = currdoc.getItemValueAsString("total");
if (totalStr == null || totalStr.equals("")) {
return true;
} else {
double total = Double.parseDouble(totalStr);
if (total != 0) {
return true;
}
}
addFieldError("total", "Unable to proceed. Total must not be 0");
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -