业务对象

添加业务对象

在实际应用开发中,需要在某一个表单中创建或是添加另一个表单的数据,比如:CRM中把线索转为客户,在线索状态设置转为新客户就自动在客户表单中新增一条客户信息。


注:业务对象只可操作表单数据,无法操作氚云系统表的数据。


主表业务对象创建:


//得到一个IEngine对象

H3.IEngine engine = this.Request.Engine;


//获取系统虚拟用户的人员Id(表单设计后端类、列表设计后端类、定时器类、自定义接口类中都可以获取)

string systemUserId = H3.Organization.User.SystemUserId;


//获取当前登录人的人员Id(只能在表单设计后端类、列表设计后端类中获取)

string currentUserId = this.Request.UserContext.UserId;


//获取D00021testtable表单的表单结构对象

H3.DataModel.BizObjectSchema aSchema = engine.BizObjectManager.GetPublishedSchema("D00021testtable");


//new一个D00021testtable表单的业务对象

H3.DataModel.BizObject aBo = new H3.DataModel.BizObject(engine, aSchema, systemUserId);


//设置业务对象的创建人为当前登录人

aBo.CreatedBy = currentUserId;


//设置业务对象的归属人为当前登录人

aBo.OwnerId = currentUserId;


//设置控件编码为F0000027(单行文本控件)的值

aBo["F0000027"] = "https://www.h3yun.com/";


//设置控件编码为F0000024(日期控件)的值

aBo["F0000024"] = DateTime.Parse("2020-03-18 00:00:00");


//设置控件编码为F0000039(数字控件)的值

aBo["F0000039"] = 99;


//设置控件编码为F0000038(单选框控件)的值

aBo["F0000038"] = "选项1";


//设置控件编码为F0000025(复选框控件)的值

aBo["F0000025"] = "选项1;选项2";


//设置业务对象数据为生效状态

aBo.Status = H3.DataModel.BizObjectStatus.Effective;


/*

aBo.Status的所有取值与意义:

   H3.DataModel.BizObjectStatus.Draft:草稿

   H3.DataModel.BizObjectStatus.Effective:生效(若此表单有业务规则,则此项设置会在Create()中触发生效时业务规则)

   H3.DataModel.BizObjectStatus.Running:进行中(此设置并不会发起流程,带流程的表单数据创建请参考他处,一般不会将数据状态设置成进行中)

   H3.DataModel.BizObjectStatus.Canceled:作废

*/


//将业务对象创建到数据库中,即创建到表名为i_D000001Account的表中

aBo.Create();


 

同时创建主表、子表数据:

H3.DataModel.BizObjectSchema schema =   this.Request.Engine.BizObjectManager.GetPublishedSchema("D000024FeeReimbursement170801");


H3.DataModel.BizObject obj = new   H3.DataModel.BizObject(this.Request.Engine, schema,   this.Request.UserContext.UserId); //主表对象

obj.CreatedBy   = this.Request.UserContext.UserId;

obj["F0000002"] = 1;

obj["FeeTotal"] = "其他";

obj["F0000006"] = "其他";

obj["tuanjian"] = "其他";

 

//new子表数据集合

 List <   H3.DataModel.BizObject > lstObject = new List<H3.DataModel.BizObject>();  


//new一个子表业务对象

 H3.DataModel.BizObject zibiao = new   H3.DataModel.BizObject(this.Request.Engine,   schema.GetChildSchema("D000024Details"),   H3.Organization.User.SystemUserId);//子表对象

 zibiao["ReasonSubject"] = "7d5d5192-71cb-4d16-8da8-4f6cdbdb6954";

 zibiao["FeeDept"] =   "954c49ac-e396-463d-a95a-442907d95fb6";

 lstObject.Add(zibiao);//将这个子表业务对象添加至子表数据集合中

 

 obj["D000024Details"] = lstObject.ToArray(); //子表数据赋值

 obj.Create();   //创建对象





通过数据Id查询对应业务对象

 //Load对象(schemaCode为表单编码,this.Request.BizObjectId为当前表单objectid)

H3.DataModel.BizObject accountBo =  H3.DataModel.BizObject.Load(H3.Organization.User.SystemUserId,this.Request.Engine,"schemaCode",this.Request.BizObjectId,false);  

 

通过自定义筛选条件查询业务对象

先构建过滤器,过滤器支持各种条件组合类似sql的where条件并支持嵌套。

示例:

H3.IEngine engine = this.Request.Engine;

H3.Data.Filter.Filter filter = new H3.Data.Filter.Filter();  //构建过滤器

H3.Data.Filter.And andMatcher = new H3.Data.Filter.And();    //构造And匹配器

andMatcher.Add(new H3.Data.Filter.ItemMatcher("AccountName", H3.Data.ComparisonOperatorType.Equal, "氚云")); //添加查询条件

filter.Matcher = andMatcher;

H3.DataModel.BizObjectSchema schema = engine.BizObjectManager.GetPublishedSchema("D000001Account");   //获取模块Schema

H3.DataModel.BizObject[] boArray = H3.DataModel.BizObject.GetList(engine, H3.Organization.User.SystemUserId,

    schema, H3.DataModel.GetListScopeType.GlobalAll, filter); //查询返回的结果对象

if(boArray != null && boArray.Length > 0)

{

    for(int i = 0;i < boArray.Length; i++)

    {

        H3.DataModel.BizObject bo = boArray[i];


        //处理业务对象

    }

}




修改业务对象
同添加业务对象,修改业务对象主要实现不同表单之间的数据修改或更新。如:与客户签订合同成交后,把对应的客户状态设置为已成交客户。

示例:

 //Load对象(schemaCode为表单编码,this.Request.BizObjectId为当前表单objectid)

H3.DataModel.BizObject accountBo =   H3.DataModel.BizObject.Load(H3.Organization.User.SystemUserId,this.Request.Engine,"schemaCode",this.Request.BizObjectId,false);  


accountBo["CustomerName"] = "深圳氚云网络科技有限公司";  //修改对象属性值

accountBo["CustomerLevel"] = "已成交";

accountBo.Status =   H3.DataModel.BizObjectStatus.Effective; // 将对象状态设为生效

accountBo.Update();  //更新对象

 

删除业务对象

示例:

H3.DataModel.BizObject accountBo =   H3.DataModel.BizObject.Load(H3.Organization.User.SystemUserId,this.Request.Engine,"schemaCode",this.Request.BizObjectId,false);   //Load对象(schemaCode为表单编码,this.Request.BizObjectId为当前表单objectid)

          accountBo.Remove();  //删除对象