⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statemachineaction.java

📁 OBPM是一个开源
💻 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 + -