Development Environment

Database

  • For a relational data store, we recommend running MySQL version 5.5 or 5.6 locally with three databases:
    • one for KFS OLTP
    • one for standalone Rice OLTP
    • one with KFS/Rice bundled for unit testing
    • the following statements will setup a new MySQL database/user (kfs) for development purposes; NOTE: this is for development use only as it grants all privileges; in a production environment it would make more sense to have multiple users, a more privileged one who can run DDL and create the database objects, and a less privileged users to run the application1.

      create user kfs@localhost identified by 'kfs';
      create user kfs@'%' identified by 'kfs';
      create database kfs default character set 'utf8' default collate 'utf8_bin';
      grant all on kfs.* to kfs@localhost with grant option;
      grant all on kfs.* to kfs@'%' with grant option;

      1 - For example, the DDL user would have all privileges except FILE and EXECUTE. The less privileged APP user would have CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, INDEX, INSERT, LOCK TABLES, SELECT, SHOW VIEW, UPDATE, and TRIGGER privileges.


Mysql requires some settings in the my.cnf file. You need to add the following settings. After adding them, you must restart mysql.


[mysqld]
max_allowed_packet=64M
transaction-isolation=READ-COMMITTED
lower_case_table_names=1
max_connections=1000
innodb_file_per_table=OFF

Application

  • We recommend building and running KFS locally. The KFS war can be build using maven (mvn -DskipTests=true packageand deployed to a container such as Tomcat.

    Note, the -DskipTests=true is optional, but if you don't skip the tests, they will take some time to run and aren't strictly necessary for packaging the KFS war.

  • We recommend building and running a Standalone Rice instance locally. The Rice war can also be built using maven and deployed to a container such as Tomcat. See the Rice Documentation.  Also, see Development Standalone Rice for information on setting up your database and standalone rice on your workstation.
  • To enable optional modules we need to toggle the module.<module name>.enabled property to true, and add the appropriate spring files and message property files.

Access Security

  • For example, to enable Access Security (Take care to add sec files to the current properties particularly for property.files and rice.struts.message.resources.):

    module.access.security.enabled=true
    fin.kr.additionalSpringFiles=[CURRENT fin.kr.additionalSpringFiles],\
      classpath:org/kuali/kfs/sec/spring-sec-rice-overrides.xml
    institution.spring.source.files=,\
      classpath:org/kuali/kfs/sec/spring-sec.xml,\
      classpath:org/kuali/kfs/sec/spring-sec-gl-overrides.xml,\
      classpath:org/kuali/kfs/module/ld/spring-sec-ld-overrides.xml,\
      classpath:org/kuali/kfs/module/purap/spring-sec-purap-overrides.xml
    property.files=[CURRENT property.files],classpath:org/kuali/kfs/sec/sec-resources.properties
    rice.struts.message.resources=[CURRENT property.files],org.kuali.kfs.sec.sec-resources
  • Also note, there is a parameter to enable Access Security: KFS-SEC, ENABLE_ACCESS_SECURITY, which is set to "Y" in demo data, but "N" in bootstrap.
  • Also, to enable the Access Security menu items under System in the Dashboard, assign the following four KFS-SEC permissions to the KFS-SYS Technical Administrator and KFS-SYS Manager roles. For base demo data, the attached assign-sec-perms.sql script should work.
    • Initiate Document AccessSecuritySimpleMaintenanceDocument
    • Look Up Records KFS-SEC
    • Inquire Into Records KFS-SEC
    • Edit Document AccessSecuritySimpleMaintenanceDocument PreRoute


For more information on how to configure KFS to connect to a Standalone Rice instance, see 7.0 Technical Changes.