LDSTechForumWikiProjects

FORG Gen Commons

FORG Gen Commons (FGC) promotes the use of synthetic data common to many Church systems. It does so by making synthetic data usage 1) low cost and 2) viable or real-enough for use in dev/test. The initial deliverable is a Java Jar file with multi-language seed data and builders for fields like name, address, phone number, etc. It is written in Scala and presents a native Java API for use by other JVM languages.

Summary Video

Whats the Value?

Projects need "data" for development and testing. So lets just make a copy of production data and get to work right? Whoa, hold on. What about privacy?! What about regression testing?! Data security in development and test environments demands that we prevent traceability back to sensitive data. Regression testing demands that we have versioned data sets to run scenarios against. The FORG Gen Commons project is part of a larger, strategic ICS initiative called FORG. FORG is moving us to develop systems without use of private data. (FORG stands for Fake Organization...fake data. Note that CODA will be consumed/replaced by FORG deliverables.)

Who is or will use FGC?

The FGC flagship customer is an internal project called CMIS-ForgGen that is used to generate synthetic domain objects for the new membership system. Other projects may use this as needed.

What Contributions are needed?

We have identified need for contributions in 1) Scala and Java development 2) seed data for person names in several languages and 3) documentation of API, Wiki, etc.

How easy is it to gen data...and customize how data is generated?

It's very easy and we will continue to invent ways to make it even better. Here is a Scala example showing default and customized data creation.

package forggen.commons
import forggen.commons.builders._

object App {
    def main(args: Array[String]) {
      //default builder
      val p1 = PersonExtBob().build
      //override builder params
      val p2 = PersonExtBob(phone = "208-612-3343", email = "@somewhere.org", address = AddressBob(postalCode = "83323").build).build
      val folks = List(p1,p2)

      folks.foreach(p => {
        println("______________________________________________")
        println(p.lastName+", "+p.firstName)
        println(p.phone)
        println(p.email)
        println(p.address.street1+" | "+p.address.city+" | "+p.address.state+" | "+p.address.code)
      }
      )
    }
}

Output:
______________________________________________
SMITH, MARY
801-553-2694
1661824075@directtv.com
JONES Dr | TAYLOR | ND | 58656
______________________________________________
JOHNSON, JEFFERY
208-612-3343
abbynormal@somewhere.org
BROWN Cir | DECLO | ID | 83323
This page was last modified on 28 March 2012, at 11:41. This page has been accessed 1,644 times.

Note: Content found in this wiki may not always reflect official Church information. See Terms of Use.