Captaris Workflow--1--代码发起新流程

 

    /// <summary>
    /// 代码发起流程
     /// </summary>
    /// <param name="id">新发起流程所有者</param>
    /// <param name="folderid">新发起流程模型所在文件夹ID</param>
    /// <param name="modelid">新发起流程模型ID</param>
    /// <param name="newid">新发起流程的PID</param>
    /// <returns>true,false</returns>
    public bool CreateProcess(int id, int folderid, int modelid, out int newid)
    {
        BProcess apro = null; bool isCreateOK = false; int subID = 0;
        try
        {
            //先声明一个BProcess对象,然后对它进行SetSessionToken, 
            string token = "";
            if (Request["Token"] != null && Request["Token"].Length > 0)
            {
                token = Request["Token"];
            }
            else if (Session["SessionToken"] != null)
            {
                token = Session["SessionToken"].ToString();
            }
            if (token != "")
            {
                apro = new BProcess(); 
                apro.SetSessionToken(token);
                BModel bmodel = new BModel(); bmodel.SetSessionToken(token);
                int userid = id; 
                //新发起process名称、新发起流程模型所在文件夹ID、新发起流程所有者、新发起流程模型ID 
                apro.Add("", folderid, userid, modelid); isCreateOK = true;
            }
        }
        catch (Exception ex)
        {
            isCreateOK = false;
        }
        finally
        {
            apro.Dispose();//释放资源 
        }
        newid = subID;
        return isCreateOK;
    }

### Flowable 工作流中会签与或签署的实现方式 #### 1. 会签的概念及其重要性 会签是指在一个工作流中,某些特定的任务需要由多个参与者共同完成审批的过程。只有当所有参与者的意见满足预设条件(如全部同意),该任务才能继续执行下一阶段的操作[^1]。 #### 2. 在Flowable中实现会签的方式 在Flowable工作流引擎中,可以通过定义一个多实例任务来实现会签功能。具体来说: - **多实例任务**:通过配置 `multiInstanceLoopCharacteristics` 属性,可以创建一个并行或多用户的任务列表。这些任务会被分配给指定的一组用户或角色。 以下是基于 BPMN 的 XML 配置示例,展示如何设置一个多实例任务用于会签: ```xml <userTask id="approvalTask" name="Approval Task"> <multiInstanceLoopCharacteristics isSequential="false"> <collection>${assignees}</collection> <elementVariable>assignee</elementVariable> </multiInstanceLoopCharacteristics> </userTask> ``` 在此配置中: - `isSequential=false` 表明这是一个并行处理的任务集合; - `${assignees}` 是一个变量,表示一组待分配的用户或角色; - 当所有的子任务完成后,父任务才会被标记为已完成[^3]。 #### 3. 处理会签的结果逻辑 为了支持复杂的业务需求,在实际应用中可能还需要额外编写服务任务或监听器来判断会签结果。例如: - 如果所有参与者均同意,则进入下一步; - 若存在任何一位参与者拒绝,则返回至上一节点或终止整个流程。 这种控制机制可通过 Java Service Task 来实现,代码片段如下所示: ```java public class SignOffDecisionService implements JavaDelegate { @Override public void execute(DelegateExecution execution) throws Exception { List<String> opinions = (List<String>) execution.getVariable("opinions"); boolean allAgree = true; for(String opinion : opinions){ if(!"agree".equalsIgnoreCase(opinion)){ allAgree = false; break; } } if(allAgree){ execution.setVariable("decision", "proceed"); }else{ execution.setVariable("decision", "reject"); } } } ``` 上述代码实现了对各参与者反馈的意见汇总,并决定后续路径走向。 #### 4. 数据集成与其他系统的交互 对于像 Captaris Workflow 这样的平台,虽然缺乏内置的数据记录事件响应能力,但仍需考虑如何将最终状态同步至其他业务系统之中。这通常涉及 API 调用或其他形式的消息传递协议[^2]。而在 Flowable 中,这一过程相对更加灵活,可以直接利用其扩展点(如 Listener 和 Connector)对接外部数据库或 Web Services 接口。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值