Descriptions of the Current Open Flows/MNN Objects

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

Open Flows has 12 objects defined in the solution they are deploying at MNN. While not every station/location using the Open Media System will want their system configured like MNN's, it will benefit everyone to develop with these schemas and terms in mind.  These are my notes from information Mark Libkuman shared via a SILC/VNC walk through as well what I've found exploring the code. This is published as a wiki, so PLEASE feel free to edit anything that isn't correct.

Open Flows/MNN Objects:

  1. Producers
  2. Projects
  3. Episodes
  4. Airings
  5. Opening
  6. Reservations
  7. Buckets
  8. Hardware Items
  9. Facilities (Locations/Rooms)
  10. Classes
  11. Courses
  12. Sessions
  1. Producers

    Producers are Drupal users and CiviCRM individual contacts.  There is also the UserHistory CCK type that right now is mostly storing class history information for the Producer.

    Producers link to Projects, Classes, and Sessions

  2. Projects

    Projects are a CCK type on the Drupal side, and a CiviCRM Organizational Contact on the CiviCRM side.  Producers are connected to the Projects through both Drupal and CiviCRM.  In Drupal, Producers are a user reference. In CiviCRM a Project Organization Contact is connected to 0 to many CiviCRM individual contacts (i.e. Producers)

    After evaluating the different configuration options, OpenFlows found this was the best compromise in getting everything MNN needed out of both systems without making the operator have to deal with CiviCRM's interface. CiviCRM interfaces are only used reporting functions.

    In CiviCRM a Relationship of "is a producer of" and "is produced by" is used.  Node_api is used to keep the relationships synched when editing projects.

    Q. Do you also use series in addition to project?

    Series is a type on project.  A project can also be a Fill, or a Special.  The type on a Project dictates the way it is scheduled.

    A. Project can be a parent to either of them.

  3. Episodes

    Episodes are created when the media is checked in.  In MNN's case that is always a tape, but an Episode is really anything that can be played.

  4. Airing

    An Airing is an event that can either have a Episode as its parent (i.e. an Episode is scheduled to show at a certain time)

    Airings are added from the grid (/programming/grid)

    Q. Grid system assumes all things click on the half hour?

    A. For MNN's case the Airing end date is going to be figured out from the Project, since Projects have a RunTime set on them.

  5. Opening
  6. Reservations

    Reservations are tied to Projects.  While it wouldn't be difficult to allow Producers to be tied to reservations, that is not the case right now. A Reservation Object is based off a custom table.  Making a reservation updates the project's budget.

    If the user is not certified for this type of reservation, a warning is displayed in the detail.is operator controlled, we will let the internal operator override this. Preventing this choice from being available would require additional code. Since that was not a requirement at MNN it isn't in the current release.

    Certifications is a Taxonomy Vocabulary. Certifications are mostly given to Producers as part of the Class Scheduling system, but can be manually added by adding the necessary terms to the UserHistory node for the user.

  7. Bucket

    A successfully created reservation will be tied to a Bucket. A Bucket is a grouping of the same kinds of equipment (down to the model level for equipment). A Reservation can be against a type of camera, rather than tied to one particular camera with its own serial number.  There is a table called reservation_bucket that holds this relationship.  That row in reservation_bucket can tie to a row in reservation_item. This relationship will occur under two circumstances; the reservation is an actual detailed reservation (i.e. I'm reserving this particular studio at this time) or the Producer actually comes to the equipment desk and checks out the camera from the bucket they reserved against.

    The system keeps all the availability counts based on what is reserved (detailed or not) and what is actually out of the building (whether its past its scheduled reservation return date or not).

    Q. Are there limits on bucket items like batteries or could someone with enough points take all the Sony batteries?

    A. There are no interface rules in place right now because this was not designed as a self serve system. The system assumes the operator is trustworthy. Opening this up to public reservations will definitelyrequire extra validation checks in lots of places, but the back end would support this.

  8. Hardware Items

    Description included under Facilities.

  9. Facilities

    The items referenced in item_reservation can either be Hardware Items, or Facilities (Locations). Each item has a field on them that says what bucket they are in. Bucket needs to know how to query for all the items in it's bucket, but hardware or location nodes that can be reserved using the detailed reservation need to be able to have their bucket selectable in the node edit form.

    Budget Multiplier allows certain buckets to have higher "prices" for certain days. BudgetMultiplier CCK type, that allows you to pick days for the buckets to have their price multiplied by a certain amount so Hardware Items are more expensive to check out over weekend.  Budget Interval and Price allow you to set 5 points deducted every half hour.

  10. Course

    Course is the highest level, an example of a Course would be the Initial Oriention workshop.  Course, will be scheduled multiple times a quarter.

  11. Class

    A Class is the scheduled instance of a Course. Class is an event, with the start time being the first start time of a Session and the end time being the end time of the last Session A Class has 1 to many sessions

  12. Sessions

    Sessions are CCK event nodes. Sessions are either tied to a External Organization, or tied to a Reservation in a Reservable Facility. There are two custom tables session_member and class_member. Classes and Sessions are tied together via node reference.

    Trainers are members of the CiviCRM Trainer Group.

    Inventory in Sessions really means Department (i.e. who is sponsoring the class)

    Sessions use a detailed reservation to prevent overlapping reservation from being made in the reservations system. The reservation start times give a buffer around the session time for prep and shutdown.