JSON数据结构

PlusProject项目数据包含如下信息:项目本身数据、日历、任务列表、部门列表、负责人列表等。

其中,任务会跟部门、负责人有分配关系。

本节使用JSON格式描述项目数据结构,对应到服务端数据,转换类型如下:

.Net:Array => ArrayList; Object => Hashtable

Java:Array => ArrayList; Object => HashMap


//普加项目管理中间件数据结构
{ 
    //项目唯一字段
    UID: 100,      
    //项目名称                   
    Name: 'ProjectName',
    //项目开始日期
    StartDate: '2007-01-01T08:00:00',
    //项目结束日期
    FinishDate: '2007-05-14T15:00:00',
    //正在使用的日历的UID
    CalendarUID: 1,
    //日历(数组,包含多个日历,每个日历对应一个对象,可切换)    
    Calendars: [
        {
            //日历唯一字段
            UID: 1,
            //日历名称
            Name: 'CalendarName',
            //工作周情况,DayType(1~7)周日到周六                  
            WeekDays: [             
                {
                    DayType: 1,
                    DayWorking: 1   //工作日1, 非工作日0                } ,
                {DayType: 2 ,DayWorking: 1 },
                {DayType: 3 ,DayWorking: 1 },
                {DayType: 4 ,DayWorking: 1 },
                {DayType: 5 ,DayWorking: 1 },
                {DayType: 6 ,DayWorking: 1 },
                {DayType: 7 ,DayWorking: 0 }            
           ],
            //例外日期,DayType = 0(非工作日),DayType = 1(工作日)            
            Exceptions: [           
                {
                    DayType: 0,     
                    DayWorking: 0,
                    Name: '',
                    TimePeriod: {   //例外的日期范围
                          FromDate: '2007-01-01T00:00:00',
                          ToDate: '2007-01-02T23:59:59'
                    }
                }
            ]
        }
    ],
    //任务集合    Tasks: [
        {
            UID: 1,                 //任务UID(唯一性标识符)
            Name: '',               //任务名称            
            Start: '2010-01-01T00:00:00',//DateTime。开始日期
            Finish: '2010-01-01T23:59:59',//DateTime。完成日期           
            Duration: 24,           //Number。工期            
            PercentComplete: 100,   //Number。进度            Manual: 0,              //手动模式。0是自动,1是手动。            ConstraintType: 1,      //限制类型:0越早越好;1越晚越好;2必须开始于;3必须完成于;
                                    //4不得早于...开始;5不得晚于...开始;6不得早于...完成;7不得晚于...完成            ConstraintDate: null,   //DateTime。限制日期            FixedDate:1,            //1或0。是否固定日期(仅限于摘要任务使用)        
            ID: 1,                  //Number。序号
            OutlineNumber: '1.2.1', //体现树形层次和顺序
            OutlineLevel: 1,        //层次           
            Work: 8,                //Number。工时
            Weight: 100,            //Number。权重                             
            Milestone: 1,           //1或0。里程碑
            Summary: 1,             //1或0。摘要任务
            Critical: 1,            //1或0。关键任务
            Priority: 200,          //Number。重要级别
            Notes: '',              //任务备注        
            PredecessorLink: [      //前置任务
                {
                   PredecessorUID: 2,  //对应前置任务UID
                   Type: 1,            //前置关系类型 0(FF)/1(FS)/2(SF)/3(FF)
                   LinkLag: 0          //延时天数

                },
                ......
            ],

            Assignments: [      //资源分配关系
                {ResourceUID: 2, Units: 1},
                ......
            ],
            
            Department: '1',        //部门
            Principal: '1,2'        //负责人,
            children: [             //下一级子任务, 体现树形结构                     ......
                        ]
            
        }
    ],
    //资源集合    Resources: [
        {UID: 1, Name: '市场部', Type: 1, MaxUnits: 1},
        ......
    ],
    //部门集合    Departments: [
        {UID: 1, Name: '市场部'},
        ......
    ],
    //负责人集合    Principals: [
        {UID: 1, Name: '张三', Department: 1},
        ......
    ]
}