Course Publishing Workflow

Blocks ::: block_publishflow
Maintained by Valery Fremaux
Publishflow reveals a strong MNET based course publishing architecture for providing a high level service for moving, cataloging, preproducing courses and organize several moodles as a courseware production supersystem.

Course Publishing Workflow 1.9.0 (Build 2012112900)

Moodle 1.9
Released: Saturday, 29 September 2012, 12:30 AM
Publishflow Block
###############################

Moodle 1.9 version

This is an upgraded version of the Publishflow block from Pairformance/Intel TAO
moodle implementations organising a course transportation layer over MNET between
moodle nodes bound together in a coherent content installation.

Publishflow tags Moodle instances in a "Factory/Course Catalog/Training Center"
concept, each of one will provide a distinct behaviour to the block, and has induction
upon how courses and categories are managed in Moodle.

Read http://docs.moodle.org/19/en/Course_Publishing_block_%28publishflow%29 for complete documentation

Requirements
##################################

Using Publishflow block needs to add a MNET patch in order to allow blocks to register and use XML-RPC
just as Moodle activity do. This is known as following :

Add possibility for blocks to handle xmlrpc the same way Moodle modules do :
################################################################################

This is an important patch needed for the PublishFlow block to invoke XML-RPC functions
between Moodle instances. It fixes an inconsistancy of the MNET implementation was
lacking blocks to exchange information using network communications.

Patch point is :

file : /mnet/xmlrpc/server.php
line : near 478
location : before (or after, no case, but an additional case) the handling of modules.

// PATCH : Add RPC support to blocks
////////////////////////////////////// STRICT BLOCKS/*
} elseif ($callstack[0] == 'blocks') {
list($base, $block, $filename, $functionname) = $callstack;
$includefile = '/blocks/'.$block.'/rpclib.php';
$response = mnet_server_invoke_method($includefile, $functionname, $method, $payload);
$response = mnet_server_prepare_response($response);
echo $response;
// /PATCH
////////////////////////////////////// STRICT MOD/*
} elseif ($callstack[0] == 'mod' || 'dangerous' == $CFG->mnet_dispatcher_mode) {
list($base, $module, $filename, $functionname) = $callstack;



Installation
##################################

Unzip the bloc into the folder /blocks/ and run admin notifications

Setup
#################################

For initiating operations you need :

identifying parts of your course distribution system :

* which Moodle node acts as a Catalog, or at least Factory and Catalog combined, which ones are Training Centers.
* Enable Moodle between Catalog and Training Centers as required
* Activate both publishing and subcribing to the publishflow infrastructure service

Browse on each platform and setup the site wide settings of the publishflow block, from the
Admin > PLugins > Blocks menu.

You will mostly :

- choose the Moodle Node Type in "factory, catalog, combined factory and catalog, training center' list.

- once this is done for all Moodles, you can ask each node to discover the network environement. This is done in the
central settings for publishflow block, by clicking the link to the publishing environnement setup and discovery page.
Update the environement to guess what moodle nodes you have in your networking neighbourhood. You'll see that each MNET
host will be known with its "role" regarding to publishing architecture.

At the same time, this procedure will proxy the remote category organisation, so some course transfers can point to
designated categories at deploy time.

- you SHOULD till further releases choose the local filesystem delivery : Actual remote delivery is performed
by XML-RPC secured transport layer that may have strong limitations in volume (< 40 Mo). A new transportation
layer using simple HTTP or HTTPS link is under developement.

Till further informaiton, THE ACTUAL BLOCK IS FOR USE BETWEEN MOODLE RUNNING ON THE SAME HOSTING SYSTEM.

- There are several settings that are usefull to know for setting up precise behaviour of each node type so
check the mentionned documentation carefully.
- check publishflow capabilities related to your role settings. All publishflow operations are fine for Moodle
administrator, but can be accurately delegated to consistant users.

Publishing a course (Factory)
######################################

Publishing a course is an operation between a Factory Node and a Catalog Node. If you only setup a combined
Factory + Catalog node in your network, you will only be allowed to deploy and retrofit.

For course publishing operation, you need :

- having a publishflow in the course. this block will hide from students and non-editing teachers.
- having publishing capabilities in this course
- having stored a deployable backup in this block (let the block tell you what is needed)
- having an IDNumber setup for the course.
- having a remote acocunt (MNET identity) valid for operations : you'll need probably jump to the other Moodle to activate it at first time.
- having remore capability to publish in the publishing category.

If all this is complied, the publish flow will let you push the publishing button.

Once published, you'll be asked to return to the original course, or jump to the remote published copy.

Deploying a course
######################################

Deploying a course is basically the same operation of material tranportation than publishing. The most important differences are:

- when deploying several times, you make several copies of the course content.
- you may be able to choose the target remote category at deploying time (and not a system defined default)
- you may define a key for deployment, allowing any people having the key (and remotely capable to import courses) to deploy, independently from
having adequate lcoal capability for it.
- you may deploy to local moodle (some kind of fast course duplication) or to any remote Moodle you are allowed to
- you may deploy everywhere without any limitation if you have "deployeverywhere" capability.

Retrofitting a course
######################################

Some effective course content might be severely altered or changed by teachers. If this needs the courses to be
updated back to Courseware Catalog, you can use the Retrofit deployment to push back the course from a Training Center
to a Factory, and initiate the life cycle again....

Retrofitting the course will address a remote category in Factory choosen by global settings.

Other Training Center operations
##########################################

On Training Center nodes, the block will handle a simple Open/Close workflow on the course,
moving to adequate categories and showing/hiding the course. The students will also be shifted
to an disabledstudent role so they are not allowed to change material inside the course, while
in some conditions still being allowed to view content.

Version information

Version build number
2012112900
Version release name
1.9.0 (Build 2012112900)
Can be updated to
2.2.0 (Build 2012112900) (2012112902)
Maturity
Release candidate
MD5 Sum
66b0bf10f6122907f3b332dd515738d0
Supported software
Moodle 1.9, PHP 5.2
  • Latest release for Moodle 1.9

Version control information

Version control system (VCS)
GIT
VCS repository URL
VCS branch
MOODLE_19_STABLE

Default installation instructions for plugins of the type Blocks

  1. Make sure you have all the required versions.
  2. Download and unpack the block folder.
  3. Place the folder (eg "myblock") in the "blocks" subdirectory.
  4. Visit http://yoursite.com/admin to complete the installation
  5. Turn editing on in any home or course page.
  6. Add the block to the page
  7. Visit the config link in the block for more options.