1、更新子表數據
/**
* 此方法更新子表數據:注意:必須放在提交后面,否則不會生效
* schemaCode 控件編碼,objectid 數據ID,schemaCodeList 需要更新的子表數據ID,ControlCode 需要更新的子表控制編碼,controlValue 需要更新的子表控件值
*/
protected void UpdateSchemaList(string schemaCode, string objectid, string schemaCodeList, string ControlCode, string controlValue)
{
H3.DataModel.BizObject masterBo = H3.DataModel.BizObject.Load(this.Request.UserContext.UserId, this.Request.Engine, schemaCode, objectid, false); //Load出要修改數據的主表業務對象
H3.DataModel.BizObjectSchema childSchema = masterBo.Schema.GetChildSchema(schemaCodeList); //獲取子表結構體對象
List < H3.DataModel.BizObject > newChildBoList = new List<H3.DataModel.BizObject>(); //定義新的子表數據集合
H3.DataModel.BizObject[] childBoArray = (H3.DataModel.BizObject[]) masterBo[schemaCodeList];//獲取子表內已有數據
if(childBoArray != null && childBoArray.Length > 0)
{
foreach(H3.DataModel.BizObject itemBo in childBoArray)
{
itemBo[ControlCode] = controlValue;
newChildBoList.Add(itemBo); //將子表內已有數據循環添加到新的子表數據集合里
}
}
masterBo[schemaCodeList] = newChildBoList.ToArray(); //將新的子表數據集合賦值到子表控
masterBo.Update(); //修改主表業務對象,系統會自動識別出上面子表數據被修改了,執行完Update方法,新的子表數據就會被保存到數據庫
}
2、創建數據並發起流程
/**
* 此方法用於子表數據發起子流程
* schemaCode 需要創建數據的表單編碼,子表數據
*/
protected void test(string schemaCode, H3.DataModel.BizObject itemBo)
{
H3.DataModel.BizObjectSchema schema = this.Engine.BizObjectManager.GetPublishedSchema(schemaCode);
H3.DataModel.BizObject bo = new H3.DataModel.BizObject(this.Request.Engine, schema, this.Request.UserContext.UserId);
bo["Department"] = this.Request["Department"]; //所屬部門
//bo.Status = H3.DataModel.BizObjectStatus.Effective; //設置狀態為有效
string instanceId = System.Guid.NewGuid().ToString();
if(string.IsNullOrEmpty(bo.WorkflowInstanceId))
bo.WorkflowInstanceId = instanceId;
bo.Create(); //創建
H3.Workflow.Instance.WorkflowInstance wfInstance = this.Request.Engine.WorkflowInstanceManager.GetWorkflowInstance(bo.WorkflowInstanceId);
if(wfInstance == null)
{
//啟動流程
string workItemID = string.Empty;
string errorMsg = string.Empty;
H3.Workflow.Template.WorkflowTemplate wfTemp = this.Request.Engine.WorkflowTemplateManager.GetDefaultWorkflow(bo.Schema.SchemaCode);
this.Request.Engine.Interactor.OriginateInstance(this.Request.UserContext.UserId, bo.Schema.SchemaCode,
wfTemp.WorkflowVersion, bo.ObjectId, bo.WorkflowInstanceId, H3.Workflow.WorkItem.AccessMethod.Web,
true, string.Empty, true, out workItemID, out errorMsg);
}//第七個參數 false/true 為是否提交流程操作
}