氚云作为一款高集成度的快速开发模板,对于非IT专业的人员相对友好,可以在忽略框架、配置等情况下快速上手,提高开发速度,降低开发门槛。
以下是开发过程中遇到的一些问题。
1.审批结束后重新发起审批。

//激活审批
            H3.Workflow.Messages.ActivateInstanceMessage activiteinstanceMessage = new H3.Workflow.Messages.ActivateInstanceMessage(this.Request.InstanceId);
            this.Request.Engine.WorkflowInstanceManager.SendMessage(activiteinstanceMessage);

            //int tokenId = this.Request.WorkItem.TokenId;(在氚云文档中用TokenId,但是在流程结束以后TokenId为null,替换为下面的UnspecifiedId)
            int tokenId = H3.Workflow.Instance.Token.UnspecifiedId;
            
			//激活节点 Activity3  为审批节点 Name
            H3.Workflow.Messages.ActivateActivityMessage activiteMessage = new H3.Workflow.Messages.ActivateActivityMessage(this.Request.InstanceId,
                    "Activity3", tokenId, new string[] { },null, false, H3.Workflow.WorkItem.ActionEventType.Adjust);
             this.Request.Engine.WorkflowInstanceManager.SendMessage(activiteMessage);
  1. 若表单关闭后,列表未刷新,可通过以下方式解决
// 提交后事件
    AfterSubmit:function(action, responseValue){
         //if (action == "ChangeType") {
             responseValue.ClosePage = true; //关闭页面
             responseValue.Refresh = true;  //刷新页面
         //}
    }
  1. 可以通过
this.Request["objectIds"];

的方式从前台的parm中取值

  1. 对于表单上的button通过以下方式
Dictionary < string, H3.SmartForm.ViewAction > dicActions = new Dictionary<string, H3.SmartForm.ViewAction>();
            //重新添加按钮,并修改显示名称
            dicActions.Add("ChangeType", new H3.SmartForm.ViewAction("ChangeType", "更改客户类型", ""));
            foreach(KeyValuePair < string, H3.SmartForm.ViewAction > action in response.Actions)
                dicActions.Add(action.Key, action.Value);
            response.Actions = new Dictionary<string, H3.SmartForm.ViewAction>();
            response.Actions = dicActions;
  1. 审批流程表更的时候,可进行的操作
protected override void OnWorkflowInstanceStateChanged(H3.Workflow.Instance.WorkflowInstanceState   oldState, H3.Workflow.Instance.WorkflowInstanceState newState)
    {
        //流程审批结束,业务规则执行。还有个审批流程结束(finished状态下直接删除),就直接删除也会触发业务规则执行。在submit里面处理
        if(oldState == H3.Workflow.Instance.WorkflowInstanceState.Running && newState == H3.Workflow.Instance.WorkflowInstanceState.Finished)
        {
            //执行业务代码逻辑
			//发送定时消息,发送后在钉钉中点击提醒会跳转到本条数据详细
            H3.Task.UserTask   task = new H3.Task.UserTask();
            string appId = "DXXXXXXXXXXXXXXXX";   //应用编码
            task.ObjectId =   Guid.NewGuid().ToString();//Guid码
            task.Sender =   H3.Organization.User.SystemUserId;//任务的发起人id
            task.UserId =   this.Request.UserContext.UserId; //任务的接收人id
            task.AppCode = appId;//应用编码
            task.TaskType =   H3.Task.TaskType.Reminder; //任务类型为提醒
            task.SchemaCode =   "DXXXXX"; //表单编码
            task.TargetType =   H3.LinkTargetType.BizObject; //关联类型
            task.TargetId =   this.Request.BizObjectId; //关联对象的ID
            task.TargetName =   this.Request.BizObject.Name;  //绑定对象的名称
            task.Name = "您有新的招标项目可以参加竞标"; //提醒标题
            task.Summary = this.Request.BizObject["projName"].ToString(); //提醒的内容(使用项目名)
            task.AlertTime =   DateTime.Now;  // 提醒时间
            task.ReminderType =   H3.Task.ReminderType.Once; //提醒类型
            task.StartTime =   DateTime.Now; //开始时间
            task.EndTime = DateTime.Now;   //截止时间
            task.TaskState =   H3.Task.TaskState.Unfinished; //任务状态
            task.AlertState =   H3.Task.AlertState.Waiting; //提醒的状态
            this.Request.Engine.TaskManager.AddTask(task);//添加任务
        }

        //流程审批结束后,重新激活,业务规则会执行。还有个审批流程结束(finished状态下直接删除),就直接删除也会触发业务规则执行。在submit里面处理
        if(oldState == H3.Workflow.Instance.WorkflowInstanceState.Finished && newState == H3.Workflow.Instance.WorkflowInstanceState.Running)
        {
            //执行业务代码逻辑

        }

        base.OnWorkflowInstanceStateChanged(oldState, newState);
    }
  1. 新增数据和查看数据时显示控制
response.ReturnData["projManager"].Visible = false;
        if(H3.DataModel.BizObjectStatus.Effective == response.BizObjectStatus)
        {
            if(response.ReturnData["projManager"].Value != null && response.ReturnData["projManager"].Value.ToString() != "")
            {
                response.ReturnData["projManager"].Visible = true;;
            }
        }
  1. 访问第三方系统接口可以通过webservice实现,客服提供的demo: