氚云作为一款高集成度的快速开发模板,对于非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);
- 若表单关闭后,列表未刷新,可通过以下方式解决
// 提交后事件
AfterSubmit:function(action, responseValue){
//if (action == "ChangeType") {
responseValue.ClosePage = true; //关闭页面
responseValue.Refresh = true; //刷新页面
//}
}
- 可以通过
this.Request["objectIds"];
的方式从前台的parm中取值
- 对于表单上的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;
- 审批流程表更的时候,可进行的操作
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.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);
}
- 新增数据和查看数据时显示控制
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;;
}
}
- 访问第三方系统接口可以通过webservice实现,客服提供的demo: