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

📄 workflowclient.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * $Id: WorkflowClient.java 5462 2005-08-05 18:35:48Z jonesde $ * * Copyright (c) 2001, 2002 The Open For Business Project - www.ofbiz.org * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */package org.ofbiz.workflow.client;import java.sql.Timestamp;import java.util.Iterator;import java.util.Map;import org.ofbiz.base.util.Debug;import org.ofbiz.entity.GenericDelegator;import org.ofbiz.service.DispatchContext;import org.ofbiz.service.LocalDispatcher;import org.ofbiz.service.job.Job;import org.ofbiz.service.job.JobManagerException;import org.ofbiz.workflow.CannotStop;import org.ofbiz.workflow.NotRunning;import org.ofbiz.workflow.WfActivity;import org.ofbiz.workflow.WfAssignment;import org.ofbiz.workflow.WfException;import org.ofbiz.workflow.WfExecutionObject;import org.ofbiz.workflow.WfFactory;import org.ofbiz.workflow.WfProcess;import org.ofbiz.workflow.WfResource;/** * Workflow Client - Client API to the Workflow Engine. * * @author     <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a> * @version    $Rev: 5462 $ * @since      2.0 */public class WorkflowClient {    public static final String module = WorkflowClient.class.getName();        protected GenericDelegator delegator = null;    protected LocalDispatcher dispatcher = null;      protected WorkflowClient() {}        /**     * Get a new instance of the Workflow Client     * @param delegator the GenericDelegator object which matchs the delegator used by the workflow engine.     * @param dispatcher a LocalDispatcher object to invoke the workflow services.     */      public WorkflowClient(GenericDelegator delegator, LocalDispatcher dispatcher) {        if (delegator == null)            throw new IllegalArgumentException("GenericDelegator cannot be null");        if (dispatcher == null)            throw new IllegalArgumentException("LocalDispatcher cannot be null");        this.delegator = delegator;        this.dispatcher = dispatcher;      }    /**     * Get a new instance of the Workflow Client     * @param dctx A DispatchContext object.     * *** Note the delegator from this object must match the delegator used by the workflow engine.     */    public WorkflowClient(DispatchContext context) {        this(context.getDelegator(), context.getDispatcher());                   }    /**     * Create an activity assignment.     * @param workEffortId The WorkEffort entity ID for the activitiy.     * @param partyId The assigned / to be assigned users party ID.     * @param roleTypeId The assigned / to be assigned role type ID.     * @param append Append this assignment to the list, if others exist.     * @return The new assignment object.     * @throws WfException     */    public WfAssignment assign(String workEffortId, String partyId, String roleTypeId, Timestamp fromDate, boolean append) throws WfException {                    WfActivity activity = WfFactory.getWfActivity(delegator, workEffortId);        WfResource resource = WfFactory.getWfResource(delegator, null, null, partyId, roleTypeId);        if (!append) {            Iterator i = activity.getIteratorAssignment();            while (i.hasNext()) {                WfAssignment a = (WfAssignment) i.next();                a.remove();            }        }        return WfFactory.getWfAssignment(activity, resource, fromDate, true);    }    /**     * Accept an activity assignment.     * @param workEffortId The WorkEffort entity ID for the activitiy.     * @param partyId The assigned / to be assigned users party ID.     * @param roleTypeId The assigned / to be assigned role type ID.     * @param fromDate The assignment's from date.     * @throws WfException     */    public void accept(String workEffortId, String partyId, String roleTypeId, Timestamp fromDate) throws WfException {        WfAssignment assign = WfFactory.getWfAssignment(delegator, workEffortId, partyId, roleTypeId, fromDate);                   assign.accept();    }    /**     * Accept an activity assignment and begin processing.     * @param workEffortId The WorkEffort entity ID for the activitiy.     * @param partyId The assigned / to be assigned users party ID.     * @param roleTypeId The assigned / to be assigned role type ID.     * @param fromDate The assignment's from date.     * @return GenericResultWaiter of the start job.     * @throws WfException     */    public void acceptAndStart(String workEffortId, String partyId, String roleTypeId, Timestamp fromDate) throws WfException {                accept(workEffortId, partyId, roleTypeId, fromDate);        start(workEffortId);    }    /**     * Delegate an activity assignment.     * @param workEffortId The WorkEffort entity ID for the activitiy.     * @param fromPartyId The current assignment partyId.     * @param fromRoleTypeId The current assignment roleTypeId.     * @param fromFromDate The current assignment fromDate.     * @param toPartyId The new delegated assignment partyId.     * @param toRoleTypeId The new delegated assignment roleTypeId.     * @param toFromDate The new delegated assignment fromDate.     * @return The new assignment object.     * @throws WfException     */    public WfAssignment delegate(String workEffortId, String fromPartyId, String fromRoleTypeId, Timestamp fromFromDate, String toPartyId, String toRoleTypeId, Timestamp toFromDate) throws WfException {                            WfActivity activity = WfFactory.getWfActivity(delegator, workEffortId);        WfAssignment fromAssign = null;                // check status and delegateAfterStart attribute        if (activity.state().equals("open.running") && !activity.getDefinitionObject().getBoolean("delegateAfterStart").booleanValue())                             throw new WfException("This activity cannot be delegated once it has been started");                              if (fromPartyId == null && fromRoleTypeId == null && fromFromDate == null) {                        Iterator i = activity.getIteratorAssignment();            fromAssign = (WfAssignment) i.next();            if (i.hasNext()) {                throw new WfException("Cannot locate the assignment to delegate from, there is more then one " +                        "assignment for this activity.");            }        }        if (fromAssign == null) {            fromAssign = WfFactory.getWfAssignment(delegator, workEffortId, fromPartyId, fromRoleTypeId, fromFromDate);        }                            fromAssign.delegate();                   // check for a restartOnDelegate        WfActivity newActivity = null;        if (activity.getDefinitionObject().getBoolean("restartOnDelegate").booleanValue()) {              // this only applies to running single assignment activities            if (activity.state().equals("open.running") && activity.howManyAssignment() == 0) {                try {                    activity.abort();                } catch (CannotStop cs) {                    throw new WfException("Cannot stop the current activity");                } catch (NotRunning nr) {                    throw new WfException("Current activity is not running; cannot abort");                }                String parentProcessId = activity.container().runtimeKey();                newActivity = WfFactory.getWfActivity(activity.getDefinitionObject(), parentProcessId);            }                 }                    WfAssignment assign = null;        if (newActivity != null) {            assign = assign(newActivity.runtimeKey(), toPartyId, toRoleTypeId, toFromDate, true);        } else {            assign = assign(workEffortId, toPartyId, toRoleTypeId, toFromDate, true);        }                return assign;    }    /**     * Delegate and accept an activity assignment.     * @param workEffortId The WorkEffort entity ID for the activitiy.     * @param partyId The assigned / to be assigned users party ID.     * @param roleTypeId The assigned / to be assigned role type ID.     * @param fromDate The assignment's from date.     * @param start True to attempt to start the activity.     * @return GenericResultWaiter of the start job.     * @throws WfException     */    public void delegateAndAccept(String workEffortId, String fromPartyId, String fromRoleTypeId, Timestamp fromFromDate, String toPartyId, String toRoleTypeId, Timestamp toFromDate, boolean start) throws WfException {                                         WfAssignment assign = delegate(workEffortId, fromPartyId, fromRoleTypeId, fromFromDate, toPartyId, toRoleTypeId, toFromDate);                              assign.accept();        Debug.logVerbose("Delegated assignment.", module);                if (start) {

⌨️ 快捷键说明

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