Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
linenumberstrue
@Define
public void logger( ActionDefinitionBuilder action )
{
    action
        .id( "logger" )
        .name( "actions.logger.name" )
        .description( "actions.logger.desc" )
        .category( Categories.DEBUG )
        .destination( ActionDestination.form() )
        .icon( SilkIconPack.APPLICATION_OSX_TERMINAL )
        .parameter()
            .id( "msg" )
            .name( "actions.logger.param.msg.name" )
            .description( "actions.logger.param.msg.desc" )
            .type( Types.STRING )
            .create()
        .parameter()
            .id( "error" )
            .name( "actions.logger.param.level.name" )
            .description( "actions.logger.param.level.name" )
            .type( Types.BOOLEAN )
            .create();
}

Akcja musi być zdefiniowana po stronie serwera. W tym celu należy utworzyć klasę i oznaczyć ją adnotacją 

Javadoc
displayValue@Action
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.workflow.form.action.annotation.Action
. Adnotacja ta sprawia, że system będzie szukał definicji akcji w tej klasie. Dodatkowo należy dodać adnotację 
Javadoc
displayValue@ActionScript
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.workflow.form.action.annotation.ActionScript
 i jako jej wartość podać relatywną ścieżkę do skryptu z implementacją akcji. W tak przygotowanej klasie należy teraz dodać definicję akcji. W tym celu trzeba dodać metodę i oznaczyć ją adnotacją 
Javadoc
displayValue@DefineAction
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.workflow.form.action.annotation.DefineAction
. Metoda musi przyjmować jeden parametr typu 
Javadoc
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.workflow.form.action.ActionDefinitionBuilder
. W implementacji metody należy za pomocą przekazanego builder'a zdefiniować wszystkie własności akcji.

Elementy docelowe (destination)

...

Zdefiniowana na serwerze akcja formularza musi zostać zarejestrowana i zaimplementowana po stronie przeglądarki. Rejestrację umożliwia klasa 

Jsdoc
propertyjsdoc.plusworkflow
classNamePW.form.action.Actions
 za pomocą metody 
Jsdoc
displayValuecreate
propertyjsdoc.plusworkflow
classNamePW.form.action.Actions.html#method_create
. Pierwszym parametrem metody jest id akcji (id musi odpowiadać tej akcji, która została zdefiniowana na serwerze), drugim parametrem jest obiekt konfiguracyjny akcji.

 

Code Block
languagejs
linenumberstrue
var variableService = ServiceFactory.getVariableService(),
	messageService = ServiceFactory.getMessageService(),
	Action = {
		t: PW.I18N.createT('com.suncode-actions-plugin')
	};

PW.FormActions.create('hiding-variables-action', {
    init: function(){
    	var me = this,
    		variables = me.get("variables");
		
    	me.variables = [];
		jQuery.each(variables, function(index, variable){
			me.variables.push(variable.getId());
		});
    },
    
    enable: function(){
    	this.hideVariables();
    	this.showMessage();
    },
    
    disable: function(){
    	this.showVariables();
    },
    
    hideVariables: function() {
    	this.setVariablesVisibility(false);
    },
    
    showMessage: function() {
    	var message = Action.t('action.hiding.variables.success', this.variables);
    	messageService.showSuccess(message);
    },
    
    showVariables: function() {
    	this.setVariablesVisibility(true);
    },
    
    setVariablesVisibility: function(visible) {
		if(visible) {
			variableService.show(this.variables);
		}
		else {
			variableService.hide(this.variables);
		}
    }
    
});

...