[TRIRIGA] Form Builder에서 Radio Button으로 Visible 하게 하는 방법

Posted by MD워시퍼
2015. 11. 13. 12:26 Study/ARCHIBUS & TRIRIGA
728x90


List 으로 Data Modeler를 생성한 후, Form Builder에서 Display Type을 Radio로 지정하면 됨.

[TRIRIGA] "열려는 레코드에 레이아웃이 설정되어 있지 않습니다." 에러 해결 방법

Posted by MD워시퍼
2015. 10. 30. 00:00 Study/ARCHIBUS & TRIRIGA
728x90


특정 Form의 내용을 저장이 되지 않는다.

1. 새로운 리스트를 만들었다.
2. 새로운 필드를 만들었다.(1번의 리스트 이용)
3. Form에 2번 필드를 넣었다.
4. OnChange 기능을 추가했다.
5. 4번에 Workflow를 넣었다.

해결방법은 모르겠지만, Import 도중에 뭔가 꼬인듯 하다

[TRIRIGA Workflow] triRequest - Synchronous - Move Request - Populate Temporary Request Class

Posted by MD워시퍼
2015. 9. 7. 09:06 Study/ARCHIBUS & TRIRIGA
728x90
1. Start
- Name : triRequest - Synchronous - Move Request - Populate Temporary Request Class
- Concurrence : Synchronous
- Temporary Data : Temporary
- Module : triRequest
- Propagate Integration Status : check

2. Get Temp Task Properties
- Label : Get Temp Record
- Records : Take the Business Object of Task Start(triRequest)
Object type : triRequest

3. Retrieve Task Properties
- Label : Get Building from Request
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Temp Record(triRequest)
Use its Association Has Building
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

4. Associate Task Properties
- Label : DeAssociate Temporary Request Class from Request
- Remove the association : Temporary
- Formulas : Recalculate as Needed
- Remove the association from : Take the Businuss Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
- Where the associated record is : Workflow Activity
Take the Business Object of Task Get Temp Record(triRequest)
Use its Association Temporary
Object type : triRequestClass

5. Switch Condition
- Expression : Get Building from Request :: Result Count > 0
- Y : 6 / N : END

6. Switch Condition
- Expression : Get Building from Request :: triBuilding :: RecordInformation :: triManagedServiceBL == "TRUE"
- Y : 7 / N : 20

7. Define Variable Task Properties
- Label : VAR Request Class
- Module : Classification
- Object : triRequestClass
- value : Clear

8. Switch Condition
- Expression : Get Temp Record :: triRequest :: RecordInformation :: triFormNameSY == "triAddPerson"
- Y : 9 / N : 12

9. Retrieve Task Properties
- Label : Get Add Person Request Class from triBuilding
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Building from Request(triBuilding)
Use its Association : Has Request Class
Object Type : triRequestClass
- Filter Using
Left DataOperatorRiget Data
RecordInformation::triPathTXContainsRecordInformation::triRequestClassPathTXAND
RecordInformation::triNameTXEqualsAdd Person
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

10. Assign Variable Task Properties
- Label : VAR Add Person
- Retrieve : A List
ㅇ Assign Variable - Variable : VAR Request Class(triRequestClass)
- Object Type : triRequestClass
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

[TRIRIGA] Space에서 Organization 할당 방법

Posted by MD워시퍼
2015. 9. 5. 10:27 Study/ARCHIBUS & TRIRIGA
728x90
ㅇ Location - triSpace
ㅇ Occupancy Allocations : 해당 공간에 할당된 조직
ㅇ People - Primary Location : 해당 공간을 주요 공간으로 배정된 사람들
ㅇ People - Secondary Location : 해당 공간을 보조 공간으로 배정된 사람들
ㅇ Occupancy Details
- Occupancy Status(점유 상태) : triOccupancyStatusCL
- Chargeback Status(비용배분 상태) : triOrgOccupancyStatusCL
- a.Headcount_Primary(인원수_기본) : triHeadcountNU
- b.Headcount_Other(인원수_기타) : triHeadcountOtherNU
- c.Seats Allocated(할당된 개인 공간 면적) : triAllocSeatsNU
- d.Capacity(수용능력) : triCapacityNU
- e.Shared Capacity Factor(공유 용량율) : triCapacityFactorNU
- f.Emergency Capacity(비상 대피 수용능력) : triEmergencyCapacityNU
- g.Overflow Capacity(과잉 수용능력) : triOverflowCapcityNU
- h. Remaining Vacant(남은 공실) : triRemainingVacantNU = d - c
- i. Planned Occupancy(계획된 점유) : triPlannedOccupancyNU
- j. Planned Vacancy(계획된 공실) : triPlannedVacancyNU
- k. Adjusted Remaining Vacant(조정된 남은 공실) : triAdjustedRemainingVacantNU = (h - i) + j
- Ratio Occupied(점유 비율) : triPercentOccupiedNU = c / d
- Total Planning Capacity(총 계획 수용능력) : triCapacityPlanNU = d * e
- Total Emergency Capacity(총 비상 대피 수용능력) : triTotalEmergencyCapacityNU = f * e
- Total Overflow Capacity(총 과잉 수용능력) : triTotalOverflowCapacityNU = g * e

[TRIRIGA Workflow] triRequest - Synchronous - Move Request - Populate Temporary Request Class

Posted by MD워시퍼
2015. 9. 4. 21:24 Study/ARCHIBUS & TRIRIGA
728x90
1. Start
- Name : triRequest - Synchronous - Move Request - Populate Temporary Request Class
- Concurrence : Synchronous
- Temporary Data : Temporary
- Module : triRequest
- Propagate Integration Status : check

2. Get Temp Task Properties
- Label : Get Temp Record
- Records : Take the Business Object of Task Start(triRequest)
Object type : triRequest

3. Retrieve Task Properties
- Label : Get Building from Request
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Temp Record(triRequest)
Use its Association Has Building
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

4. Associate Task Properties
- Label : DeAssociate Temporary Request Class from Request
- Remove the association : Temporary
- Formulas : Recalculate as Needed
- Remove the association from : Take the Businuss Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
- Where the associated record is : Workflow Activity
Take the Business Object of Task Get Temp Record(triRequest)
Use its Association Temporary
Object type : triRequestClass

5. Switch Condition
- Expression : Get Building from Request :: Result Count > 0
- Y : 6 / N : END

6. Switch Condition
- Expression : Get Building from Request :: triBuilding :: RecordInformation :: triManagedServiceBL == "TRUE"
- Y : 7 / N : 20

7. Define Variable Task Properties
- Label : VAR Request Class
- Module : Classification
- Object : triRequestClass
- value : Clear

8. Switch Condition
- Expression : Get Temp Record :: triRequest :: RecordInformation :: triFormNameSY == "triAddPerson"
- Y : 9 / N : 12

9. Retrieve Task Properties
- Label : Get Add Person Request Class from triBuilding
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Building from Request(triBuilding)
Use its Association : Has Request Class
Object Type : triRequestClass
- Filter Using
Left DataOperatorRiget Data
RecordInformation::triPathTXContainsRecordInformation::triRequestClassPathTXAND
RecordInformation::triNameTXEqualsAdd Person
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

[TRIRIGA Workflow] triMoveRequest - Synchronous - Populate Locations triMoveToBuilding triMoveToFloor and triMoveToSpace

Posted by MD워시퍼
2015. 9. 3. 17:45 Study/ARCHIBUS & TRIRIGA
728x90

1. Start
- Name : triMoveRequest - Synchronous - Populate Locations triMoveToBuilding triMoveToFloor and triMoveToSpace
- Description : Popoulate triMoveToBuildingTX, triMoveToFloorTX, and triMoveToSpace.
- Concurrence : Synchronous
- Temporary Data : Temporary
- Module : triRequest
- Object Type : triMoveRequest
- Save Workflow Instances : check
- Propagate Integration Status : check

2. Get Temp Task Properties
- Label : Get Temp Record
- Description : Retrieve calling object (triPeople) using Temporary Association.
- Records : Take the Business Object of Task Start(triMoveRequest)
Object type : triMoveRequest

3. Retrieve Task Properties
- Label : Get Location
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Temp Record(triMoveRequest)
Use any Associated BO from module Location of type Requested Location
Object Type : Location
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triMoveRequest)
Use it
Object type : triMoveRequest

4. Retrieve Task Properties
- Label : Get triSpace
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Location(Location)
Use any Associated BO from module Location triSpace of type Is Child Of
Object Type : triSpace
- Filter Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object type : Location

5. Retrieve Task Properties
- Label : Get triFloor from Get Location
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Location(Location)
Use any Associated BO from module Location triFloor of type Is Child Of
Object Type : triFloor
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triMoveRequest)
Use it
Object type : triMoveRequest

6. Retrieve Task Properties
- Label : Get triBuilding from Get triFloor
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get triFloor from Get Location(triFloor)
Use its Association : Is Child Of
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triMoveRequest)
Use it
Object type : triMoveRequest

7. Switch Condition
- Expression : Get Location :: Location :: RecordInformation :: triFormLabelSY == "Space" || Start :: triMoveRequest :: RecordInformation :: triFormLabelSY == "Space Group"
- Y : 8 / N : 13

8. Modify Task Properties
- Label : Update triMoveToSpace
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToSpaceTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

9. Modify Task Properties
- Label : Update triMoveToFloor
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToFloorTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get triFloor from Get Location(triFloor)
Use it
Object Type : triFloor
- Transaction : None

10. Modify Task Properties
- Label : Update triMoveToFloorPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToFloorPathTX : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get triFloor from Get Location(triFloor)
Use it
Object Type : triFloor
- Transaction : None

11. Modify Task Properties
- Label : Update triBuilding
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToBuildingTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get triBuilding from Get triFloor(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

12. Modify Task Properties
- Label : Update triBuildingPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToBuildingPathTX : RecordInformation::triPathTX
RecordInformation - triPesonTypeLI : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get triBuilding from Get triFloor(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

13. Retrieve Task Properties
- Label : Get Building from Get Location
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Location(Location)
Use any Associated BO from module Location triBuilding of type Is Child Of
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triMoveRequest)
Use it
Object type : triMoveRequest

14. Switch Condition
- Expression : Get Location :: Location :: RecordInformation :: triFormLabelSY == "Floor"
- Y : 15 / N : 19

15. Modify Task Properties
- Label : Update triFloor
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToFloorTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

16. Modify Task Properties
- Label : Update triFloorPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToFloorPathTX: RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

17. Modify Task Properties
- Label : Update triBuilding
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToBuildingTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Building from Get Location(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

18. Modify Task Properties
- Label : Update triBuildingPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToBuildingPathTX : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get Building from Get Location(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

19. Switch Condition
- Expression : Get Location :: Location :: RecordInformation :: triFormLabelSY == "Building"
- Y : 20 / N : 22

20. Modify Task Properties
- Label : Update Building
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Start(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToBuildingTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

21. Modify Task Properties
- Label : Update triBuildingPathTX and triFloorPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triMoveToBuildingPathTX : RecordInformation::triPathTX
RecordInformation - triMoveToFloorPathTX : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

22. Call Workflow Task Properties
- Label : Populate Temporary Request Class
- Static Workflow : triRequest - Synchronous - Move Request - Populate Temporary Request Class
- Records : Take the Businuss Object of Task Get Temp Record(triMoveRequest)
Use it
Object Type : triMoveRequest

[TRIRIGA Workflow] triRequest - Synchronous - Populate Locations TriBuilding triFloor and triSpace

Posted by MD워시퍼
2015. 9. 2. 17:43 Study/ARCHIBUS & TRIRIGA
728x90

1. Start
- Name : triRequest - Synchronous - Populate Locations triBuilding triFloor and triSpace
- Concurrence : Synchronous
- Temporary Data : Temporary
- Module : triRequest
- Save Workflow Instances : check
- Propagate Integration Status : check

2. Get Temp Task Properties
- Label : Get Temp Record
- Records : Take the Business Object of Task Start(triRequest)
Object type : triRequest

3. Retrieve Task Properties
- Label : Get Location
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Temp Record(triRequest)
Use any Associated BO from module Location of type Location Requested For
Object Type : Location
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

4. Retrieve Task Properties
- Label : Get triSpace
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Location(Location)
Use any Associated BO from module Location triSpace of type Is Child Of
Object Type : triSpace
- Filter Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object type : Location

5. Retrieve Task Properties
- Label : Get triFloor from Get Location
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Location(Location)
Use any Associated BO from module Location triFloor of type Is Child Of
Object Type : triFloor
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

6. Retrieve Task Properties
- Label : Get triBuilding from Get triFloor
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get triFloor from Get Location(triFloor)
Use its Association : Is Child Of
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

7. Switch Condition
- Expression : Get Location :: Location :: RecordInformation :: triFormLabelSY == "Space" || Get Location :: Location :: RecordInformation :: triFormLabelSY == "Space Group"
- Y : 8 / N : 13

8. Modify Task Properties
- Label : Update triSpace
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triSpaceTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

9. Modify Task Properties
- Label : Update triFloor
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triFloorTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get triFloor from Get Location(triFloor)
Use it
Object Type : triFloor
- Transaction : None

10. Modify Task Properties
- Label : Update triFloorPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triFloorPathTX : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get triFloor from Get Location(triFloor)
Use it
Object Type : triFloor
- Transaction : None

11. Modify Task Properties
- Label : Update triBuilding
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triMoveRequest
>> 상세 : RecordInformation - triBuildingTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get triBuilding from Get triFloor(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

12. Modify Task Properties
- Label : Update triBuildingPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triBuildingPathTX : RecordInformation::triPathTX
RecordInformation - triPesonTypeLI : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get triBuilding from Get triFloor(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

13. Retrieve Task Properties
- Label : Get Building from Get Location
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Location(Location)
Use any Associated BO from module Location triBuilding of type Is Child Of
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

14. Switch Condition
- Expression : Get Location :: Location :: RecordInformation :: triFormLabelSY == "Floor"
- Y : 15 / N : 19

15. Modify Task Properties
- Label : Update triFloor
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triFloorTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

16. Modify Task Properties
- Label : Update triFloorPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triFloorPathTX : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

17. Modify Task Properties
- Label : Update triBuilding
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triBuildingTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Building from Get Location(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

18. Modify Task Properties
- Label : Update triBuildingPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triBuildingPathTX : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get Building from Get Location(triBuilding)
Use it
Object Type : triBuilding
- Transaction : None

19. Switch Condition
- Expression : Get Location :: Location :: RecordInformation :: triFormLabelSY == "Building"
- Y : 20 / N : 22

20. Modify Task Properties
- Label : Update Building
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Start(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triBuildingTX : Source
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

21. Modify Task Properties
- Label : Update triBuildingPathTX and triFloorPathTX
- Formulas : Recalculate as Needed
- Map To Records : Take the Business Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
>> 상세 : RecordInformation - triBuildingPathTX : RecordInformation::triPathTX
RecordInformation - triFloorPathTX : RecordInformation::triPathTX
- Map From Records : Workflow Activity
Take the Business Object of Task Get Location(Location)
Use it
Object Type : Location
- Transaction : None

22. Call Workflow Task Properties
- Label : Populate Temporary Request Class
- Static Workflow : triRequest - Synchronous - Move Request - Populate Temporary Request Class
- Records : Take the Businuss Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest

[TRIRIGA] triPlanningDataCaptureLog(계획 데이터 캡처 로그)

Posted by MD워시퍼
2015. 9. 2. 15:42 Study/ARCHIBUS & TRIRIGA
728x90

SFP focuses on buildings and floors for planning.
Space within floors is an essential part of the planning data capture process.
If there are no spaces, no supply or demand will be captured.