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

📄 wfexecutionobjectimpl.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    public void setProcessContext(String contextKey) throws WfException, InvalidData, UpdateNotAllowed {                    GenericValue dataObject = getRuntimeObject();        try {            dataObject.set("runtimeDataId", contextKey);            dataObject.store();        } catch (GenericEntityException e) {            throw new WfException(e.getMessage(), e);        }    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#contextKey()     */    public String contextKey() throws WfException {        if (getRuntimeObject().get("runtimeDataId") == null)            return null;        else            return getRuntimeObject().getString("runtimeDataId");    }     /**     * @see org.ofbiz.workflow.WfExecutionObject#processContext()     */    public Map processContext() throws WfException {        return getContext();    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#workflowStateType()     */    public List workflowStateType() throws WfException {        String[] list = {"open", "closed"};        return Arrays.asList(list);    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#terminate()     */    public void terminate() throws WfException, CannotStop, NotRunning {        String stateStr = "closed.terminated";        if (!state().equals("open.running"))            throw new NotRunning();        if (!validStates().contains(stateStr))            throw new CannotStop();        changeState(stateStr);    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#setDescription(java.lang.String)     */    public void setDescription(String newValue) throws WfException {        GenericValue valueObject = getDefinitionObject();        try {            valueObject.set("description", newValue);            valueObject.store();        } catch (GenericEntityException e) {            throw new WfException(e.getMessage(), e);        }    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#description()     */    public String description() throws WfException {        return getDefinitionObject().getString("description");    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#lastStateTime()     */    public Timestamp lastStateTime() throws WfException {        GenericValue dataObject = getRuntimeObject();        if (dataObject == null || dataObject.get("lastStatusUpdate") == null)            throw new WfException("No runtime object or status has never been set.");        return dataObject.getTimestamp("lastStatusUpdate");    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#getSequenceHistory(int)     */    public List getSequenceHistory(int maxNumber) throws WfException,            HistoryNotAvailable {        return history;    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#getIteratorHistory(java.lang.String, java.util.Map)     */    public Iterator getIteratorHistory(String query,        Map namesInQuery) throws WfException, HistoryNotAvailable {        return history.iterator();    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#resume()     */    public void resume() throws WfException, CannotResume, NotRunning, NotSuspended {        if (!state().equals("open.not_running.suspended")) {            if (state().equals("open.not_running.not_started")) {                throw new NotRunning();            } else if (state().startsWith("closed")) {                throw new CannotResume();            } else {                throw new NotSuspended();            }        } else {            changeState("open.running");        }                                           }    /**     * @see org.ofbiz.workflow.WfExecutionObject#howClosedType()     */    public List howClosedType() throws WfException {        String[] list = {"completed", "terminated", "aborted"};        return Arrays.asList(list);    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#changeState(java.lang.String)     */    public void changeState(String newState) throws WfException, InvalidState, TransitionNotAllowed {                    // Test is transaction is allowed???        GenericValue dataObject = getRuntimeObject();        if (validStates().contains(newState)) {            try {                long now = (new Date()).getTime();                dataObject.set("currentStatusId", WfUtil.getOFBStatus(newState));                dataObject.set("lastStatusUpdate", new Timestamp(now));                dataObject.store();            } catch (GenericEntityException e) {                throw new WfException(e.getMessage(), e);            }        } else {            throw new InvalidState();        }    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#suspend()     */    public void suspend() throws WfException, CannotSuspend, NotRunning, AlreadySuspended {                    changeState("open.not_running.suspended");    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#getDelegator()     */    public GenericDelegator getDelegator() throws WfException {        return delegator;    }    /**     * @see org.ofbiz.workflow.WfExecutionObject#getDefinitionObject()     */    public GenericValue getDefinitionObject() throws WfException {        String entityName = activityId != null ? "WorkflowActivity" : "WorkflowProcess";        GenericValue value = null;        Map fields = UtilMisc.toMap("packageId", packageId, "packageVersion", packageVersion, "processId", processId,                "processVersion", processVersion);        if (activityId != null)            fields.put("activityId", activityId);        try {            value = getDelegator().findByPrimaryKey(entityName, fields);        } catch (GenericEntityException e) {            throw new WfException(e.getMessage(), e);        }        return value;    }    public GenericValue getRuntimeObject() throws WfException {        GenericValue value = null;        try {            value = getDelegator().findByPrimaryKey("WorkEffort",                        UtilMisc.toMap("workEffortId", workEffortId));        } catch (GenericEntityException e) {            throw new WfException(e.getMessage(), e);        }        return value;    }    /**     * Getter for this type of execution object.     * @return String     */    public abstract String executionObjectType();    /**     * Updates the runtime data entity     * @param field The field name of the entity (resultDataId,contextDataId)     * @param value The value to serialize and set     * @throws WfException     */    protected void setSerializedData(Map value) throws WfException, InvalidData {        GenericValue runtimeData = null;        GenericValue dataObject = getRuntimeObject();        try {            if (dataObject.get("runtimeDataId") == null) {                String seqId = getDelegator().getNextSeqId("RuntimeData").toString();                runtimeData = getDelegator().makeValue("RuntimeData",                            UtilMisc.toMap("runtimeDataId", seqId));                getDelegator().create(runtimeData);                dataObject.set("runtimeDataId", seqId);                dataObject.store();            } else {                runtimeData = dataObject.getRelatedOne("RuntimeData");            }            // String serialized = XmlSerializer.serialize(value);            // System.out.println(serialized);            runtimeData.set("runtimeInfo", XmlSerializer.serialize(value));            runtimeData.store();        } catch (GenericEntityException e) {            throw new WfException(e.getMessage(), e);        } catch (SerializeException e) {            throw new InvalidData(e.getMessage(), e);        } catch (FileNotFoundException e) {            throw new InvalidData(e.getMessage(), e);        } catch (IOException e) {            throw new InvalidData(e.getMessage(), e);        }    }    /**     * Get an instance of the local dispatcher     * @return LocalDispatcher instance for use with this workflow     * @throws WfException     */    protected LocalDispatcher getDispatcher() throws WfException {        try {            return GenericDispatcher.getLocalDispatcher(dispatcherName, getDelegator());        } catch (GenericServiceException e) {            throw new WfException("No workflow service dispatcher", e);        }    }    private Map getContext() throws WfException {        GenericValue dataObject = getRuntimeObject();        String contextXML = null;        Map context = null;        if (dataObject.get("runtimeDataId") == null)            return context;        try {            GenericValue runtimeData = dataObject.getRelatedOne("RuntimeData");            contextXML = runtimeData.getString("runtimeInfo");        } catch (GenericEntityException e) {            throw new WfException(e.getMessage(), e);        }        // De-serialize the context        if (contextXML != null) {            try {                context = (Map) XmlSerializer.deserialize(contextXML, getDelegator());            } catch (SerializeException e) {                throw new WfException(e.getMessage(), e);            } catch (IOException e) {                throw new WfException(e.getMessage(), e);            } catch (Exception e) {                throw new WfException(e.getMessage(), e);            }        }        return context;    }        private GenericValue getWorkEffort(String workEffortId) throws WfException {        GenericValue we = null;        try {            we = getDelegator().findByPrimaryKey("WorkEffort", UtilMisc.toMap("workEffortId", workEffortId));        } catch (GenericEntityException e) {            throw new WfException("Problem getting WorkEffort entity (" + workEffortId + ")", e);        }        return we;    }                /**     * Evaluate a condition expression using an implementation of TransitionCondition     * @param className The class name of the TransitionCondition implementation     * @param expression The expression to evaluate     * @return The result of the evaluation (True/False)     * @throws WfException     */        protected boolean evalConditionClass(String className, String expression, Map context, Map attrs) throws WfException {        // attempt to load and instance of the class        Object conditionObject = null;        try {            conditionObject = ObjectType.getInstance(className);        } catch (ClassNotFoundException e) {            Debug.logError(e, "Cannot load class " + className, module);            return false;                   } catch (InstantiationException e) {            Debug.logError(e, "Cannot get instance of class " + className, module);            return false;                    } catch (IllegalAccessException e) {            Debug.logError(e, "Cannot access class " + className, module);            return false;                    }                                        // make sure we implement the TransitionCondition interface        if (!ObjectType.instanceOf(conditionObject, "org.ofbiz.workflow.TransitionCondition")) {            Debug.logError("Class " + className + " is not an instance of TransitionCondition", module);            return false;        }                // cast to the interface        TransitionCondition cond = (TransitionCondition) conditionObject;                // trim up the expression if it isn't empty        if (expression != null)            expression = expression.trim();                // get a DispatchContext object to pass over to the eval        DispatchContext dctx = this.getDispatcher().getDispatchContext();                // evaluate the condition        Boolean evaluation = null;          try {                           evaluation = cond.evaluateCondition(context, attrs, expression, dctx);        } catch (EvaluationException e) {            throw new WfException("Problems evaluating condition", e);        }                return evaluation.booleanValue();                                }          /**     * Evaluate a condition expression using BeanShell     * @param expression The expression to evaluate     * @param context The context to use in evaluation     * @return The result of the evaluation (True/False)     * @throws WfException     */    protected boolean evalBshCondition(String expression, Map context) throws WfException {        if (expression == null || expression.length() == 0) {            Debug.logVerbose("Null or empty expression, returning true.", module);            return true;        }                Object o = null;        try {            o = BshUtil.eval(expression.trim(), context);        } catch (bsh.EvalError e) {            throw new WfException("Bsh evaluation error.", e);        }        if (o == null)            return false;        else if (o instanceof Number)            return (((Number) o).doubleValue() == 0) ? false : true;        else            return (!o.toString().equalsIgnoreCase("true")) ? false : true;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -